>>107575183
out of interest, I tried to perform a similar set of optimisations on the Rust source code, and got to around 768 bytes (so 56 bytes off the C one without linker script):
rustc -C opt-level=z -C debuginfo=0 -C panic=abort \
-C strip=symbols -C lto=yes \
-C relocation-model=static \
-C force-unwind-tables=no \
-C default-linker-libraries=off -C linker="ld.lld" \
-o nostd.out nostd.rs
[/cpde]