the raspberry pi's firmware loads a flat binary into memory. it doesn't understand ELF images or anything; it just starts executing from the beginning. the osdev wiki tells you to use GNU linker scripts, but as I am not using binutils, I'm going to use the advanced linker called "cat."

I'm going to have a tiny loader that is compiled as a flat binary. an ELF image of the kernel will be concatenated to the end of it. the loader will peek into the ELF header, hollow out .bss, and jump into the entry point.

if I understand how ELF images work correctly, this should work.