據我所知,這些都是.section
指令:如何以GNU GAS格式讀取ELF格式的.section文件?
「老」的指令,如果COFF格式使用了「只讀」。
如何製作ELF格式的.section只讀?沒有說明符?
據我所知,這些都是.section
指令:如何以GNU GAS格式讀取ELF格式的.section文件?
「老」的指令,如果COFF格式使用了「只讀」。
如何製作ELF格式的.section只讀?沒有說明符?
是的,空標誌使其成爲只讀(任何標誌沒有明確的w可寫使它只讀),因爲你可以驗證,例如使用objdump。 因此,.section foo
或.section bar, ""
都創建一個只讀部分。不過,您可能想要使其可分配,如.section baz, "a"
。這似乎也自動打開@progbits
(在objdump中標記爲LOAD
)以實際將文件中的數據讀入內存。您也可以手動指定以保證安全。有關更多詳細信息,請參閱GAS documentation。
編輯:看看GNU AS的信息,我在下面寫了一些答案。我很確定,就像在我的鏈接器腳本示例中一樣,將「w」留出將注意此部分是不可寫的。
對不起,如果這完全不是你問的。聽起來很對,所以我刺了一刀!
所以,如果你在談論鏈接器,那麼我認爲你所尋找的是鏈接器腳本的「內存」區域。
例如:
MEMORY
{
flash (rx) : org = 0x00000000 , len = 0x00080000
sram (rwx) : org = 0x40000000 , len = 0x00010000
}
,我離開了「W」我的閃存段的事實意味着,它是隻讀的。然後,在部分說明書中稍後使用:
SECTIONS
{
/* .text section (executable code) */
.text :
{
blah blah blah
} > flash
_etext = . ;
PROVIDE (etext = .);
/* .data section (read/write initialized variables) */
.data : AT (_etext)
{
blah blah blah
} > sram
}
我指定,其中每個部分被存儲在存儲器,與所述>閃光燈或> SRAM的部分規格來描繪,如果它是在只讀存儲器或不(和「AT(_etext)」是指定它以只讀方式啓動並在稍後被複制)。
我知道你特意問起彙編程序,但這聽起來像我以爲你在問什麼。
希望它有幫助!
爲什麼不試試並用`readelf -S` :-)反編譯? – 2015-10-08 10:53:39