【问题标题】:what does `.rodata.str1.8` section mean in elf fileelf文件中的`.rodata.str1.8`部分是什么意思
【发布时间】:2018-04-29 15:45:11
【问题描述】:

我知道.rodata 部分将常量数据存储在 ELF 文件中。但是,当我转储内核模块的 ELF 时,我注意到有两个名为 rodata.str1.8rodata.str1.1 的额外部分。这两个部分似乎也存储常量变量和字符串。但是这三个rodata到底有什么区别呢?

【问题讨论】:

    标签: gcc elf


    【解决方案1】:

    看起来.rodata.str1.1 的字符串没有对齐要求,而.rodata.str1.8 必须是 8 字节对齐的。如果您查看带有 readelf 的 ELF 文件,这是可见的:

    Section Headers:
      [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
      [ 0]                   NULL            00000000 000000 000000 00      0   0  0
      [ 1] .text             PROGBITS        00000000 000034 000050 00  AX  0   0  4
      [ 2] .rela.text        RELA            00000000 000184 000030 0c   I  8   1  4
      [ 3] .data             PROGBITS        00000000 000084 000000 00  WA  0   0  1
      [ 4] .bss              NOBITS          00000000 000084 000000 00  WA  0   0  1
      [ 5] .rodata.str1.8    PROGBITS        00000000 000088 000010 01 AMS  0   0  8   <---
      [ 6] .comment          PROGBITS        00000000 000098 000019 01  MS  0   0  1
      [ 7] .shstrtab         STRTAB          00000000 0001b4 000049 00      0   0  1
      [ 8] .symtab           SYMTAB          00000000 0000b4 0000a0 10      9   7  4
      [ 9] .strtab           STRTAB          00000000 000154 00002f 00      0   0  1
    Key to Flags:
      W (write), A (alloc), X (execute), M (merge), S (strings)
      I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
      O (extra OS processing required) o (OS specific), p (processor specific)
    

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多