4——man elf的翻译——所有Sections说明

8 篇文章 0 订阅

    各种各样的sections保存了程序和控制信息:
    
    .bss      此节保存的是contributes to the program's memory image的未初始化的数据。当然,程序运行起来之后,
                系统会把这些数据初始化为零。此节的类型是SHT_NOBITS。参数类型是SHF_ALLOC和SHF_WRITE。
            
    .comment
                此节保存的是版本控制信息。类型是SHT_PROGBITS。没有参数类型。
            
    .ctors   保存的是C++初始化的构造函数指针。(C语言是世界上最好的语言!)类型是SHT_PROGBITS。参数类型是                              SHF_ALLOC和SHF_WRITE。
            
    .data    此节保存的是contributes to the program's memory image的初始化的数据。(和.bss的区别是是否初始化)
                类型是SHT_PROGBITS。参数类型是SHF_ALLOC和SHF_WRITE。
            
    .data1  和.data完全一样。
    
    .debug 此节保存的是symbolic debugging的信息。the contents没有详细说明。类型是SHT_PROGBITS。没有参数类型。
    
    .dtors   保存的是C++初始化的析构函数指针。类型是SHT_PROGBITS。参数类型是SHF_ALLOC和SHF_WRITE。
    
    .dynamic
                保存的是动态链接的信息。SHT_ALLOC置位。无论SHF_WRITE是否置位。此节都是SHT_DYNAMIC类型。看上面的sttributes。
            
    .dynstr    此节保存的是动态链接所需要的字符串,大部分时候这些字符串是symbol table entries的名字。类型是
                   SHT_STRTAB。参数类型是SHF_ALLOC。
            
    .dynsym    保存的是动态链接的符号表。类型是SHT_DYNSYM。参数类型是SHF_ALLOC。
    
    .fini    保存的是process终止代码的执行指令。当一个系统正常退出的时候,系统把执行代码放到这个section中。类型
              是SHT_PROGBITS。参数类型是SHF_ALLOC和SHF_EXECINSTR。
            
    .gnu.version
            保存的是version symbol table,an array of ElfN_Half elements.类型是SHT_GNU_versym。参数类型是SHF_ALLOC。
            
    .gnu.version_d
            保存的是version symbol definitions,a table of ElfN_Verdef.类型是SHT_GNU_verdef。参数类型是SHF_ALLOC。
            
    .gnu.version_r
            保存的是version symbol needed elements, a table of ElfN_Verneed structures.类型是SHT_GNU_versym。参数
            类型是SHF_ALLOC。
            
    .got    保存的是global offset table。类型是SHT_PROGBITS。 The attributes are processor-specific.
    
    .hash    保存的是symbol hash table.类型是SHT_HASH。参数类型是SHF_ALLOC。
    
    .init    保存的是进程初始化代码的可执行指令。当程序的main函数开始执行之前,系统先执行此section的代码。此节的类型
              是SHT_PROGBITS。参数类型是SHF_ALLOC和SHF_EXECINSTR。
            
    .interp    保存的是程序解释器(program interpreter)的路径。如果文件有包含此节的可加载段,此节的参数包含                                        SHF_ALLOC位。否则,此位为0.此节的类型是SHT_PROGBITS。
            
    .line    为symbolic debugging保存行号信息,描述了程序源码和机器码之间的对应关系。内容是未指定的。类型是                                   SHT_PROGBITS。参数类型没有被使用。
            
    .note    保存了各种各样的注释。类型是SHT_NOTE。参数类型没有被使用。
    
    .note.ABI-tag
            此节是为了声明the expected runtime ABI of the ELF image.可能包含了执行系统的名字和它的运行时版本。类型是
            SHT_NOTE。唯一的参数类型是SHF_ALLOC。
            
    .note.gnu.build-id
            保存的是唯一的能够区分ELF镜像内容的ID。拥有相同build ID的不同文件应该拥有相同的executable content。更多细节
            请参阅ld的--build-id选项。此节的类型是SHT_NOTE。唯一的参数类型是SHF_ALLOC。
            
    .note.GNU-stack
            此节是用在目标文件中用来声明栈参数。类型是SHT_PROGBITS。唯一的参数类型是SHF_EXECINSTR。这向GNU链                接器表明该对象文件需要一个可执行堆栈。
            
    .note.openbsd.ident
            OpenBSD原生可执行程序通常包含这个部分来标识它们自己,这样内核就可以绕过任何一个在加载文件时进行兼容性                  ELF二进制仿真测试。
    
    .plt    保存的是程序链接表。类型是SHT_PROGBITS。参数要看处理器特性。
    
    .relNAME
            保存的是下面要描述的程序重定位信息。如果一个文件包含relocation的loadable segment,此节的参数信息就要包含
            SHF_ALLOC位。否则,此位关闭。按照惯例,“NAME” is supplied by the section to which the relocations apply.
            像可重定位的.text这样的节通常有.rel.text.此节的类型是SHT_REL。
            
    .relaNAME
            和.relNAME类似。.rel.text换成.rela.text SHT_REL换成SHT_RELA
            
    .rodata    只读数据,不可写的段。类型是SHT_PROGBITS。参数类型是SHF_ALLOC
    
    .rodata1
            同上。
            
    .shstrtab
            保存的是节名字。类型是SHT_STRTAB。没有参数类型。
            
    .strtab    保存的是字符串,通常是symbol table(符号表)的名字。如果文件拥有包含符号表的可加载段,此节的类型是                            SHF_ALLOC否则此位关闭。此节的类型是SHT_STRTAB。
            
    .symtab    保存的是符号表。如果文件拥有包含符号表的可加载段,此节的类型是SHF_ALLOC否则此位关闭。此节的类型是                         SHT_SYMTAB。
    
    .text    保存的是“text”,(也就是代码)或者是程序的可执行指令。此节的类型是SHT_PROGBITS。参数类型是SHF_ALLOC                 和SHF_EXECINSTR。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值