0
在readelf --segments为一个共享库(Linux的x86_64的)输出,前几个节目标题有:有没有办法将.rodata段映射到不同的程序头文件中?
Segment Sections...
00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
01 .init_array .fini_array .jcr .data.rel.ro .dynamic .got .got.plt .data .bss
02 .dynamic
我使用的:
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000984 0x0000000000000984 R E 200000
LOAD 0x0000000000000dc8 0x0000000000200dc8 0x0000000000200dc8
0x0000000000000280 0x0000000000000288 RW 200000
DYNAMIC 0x0000000000000de8 0x0000000000200de8 0x0000000000200de8
0x00000000000001d0 0x00000000000001d0 RW 8
这些以下各部分映射GNU链接器(binutils的ld.bfd),并想知道魔法咒语做以下任一操作:
- 创建一个额外的(R模式)LOAD程序头以保存 .rodata部分,以便我可以将.data,.bss和.rodata全部相互靠近(而默认链接布局会将我的.rodata 〜0x200000字节远离我的.data)
- 在RW (第二个)加载段中使用.data和.bss标记.rodata节内容。