2013-06-26 21 views
2

我的C代碼中有一些變量用__attribute__((section(".data.mystuff")))聲明。我想定義兩個符號,mystuff_startmystuff_size,它們具有該部分的位置和大小。它看起來像ldLOADADDRSIZEOF將做我想要的,但我不想編寫整個鏈接器腳本。我不知道如何使用INSERT AFTER做我想要的。我如何讓ld添加符號指向一個節?

回答

6

最簡單的做法是將它們放入具有有效C標識符的部分中,因爲它的名稱。例如,使用:

__attribute__((section("mystuff"))) 

,你就會有AUTOMAGIC變量__start_mystuff__stop_mystuff,這將給你,你可以在你的源爲外部變量聲明段的開始和結束地址。

編輯:這完全是GCC特定的!

+0

大多數C編譯器都有類似的變量或函數。在Green Hills有__ghsbeginXXX,__ghsendXXX和__ghssizeXXX。 – Gerhard

+0

IAR有兩個函數返回指針__segment_begin(段) 和__segment_end(段) – Gerhard

+0

鏈接器不喜歡它,但: /opt/local/lib/gcc/avr/4.7.2/../。 ./../../avr/bin/ld:在[000000000000175a,0000000000001771]加載的部分cli_cmdtable重疊部分.data在[000000000000175a,000000000000193b]加載 – Derecho

相關問題