Bei erzeugen des Hex machst du eigene HEX für jedes Modul (.text, .bootloader, .eerom)

%_bootloader.hex: %.elf
$(OBJCOPY) -j .bootloader --change-section-lma .bootloader=0x1c00 -O ihex $< $@

Falls objcopy keine hex-Zahlen frisst, musst die 0x1c00 eben noch nach dezimal umrechnen.

Die Startadressen für die Lokatierungen findest du im linker description file.