виртуальные и физические адреса секций в файлах elf

Как objdump вычисляет физический адрес (LMA) секций elf? Насколько я могу судить, заголовки разделов elf содержат только виртуальный адрес (VMA) разделов [1].

Обычно VMA и LMA совпадают. Но для секций инициализированных данных (.data) VMA - это место в ОЗУ для переменных, а LMA - это место в ПЗУ, где расположены исходные значения. Crt0 отвечает за копирование начальных значений в ОЗУ перед вызовом main (). Например:

$ objdump -h my.elf
Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0003c3d0  00080000  00080000  00010000  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  5 .data         000008d0  40000000  000d08d4  00060000  2**3
                  CONTENTS, ALLOC, LOAD, DATA

-Tom

[1] http://www.ouah.org/RevEng/x430.htm

11
задан tomahawkins 2 June 2011 в 18:02
поделиться