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
:-)进行反编译?