История изменений
Исправление
pavlick,
(текущая версия)
:
.rodata and .rodata1
These sections hold read-only data
Полезно посмотреть на elf через readelf, это
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040
0x0000000000000268 0x0000000000000268 R 0x8
INTERP 0x00000000000002a8 0x00000000000002a8 0x00000000000002a8
0x000000000000001c 0x000000000000001c R 0x1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000000007e0 0x00000000000007e0 R 0x1000
LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
0x0000000000000325 0x0000000000000325 R E 0x1000
LOAD 0x0000000000002000 0x0000000000002000 0x0000000000002000
0x0000000000000180 0x0000000000000180 R 0x1000
...
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt
03 .init .plt .text .fini
04 .rodata .eh_frame_hdr .eh_frame
...
т.е. как сегменты мепятся на процесс. Нет в них ничего мистического, разница лишь в флагах (RW…) + некторые Program Headers будут размещаться рандомно (ASLR). В общем-то tosol это всё говорил, но так наглядно и можно пощупать.
ЗЫ: в рантайме нет сегментов, остаются лишь Program Headers.
Исходная версия
pavlick,
:
.rodata and .rodata1
These sections hold read-only data
Полезно посмотреть на elf через readelf, это
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040
0x0000000000000268 0x0000000000000268 R 0x8
INTERP 0x00000000000002a8 0x00000000000002a8 0x00000000000002a8
0x000000000000001c 0x000000000000001c R 0x1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000000007e0 0x00000000000007e0 R 0x1000
LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
0x0000000000000325 0x0000000000000325 R E 0x1000
LOAD 0x0000000000002000 0x0000000000002000 0x0000000000002000
0x0000000000000180 0x0000000000000180 R 0x1000
...
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt
03 .init .plt .text .fini
04 .rodata .eh_frame_hdr .eh_frame
...
т.е. как сегменты мепятся на процесс. Нет в них ничего мистического, разница лишь в флагах (RW…) + некторые Program Headers будут размещаться рандомно (ASLR). В общем-то tosol это всё говорил, но так наглядно и можно пощупать.