Maarten Brock - 2023-09-17

To me it looks like objcopy is doing it wrong reading both files.
* Readelf tells the code starts at 0x8000 although it seems wrong to me that SSEG has type PROGBITS.
* The hexfile also states it starts at 0x8000:
:04 8000 00 82008007 73 // 04 bytes at 8000 type 00 being 82008007 checksum 73

Objcopy moved the elf contents to 0x7FFF.
Objcopy also ignored the non-filled-in places below 0x8000, but that is probably because you gave it no --gap-fill value.