0
gcc로 elf 이미지에 바이너리 파일을 삽입 할 때 자동 생성 된 _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__
나는 0x80008***
대신 0x00000***
에있을 _binary_foo_bin_size
을하고 싶습니다. (내 자신의 링커 스크립트를 작성하지 않거나 여분의 objcopy 명령을 사용하지 않는 것이 좋습니다.)
내 보드에 ELF를로드 할 때 디버거가 내 보드의 부트 ROM에있는 0x00000010 주소에 _size 데이터를 쓰려고하기 때문에 _size 심볼을 제거해야합니다. – Dominic
어떤 디버거입니까? –
또한 쓸만한 데이터가 있다는 것에 놀랐습니다. 나는 심볼을 제거하려고 더 직접적으로 시작할 것이라고 생각한다. –