如何在不剥离其他符号的情况下删除特定的 ELF 部分?
How to remove a specific ELF section, without stripping other symbols?
我有一个包含 .eh_frame
部分的 ELF 32 位 x86 文件,尽管我尝试1 删除它。
我想删除 .eh_frame
部分,而不触及其他部分中的任何符号,包括未使用的符号。
strip
好像没有选项--remove-only
,老是修改其他section.
如何在不修改文件中任何其他内容的情况下删除单个 ELF 部分?
1正如 other questions 中所建议的,我尝试了 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; }
.
strip
,尽管名称如此,但在此处并不是正确的工具。
一个可能的解决方案是objcopy --remove-section .eh_frame a.out
,其中a.out
是要修改的ELF文件的名称。
不幸的是,除非您了解 objcopy
,否则您可能最终会搜索 strip
的解决方案,但没有找到任何解决方案。
我有一个包含 .eh_frame
部分的 ELF 32 位 x86 文件,尽管我尝试1 删除它。
我想删除 .eh_frame
部分,而不触及其他部分中的任何符号,包括未使用的符号。
strip
好像没有选项--remove-only
,老是修改其他section.
如何在不修改文件中任何其他内容的情况下删除单个 ELF 部分?
1正如 other questions 中所建议的,我尝试了 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; }
.
strip
,尽管名称如此,但在此处并不是正确的工具。
一个可能的解决方案是objcopy --remove-section .eh_frame a.out
,其中a.out
是要修改的ELF文件的名称。
不幸的是,除非您了解 objcopy
,否则您可能最终会搜索 strip
的解决方案,但没有找到任何解决方案。