Assembly 如何使用GNU GAS使ELF格式的.section只读?
据我所知,以下是Assembly 如何使用GNU GAS使ELF格式的.section只读?,assembly,elf,gnu-assembler,Assembly,Elf,Gnu Assembler,据我所知,以下是部分指令: awxMSGT 如果使用COFF格式,“旧”指令为“只读” 如何使ELF格式的.section只读?根本没有说明符?编辑:看看GNU作为信息,我在下面写的内容可以回答它。我很确定,就像在我的链接器脚本示例中一样,如果不使用w,就会发现这一部分是不可写的 抱歉,如果这完全不是你要的。听起来不错,所以我试了一下 如果你说的是链接器,那么我想你要找的是链接器脚本的内存区域 例如: MEMORY { flash (rx) : org = 0x00000000 ,
部分
指令:
awxMSGT
如果使用COFF格式,“旧”指令为“只读”
如何使ELF格式的.section只读?根本没有说明符?编辑:看看GNU作为信息,我在下面写的内容可以回答它。我很确定,就像在我的链接器脚本示例中一样,如果不使用
w
,就会发现这一部分是不可写的
抱歉,如果这完全不是你要的。听起来不错,所以我试了一下 如果你说的是链接器,那么我想你要找的是链接器脚本的
内存区域
例如:
MEMORY
{
flash (rx) : org = 0x00000000 , len = 0x00080000
sram (rwx) : org = 0x40000000 , len = 0x00010000
}
事实上,我将w
从我的flash段中删除意味着它是只读的。然后在后面的规范部分中,我使用:
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
}
我使用>flash
或>sram
在节规范中指定每个节存储在内存中的位置,以描述它是否在只读内存中(并且AT(_etext)
指定它以只读方式启动,稍后复制)
我知道你是专门问汇编程序的,但这听起来像是我认为你在问的
希望有帮助 是的,空标志使其为只读(任何没有用于writeable的显式w的标志使其为只读),例如,您可以使用objdump进行验证。
因此,.section foo
或.section bar,“
都会创建只读节。不过,您可能希望使其可分配,因此类似于.section baz,“a”
。这似乎也会自动打开@progbits
(在objdump中标记为LOAD
)以实际将数据从文件读取到内存中。您还可以手动将其指定为安全的。有关更多详细信息,请参阅。为什么不试用它并使用readelf-S
:-)进行反编译?