<feed xmlns='http://www.w3.org/2005/Atom'>
<title>grovel/tools, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://euandre.org/git/grovel/atom?h=main</id>
<link rel='self' href='http://euandre.org/git/grovel/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/'/>
<updated>2024-01-05T08:43:22Z</updated>
<entry>
<title>Fix the build system.</title>
<updated>2024-01-05T08:43:22Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2024-01-02T20:28:59Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=2e96fc06f325110af8c7177c0c60694eed5fd245'/>
<id>urn:sha1:2e96fc06f325110af8c7177c0c60694eed5fd245</id>
<content type='text'>
The improvements are:

- use most of the default "Makefile" for standard packaging;
- also use the default ".gitignore" with for the derived assets;
- don't impose so many $CFLAGS on the user.  GCC still needs to be given
  the `-ffreestanding` flag explicitly for us to get a good binary;
- stop using ad-hoc tools/* scripts, and avoid the code-generation
  anti-pattern overall on the build.  Some of the generated files were
  checked-in, and some were removed;
- remove empty files;
- use POSIX make(1) over gmake;
- add fuzz targets;
- partial "install" and "uninstall" targets;
- complete "clean" target.

The shortcomings are:
- only working on x86_64.  More platforms coming soon;
- code is still messy: way too many warnings, GNU/BSD specific
  extensions, inline assembly, and all kinds of unportable code;
- still only works with GCC and GCC-like compilers, and completly fails
  with tcc(1) and cproc(1);
- the `deps.mk` file is being maintained manually.  As I work on the
  source files I'll finish automating its generation with `mkdeps.sh`;
- still seems to be coupled with Linux;
- still is missing tests setup;
- still uses `#include &lt;$NAME.h&gt;` instead of the correct
  `#include "$NAME.h"` form.

The generated libgrovel.a did match the previous lib/libc.a 100%.
</content>
</entry>
<entry>
<title>tools/: Remove unused files</title>
<updated>2024-01-02T20:27:38Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2024-01-02T20:27:38Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=46ab8cfff358fbccbdeee3a6f211f8dc74e73aac'/>
<id>urn:sha1:46ab8cfff358fbccbdeee3a6f211f8dc74e73aac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix incorrect escaping in add-cfi.*.awk scripts</title>
<updated>2020-01-20T20:57:29Z</updated>
<author>
<name>Will Dietz</name>
<email>w@wdtz.org</email>
</author>
<published>2020-01-08T19:20:44Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=a2e71304f358c5dbaf44e0b4c6fd343e8cd236e2'/>
<id>urn:sha1:a2e71304f358c5dbaf44e0b4c6fd343e8cd236e2</id>
<content type='text'>
gawk 5 complains.
</content>
</entry>
<entry>
<title>fix musl-gcc wrapper to be compatible with default-pie gcc toolchains</title>
<updated>2018-08-02T23:15:48Z</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2018-08-02T23:15:48Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=7dad9c212587267818de919dd9c5886f18f99779'/>
<id>urn:sha1:7dad9c212587267818de919dd9c5886f18f99779</id>
<content type='text'>
the specfile for the wrapper was written assuming output is pie only
if -pie appears on the command line. recent (and older patched)
versions of gcc can be configured to produce pie output by default,
adn when used with such a toolchain, the wrapper linked the wrong
startfiles (crt*) containing pic-incompatible code.

rather than trying to figure out gcc's default, simply always use the
pic-compatible start files.
</content>
</entry>
<entry>
<title>add CFI generation script for x86_64</title>
<updated>2015-10-13T22:09:46Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-13T11:28:52Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=4e6b8eee7755a5aa7f866d0d0cd290653fd87a31'/>
<id>urn:sha1:4e6b8eee7755a5aa7f866d0d0cd290653fd87a31</id>
<content type='text'>
</content>
</entry>
<entry>
<title>recognize partial register operands in i386 CFI generation</title>
<updated>2015-10-13T22:02:36Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-13T11:28:51Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=1b0c9cd099e80a7557eb4ae36efb1897f7202a02'/>
<id>urn:sha1:1b0c9cd099e80a7557eb4ae36efb1897f7202a02</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix misinterpretation of indexed memory operand in i386 CFI generation</title>
<updated>2015-10-13T21:58:43Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-13T21:58:43Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=8cfdfa9c8fd84d4090bba54eb616a2c9361a076f'/>
<id>urn:sha1:8cfdfa9c8fd84d4090bba54eb616a2c9361a076f</id>
<content type='text'>
a register used as an index in the memory destination of a mov
instruction was wrongly interpreted as the destination of the mov.
</content>
</entry>
<entry>
<title>fix misinterpretation of operand order in i386 CFI generation</title>
<updated>2015-10-13T21:21:05Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-13T11:28:50Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=fef9c801feeccbb40623f0c2a6e4f2b19f58a34b'/>
<id>urn:sha1:fef9c801feeccbb40623f0c2a6e4f2b19f58a34b</id>
<content type='text'>
binary ops like ADD, AND, etc. modify the 2nd operand, not 1st.
</content>
</entry>
<entry>
<title>fix instruction matching errors in i386 CFI generation</title>
<updated>2015-10-08T21:04:41Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-02T11:32:33Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=dc97951402b499023ce877dd2438bce0840b2c26'/>
<id>urn:sha1:dc97951402b499023ce877dd2438bce0840b2c26</id>
<content type='text'>
fdiv and fmul instructions were wrongly matched by the rules for
integer div and mul instructions, leading to incorrect conclusions
about register values being clobbered.
</content>
</entry>
<entry>
<title>factor common awk functions for CFI generation scripts into new file</title>
<updated>2015-10-08T21:03:10Z</updated>
<author>
<name>Alex Dowad</name>
<email>alexinbeijing@gmail.com</email>
</author>
<published>2015-10-02T11:32:32Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/grovel/commit/?id=0650a05947c9f67cedff693d2e1c2f61a8e6c0d3'/>
<id>urn:sha1:0650a05947c9f67cedff693d2e1c2f61a8e6c0d3</id>
<content type='text'>
There is a lot which could be common between i386 and x86_64, but none
of it will be useful for any other arch. These should be useful for
all archs, however.
</content>
</entry>
</feed>
