0
將二進制文件嵌入到帶有gcc的精靈圖像中時,是否有辦法改變自動生成的_binary_*_size
符號的地址?與_binary_*_start
和_binary_*_end
符號不同,_binary_*_size
符號似乎不遵循代碼的基地址。他們在一個bfd絕對部分(*ABS*
)。如何重新定位bfd尺寸符號?
例如:
$ arm-linux-gnueabihf-gcc -nostdlib -Wl,-Ttext=0x80000000,--format=binary,foo.bin,--format=default boot.S
$ arm-linux-gnueabihf-nm a.out | sort
00000010 A _binary_foo_bin_size
80000000 T _start
80008004 D _binary_foo_bin_start
80008014 D _binary_foo_bin_end
80008014 A __bss_start
80008014 A __bss_start__
80008014 A __bss_end__
80008014 A _bss_end__
80008014 A _edata
80008014 A _end
80008014 A __end__
我想_binary_foo_bin_size
是在0x80008***
而不是0x00000***
。 (最好不寫我自己的鏈接腳本或使用額外的objcopy命令。)
我需要擺脫_size符號,因爲當我在我的電路板上加載ELF時,調試器正試圖在地址0x00000010上寫入_size數據,這是引導ROM在我的主板上。 – Dominic
它是什麼調試器? –
另外我很驚訝有任何數據要寫。我想我會開始更直接地嘗試刪除符號。 –