C89cc.sh – standalone C89/ELF64 compiler in pure portable shell

54 pointsposted 2 days ago
by gaigalas

10 Comments

_ache_

32 minutes ago

I'm tempted to execute it, but it may as well be shellcode I couldn't tell.

kelsey98765431

2 hours ago

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

fuhsnn

38 minutes ago

Don't understand why you were downvoted. An untested C compiler is simply worthless.

gaigalas

2 days ago

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

angry_octet

2 hours ago

I can't think of a reason to use c89cc.sh, but I salute this effort nonetheless.

jey

an hour ago

It targets x86-64/ELF? I thought it would target `sh` to be portable?

dmitrygr

2 hours ago

Many parts of this are clearly autogenerated, but that in no way diminishes the sickening impressiveness of it!

userbinator

an hour ago

It would be far more interesting to look at what this was "compiled" from; it looks like the output of a state-machine generator.

phire

an hour ago

It does make it a little hard to understand how the parser/ast_builder works.

But the rest seems easy enough to understand.

fuhsnn

33 minutes ago

> It does make it a little hard to understand

Or much easier to backdoor...