我想.symtab
用 gdb 调试器加载到内存中。
正常部分最多需要两个步骤(对于某些部分,例如.text
, .data
... ,可以跳过第 1 步,因为 ld 自动设置):
1 - 将 Alloc 标志(在特殊部分的情况下)设置为 ELF 中的部分。这可以以这种方式对正常部分进行。
arm-none-eabi-objcopy --set-section-flags .sectionName=alloc src.elf dst.elf
2 - 设置该部分的地址。对于正常部分AFAIK,这可以通过两种方式完成
A - 在 LD 脚本中指定段内存区域,例如文本段:
.text :
{
*(.text)
*(.text*)
} > FLASH
B - 再次使用 objcopy
arm-none-eabi-objcopy --change-section-address .sectioName=0x0ABCD src.elf dst.elf
因为.symtab
是由链接器自动生成的,所以我不能将其视为正常部分,因此上述步骤均无效。
有谁知道如何解决这个问题?
我已经成功地实现了一个解决方法来生成一个新的精灵来剥离所有不需要的部分,这很有效,但是你必须加载两个精灵,我正在寻找一个更清洁的解决方案。