合并精灵部分

Merge elf sections

我有一个包含以下部分的 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

我正在使用以这个小精灵为输入的工具,但最多只能处理 16 个部分。如您所见,其中一些部分是相邻的。

有没有办法在 link 时或在使用其他工具之前合并这些部分?

I'm using a tool that take this elf as input, but can only work with a maximum of 16 sections. https://github.com/espressif/esptool

由于该工具是开源的,修复它会容易得多,然后尝试绕过这个限制。

合并具有相同标志且连续的部分并不难,但如果有重定位引用部分 start/end.[=11=,可能 破坏代码]

如果没有这样的重定位,您应该首先查看为什么您拥有所有这些部分。