53 points | by gaigalas 2 days ago
10 comments
I'm tempted to execute it, but it may as well be shellcode I couldn't tell.
Would be a lot better if it came with tests. Please do this justice and dont let it rot as a gist, make a real repo and add some docs and at least smoke tests or some kind. Thanks
Don't understand why you were downvoted. An untested C compiler is simply worthless.
Single standalone file, no external tools used, PATH='' (empty), portable (bash, dash, ksh, zsh), produces x86 ELF executables, has mini-libc builtin.
Usage:
printf 'int main(){puts("hello");return 0;}' | sh c89cc.sh > hello
chmod +x hello
./hello
I can't think of a reason to use c89cc.sh, but I salute this effort nonetheless.
It targets x86-64/ELF? I thought it would target `sh` to be portable?
Many parts of this are clearly autogenerated, but that in no way diminishes the sickening impressiveness of it!
It would be far more interesting to look at what this was "compiled" from; it looks like the output of a state-machine generator.
It does make it a little hard to understand how the parser/ast_builder works.
But the rest seems easy enough to understand.
> It does make it a little hard to understand
Or much easier to backdoor...
I'm tempted to execute it, but it may as well be shellcode I couldn't tell.
Would be a lot better if it came with tests. Please do this justice and dont let it rot as a gist, make a real repo and add some docs and at least smoke tests or some kind. Thanks
Don't understand why you were downvoted. An untested C compiler is simply worthless.
Single standalone file, no external tools used, PATH='' (empty), portable (bash, dash, ksh, zsh), produces x86 ELF executables, has mini-libc builtin.
Usage:
printf 'int main(){puts("hello");return 0;}' | sh c89cc.sh > hello
chmod +x hello
./hello
I can't think of a reason to use c89cc.sh, but I salute this effort nonetheless.
It targets x86-64/ELF? I thought it would target `sh` to be portable?
Many parts of this are clearly autogenerated, but that in no way diminishes the sickening impressiveness of it!
It would be far more interesting to look at what this was "compiled" from; it looks like the output of a state-machine generator.
It does make it a little hard to understand how the parser/ast_builder works.
But the rest seems easy enough to understand.
> It does make it a little hard to understand
Or much easier to backdoor...