README.md: remove redundant -Wno-..
emacs settings
factor out codegen (c6 -> c7)
basic elf32 skeleton (c7 -> c8)

This should be enough for pure alrithmetic operations. argv/argc is
not initialized properly, so no user input. libc is not linked, so no
fancy function calls.
elf32: tidy up
elf32: get argv/argc from linux kernel
elf32: hard code each section size to 4096 for easy layout
elf32: link to libc.so and libdl.so

No actual symbol resolution is done yet, not even dlsym. So hello.c
still does not work. Executing from linux is still broken somehow
(segfault). But starting using ld-linux.so.2 seems to work, e.g.

  /lib/ld-linux.so.2 ./test

Some notes: the glibc linker starts with _dl_start in elf/rtld.c, the
main function is dl_main.
elf32: fix segfault when executing from command line

Now the binary could be executed directly (i.e. no need to manually
run it from /lib/ld-linux.so.2 like previous patch)

The problem is elf_phdr part is not mapped in memory because it does
not belong to any PT_LOAD segment. This change makes the first PT_LOAD
segment cover elf header (the first 4k) then code (the next 4k).

It looks like linux kernel expects the first PT_LOAD to cover from the
beginning of an elf binary. See fs/binfmt_elf.c:load_elf_binary
(search load_addr) and fs/binfmt_elf.c:create_elf_tables (search
AT_PHDR)
elf32: resolve printf (and dlsym..)

    $ ./c4 -o hello.c >hello
    $ chmod 755 hello
    $ ./hello
    hello, world
elf32: resolve all symbols
add memcpy and write, bring back self-hosting
elf32: make sure .text is large enough for all code