Il faut linker avant de convertir en binaire, donc utiliser ld ou ne pas mettre -c
J'essaye :
arm-elf-gcc -nostdlib -fpic -Os test.c -o test.elf
arm-elf-objcopy -O binary test.elf test.bin
Mais j'ai un gros offset entre .text/.rodata et .data.
Et il persiste à créer une table d'offsets absolus dès qu'il y a quelque chose dans .data.
Pourtant il accède à cette table en relatif PC.
Sinon, pour le loader on peut supprimer -fpic, et imposer une adresse de base :
arm-elf-gcc -nostdlib -Ttext=0x00100000 -Os test.c -o test.elf
et fait en assembleur un bout de code (indépendant de la position lui) qui mappe l'adresse physique à laquelle le code a été chargé en 0x00100000.