This is a set of tiny Hello world executables for Linux.
All they do is
write(1, "Hello!\n", 7)
_exit(0)
but it's done in as little bytes as possible. This particular
implementation stores the string in ELF header padding and
squashes Ehdr against Phdr on little-endian targets.
For context and the origins of the size-reducing tricks, see
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
http://mainisusuallyafunction.blogspot.com/2015/01/151-byte-static-linux-binary-in-rust.html
http://hookrace.net/blog/nim-binary-size/
Unlike the x86-focused projects above, this one attempts
to be relatively portable. GNU binutils are used instead of nasm,
and it is expected to work well with cross-compiling toolchains.
For most configurations, run something like
make ARCH=arm CROSS=arm-linux-gnueabi-
or set both variables in Makefile.
To build x86_32 with a native x86_64 toolchain, set
AS = as --x32
LD = ld -melf32_x86_64
Run resulting executables with appropriate qemu:
qemu-arm ./hello_arm
Use -strace option to verify it's working properly.