If you want to go even smaller, get strip from binutils >= 2.41 and use `--strip-section-headers`. Using this option gets the basic exit down from 352 bytes to 140 bytes, and a hexdump shows that it is literally just the ELF header, program header(s), and text/data concatenated together - about as minimal as it gets without playing dirty header/code overlap tricks.