`.rodata.str1.8` 部分在 elf 文件中是什么意思
what does `.rodata.str1.8` section mean in elf file
我知道 .rodata
部分在 ELF 文件中存储常量数据。但是,当我转储内核模块的 ELF 时,我注意到有两个额外的部分名为 rodata.str1.8
和 rodata.str1.1
。这两个部分似乎也存储常量变量和字符串。但是这三者到底有什么区别呢rodata
?
看起来 .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)
我知道 .rodata
部分在 ELF 文件中存储常量数据。但是,当我转储内核模块的 ELF 时,我注意到有两个额外的部分名为 rodata.str1.8
和 rodata.str1.1
。这两个部分似乎也存储常量变量和字符串。但是这三者到底有什么区别呢rodata
?
看起来 .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)