сегменты в исполняемой программе C

Я читал о разделах и сегментах. Кажется, вы могли бы перечислить сопоставление между разделами и сегментами, как показано ниже.

$ readelf -l test

Elf file type is EXEC (Executable file)
Entry point 0x8048330
There are 9 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x08048034 0x08048034 0x00120 0x00120 R E 0x4
  INTERP         0x000154 0x08048154 0x08048154 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
  LOAD           0x000000 0x08048000 0x08048000 0x0065c 0x0065c R E 0x1000
  LOAD           0x000f14 0x08049f14 0x08049f14 0x00104 0x00110 RW  0x1000
  DYNAMIC        0x000f28 0x08049f28 0x08049f28 0x000c8 0x000c8 RW  0x4
  NOTE           0x000168 0x08048168 0x08048168 0x00044 0x00044 R   0x4
  GNU_EH_FRAME   0x000564 0x08048564 0x08048564 0x00034 0x00034 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4
  GNU_RELRO      0x000f14 0x08049f14 0x08049f14 0x000ec 0x000ec R   0x1

 Section to Segment mapping:
  Segment Sections...
   00     
   01    .interp 
   02    .interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.plt.text.fini.rodata.eh_frame_hdr.eh_frame 
   03    .ctors.dtors.jcr.dynamic.got.got.plt.data.bss 
   04    .dynamic 
   05    .note.ABI-tag.note.gnu.build-id 
   06    .eh_frame_hdr 
   07     
   08    .ctors.dtors.jcr.dynamic.got

Мои вопросы,

  1. Я не мог понять, что означают заголовки программы? Как они связаны с сегментами?
  2. Сопоставление раздела с сегментом ясно. Но может ли кто-нибудь назвать его? Я вижу только цифры. Я определил сегмент кода (03 ), сегмент данных (02 )и стек (07 ).
10
задан John 9 August 2012 в 13:33
поделиться