# Intermediate code generation - Put symbol table in the reader monad and it to the stack or use the state monad for everything. - Add errors handling to the monad stack. # ELF generation - Don't ignore relocations where the symbol is not defined in the symbol table. Report an error about an undefined symbol. - elfObject always uses LSB. It should decide the byte order based on the ELF header. - Relocation section header relates to another section (e.g. .rel.text). The index of that section should be passed together with collected relocations. - symstrtab creates 3 section headers and does some math to calculate the offsets and names. Introducing the state monad can help to get rid of magic numbers. - The final reutrn value of the state monad should be the Elf header.