据我所知,这些都是.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