Мне нужно идентифицировать все секции ELF с флагом LOAD
в моем скрипте python; используя objdump, я получаюpyelftools: извлекать флаги секций, например objdump, для двоичного файла elf32-littlearm
$ arm-none-eabi-objdump -h test.elf
test.elf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00014480 00000000 00000000 00008000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .relocate 00000090 20000000 00014480 00020000 2**2
CONTENTS, ALLOC, LOAD, DATA
2 .bss 000016ec 20000090 00014510 00020090 2**4
ALLOC
3 .stack 00002004 2000177c 00014510 0002177c 2**0
ALLOC
4 TOUCH_SAFETY_DATA_LOCATION 00000704 20004000 00014510 00024000 2**3
CONTENTS, ALLOC, LOAD, DATA
5 FMEA_SAFETY_DATA_LOCATION 00000070 20007c00 00014c14 00027c00 2**2
CONTENTS, ALLOC, LOAD, DATA
... (some 10 or so more sections)
Однако с модулем elftools Python3, из следующих источников:
from elftools.elf.elffile import ELFFile
for section in ELFFile(open("test.elf", "rb")).iter_sections():
print("{0:30s} 0b{1:08b}".format(section.name, section.header.sh_flags))
Я получаю совершенно разные флаги:
0b00000000
.text 0b00000110
.relocate 0b00000011
.bss 0b00000011
.stack 0b00000011
TOUCH_SAFETY_DATA_LOCATION 0b00000011
FMEA_SAFETY_DATA_LOCATION 0b00000011
... (some 10 or so more sections)
из objdump источников (Я не смог найти какую-либо документацию по этой проблеме), флаг LOAD должен иметь значение 0x02 (0b00000010). Похоже, что флаги, о которых сообщают pyelftools, полностью независимы от тех, которые сообщаются objdump (предположительно, правильные). Что я делаю не так?
_ «Я не смог найти документацию по проблеме» _ - [вот что должен сказать спецификатор ELF] (http://www.sco.com/developers/gabi/2003-12-17 /ch4.sheader.html) (и FWIW бит бит ARM [здесь] (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044f/index.html), если вы это необходимо) - определение 'sh_flags' похоже на ваши результаты AFAICS. Обратите внимание: objdump обрабатывает несколько форматов объектов, поэтому некоторые из его «флагов» могут быть неявными, например. типы секций в конкретном случае ELF. – Notlikethat