16

我有一个 ELF 32 位 x86 文件,其中包含一个.eh_frame部分,尽管我尝试1删除它。

我想删除该.eh_frame部分,而不触及其他部分中的任何符号,包括未使用的符号。

strip似乎没有选项--remove-only,它总是最终修改其他部分。

如何在不修改文件中其他任何内容的情况下删除单个 ELF 部分?

1正如其他问题中所建议的那样,我尝试了 的几种变体gcc-3.4.3 -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables,但该.eh_frame部分始终存在。这可能是因为我必须使用旧的 GCC(3.4.3)......源文件本身没有任何特殊内容可能需要这些部分:int main() { return 0; }.

4

1 回答 1

29

strip,尽管有名称,但在这里不是正确的工具。

一个可能的解决方案是objcopy --remove-section .eh_frame a.out,其中a.out要修改的 ELF 文件的名称在哪里。

不幸的是,除非您知道 ,否则您objcopy最终可能会使用 搜索解决方案strip,但找不到任何解决方案。

于 2015-07-16T12:14:10.207 回答