2
我的C代碼中有一些變量用__attribute__((section(".data.mystuff")))
聲明。我想定義兩個符號,mystuff_start
和mystuff_size
,它們具有該部分的位置和大小。它看起來像ld
的LOADADDR
和SIZEOF
將做我想要的,但我不想編寫整個鏈接器腳本。我不知道如何使用INSERT AFTER
做我想要的。我如何讓ld添加符號指向一個節?
我的C代碼中有一些變量用__attribute__((section(".data.mystuff")))
聲明。我想定義兩個符號,mystuff_start
和mystuff_size
,它們具有該部分的位置和大小。它看起來像ld
的LOADADDR
和SIZEOF
將做我想要的,但我不想編寫整個鏈接器腳本。我不知道如何使用INSERT AFTER
做我想要的。我如何讓ld添加符號指向一個節?
最簡單的做法是將它們放入具有有效C標識符的部分中,因爲它的名稱。例如,使用:
__attribute__((section("mystuff")))
,你就會有AUTOMAGIC變量__start_mystuff
和__stop_mystuff
,這將給你,你可以在你的源爲外部變量聲明段的開始和結束地址。
編輯:這完全是GCC特定的!
大多數C編譯器都有類似的變量或函數。在Green Hills有__ghsbeginXXX,__ghsendXXX和__ghssizeXXX。 – Gerhard
IAR有兩個函數返回指針__segment_begin(段) 和__segment_end(段) – Gerhard
鏈接器不喜歡它,但: /opt/local/lib/gcc/avr/4.7.2/../。 ./../../avr/bin/ld:在[000000000000175a,0000000000001771]加載的部分cli_cmdtable重疊部分.data在[000000000000175a,000000000000193b]加載 – Derecho