Booting the Raspberry Pi
leiradel.github.io
leiradel.github.io
the only way for this would not be required, is the code expects to run from RAM, and the linker script specifically placed the .data after the code
The resulting binary is loaded as a whole to RAM, there are no intermediary representation of the executable like a PE or ELF, and there are no relocations; everything is already resolved during link time.