Сопоставить буквенный адрес с разделом - PullRequest
1 голос
/ 24 января 2012

Учитывая буквальный адрес, как я могу определить, к какому разделу относится этот адрес? Вот пример. Из разборки программы, сделанной с помощью 'objdump', я получаю буквальный адрес 0x8048520:

80483ea: c7 45 f4 20 85 04 08 movl $ 0x8048520, -0xc (% ebp) ...

На моей платформе (Linux 2.6.39, Gentoo) я могу получить список разделов, просто запустив 'less' в файле ELF и увидев, что этот адрес находится в разделе .rodata:

[15] .rodata           PROGBITS        08048518 000518 000016 00   A  0   0  4
...

Однако я ищу удобный способ сделать то же самое, не требующее визуального сканирования и сравнения адресов. Предложения?

1 Ответ

4 голосов
/ 06 апреля 2012

Используя ваш примерный адрес 0x8048520:

objdump -s --start-address=0x8048520 --stop-address=0x8048521 elf_file | grep section | awk '{ print $4 }' | cut -d':' -f 1

В вашем примере вывод этой команды будет:

.rodata
...