#elf #objcopy
Вопрос:
У меня есть файл elf с этими разделами:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .rtc.text PROGBITS 400c0000 14e3c92 000000 00 W 0 0 1
[ 2] .iram0.vectors PROGBITS 40080000 000074 000400 00 AX 0 0 4
[ 3] devices PROGBITS 3ffb0000 13b2780 000090 00 WA 0 0 4
[ 4] _k_mem_slab_area PROGBITS 3ffb0090 13b2810 000038 00 WA 0 0 4
[ 5] _k_sem_area PROGBITS 3ffb00c8 13b2848 000048 00 WA 0 0 4
[ 6] _k_mutex_area PROGBITS 3ffb0110 13b2890 000014 00 WA 0 0 4
[ 7] _net_buf_pool_are PROGBITS 3ffb0124 13b28a4 000050 00 WA 0 0 4
[ 8] net_if PROGBITS 3ffb0180 13b2900 0000a0 00 WA 0 0 32
[ 9] net_if_dev PROGBITS 3ffb0220 13b29a0 000020 00 WA 0 0 4
[10] initlevel PROGBITS 40080400 000474 000080 00 A 0 0 4
[11] sw_isr_table PROGBITS 40080480 0004f4 000100 00 WA 0 0 4
[12] shell_sections PROGBITS 40080580 0005f4 00002c 00 A 0 0 4
[13] shell_root_cmds_s PROGBITS 400805ac 000620 000040 00 A 0 0 4
[14] text PROGBITS 400805ec 000660 000115 00 AX 0 0 4
[15] .dram0.data PROGBITS 3ffb0240 13b29c0 000128 00 WA 0 0 4
[16] rodata PROGBITS 3ffb0368 13b2ae8 0034d0 00 A 0 0 4
[17] bss NOBITS 3ffb3838 13b5fb8 001900 00 WA 0 0 8
[18] app_noinit PROGBITS 3ffb5138 14e3c92 000000 00 W 0 0 1
[19] noinit NOBITS 3ffb5140 13b5fb8 005e10 00 WA 0 0 16
[20] .intList PROGBITS 3ebfe010 000790 000048 00 WA 0 0 4
[21] .flash.text PROGBITS 400d0018 14d2798 0114fa 00 AX 0 0 4
Я использую инструмент, который использует этот elf в качестве входных данных, но может работать только с максимум 16 разделами. Как вы можете видеть, некоторые из этих разделов находятся рядом.
Есть ли способ объединить эти разделы либо во время ссылки, либо непосредственно перед использованием другого инструмента?
Комментарии:
1. Можете ли вы объяснить, почему вы хотите их объединить? Можно написать скрипт компоновщика.
2. @P__J__ Я использую инструмент, который не может обрабатывать более 16 разделов. Они могли бы использовать сегменты, но на данный момент они используют разделы
3. Какой инструмент? Что делает этот инструмент?
4. эсптул . Это преобразует файл elf в файл bin для esp32
Ответ №1:
Я использую инструмент, который использует этот elf в качестве входных данных, но может работать только с максимум 16 разделами. https://github.com/espressif/esptool
Поскольку инструмент с открытым исходным кодом, было бы намного проще исправить его, а затем попытаться обойти это ограничение.
Объединение разделов, которые имеют одинаковые флаги и являются последовательными, несложно, но может нарушить код, если есть перемещения, ссылающиеся на начало/конец раздела.
Если таких перемещений нет, вам следует посмотреть, почему у вас есть все эти разделы в первую очередь.
Комментарии:
1. Я постараюсь это исправить. Но я пытался найти быстрый обходной путь, потому что это просто проблема, которая не имеет никакого отношения к тому, что я пытаюсь сделать