Различия в дизассемблировании объекта и исполняемого файла

В основном я использовал objdump -D для разборки объектного файла и файла ELF. Основное различие, которое я вижу между ними, заключается в следующем.

Я вижу, что инструкции в объектном файле (отдельных сегментов) имеют адрес, начинающийся с 0. Следовательно, последовательные адреса смещены на определенное значение, вероятно, в зависимости от длины кода операции, соответствующего этой конкретной инструкции.

Disassembly of section .text:
00000000 <main>:
0:   8d 4c 24 04             lea    0x4(%esp),%ecx
4:   83 e4 f0                and    $0xfffffff0,%esp
7:   ff 71 fc                pushl  -0x4(%ecx)      
a:   55                      push   %ebp            

С другой стороны, для штрафа ELF я вижу 32-битное адресное пространство для инструкций. Также, если я печатаю адрес main в своей программе. Он эквивалентен адресу в моем разобранном ELF.

08048394 <main>:
8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
8048398:       83 e4 f0                and    $0xfffffff0,%esp
804839b:       ff 71 fc                pushl  -0x4(%ecx)
804839e:       55                      push   %ebp

Вот вопросы.

  • К чему на самом деле относятся адреса в файле ELF?
  • Как компоновщик их вычисляет?

person Vivek Maran    schedule 01.11.2012    source источник


Ответы (1)


Файл ELF содержит код, связанный вместе с предпочтительным адресом загрузки исполняемого файла (и вы можете изменить предпочтение с помощью параметров компоновщика). Адреса, которые вы видите, вычисляются objdump для этого адреса, который является частью формата ELF.

У объектного кода нет адреса загрузки (пока), потому что он не связан с загружаемым изображением. После того, как он будет сшит вместе с компоновщиком (вместе с остальной частью объектного кода и ссылками на общие объекты), окончательный вывод перемещает весь этот код в позицию относительно предпочтительного адреса загрузки (вроде ... загрузчик - это то, что на самом деле делает это, когда Изображение в формате ELF загружено на исполнение). Рекомендуемое дополнительное чтение (а там ТОННА ссылок )

person WhozCraig    schedule 01.11.2012