Как удалить определенный раздел ELF, не удаляя другие символы?
У меня есть 32-битный файл x86 ELF, который содержит .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; }
,
1 ответ
strip
Несмотря на название, это не правильный инструмент здесь.
Возможное решение objcopy --remove-section .eh_frame a.out
, где a.out
Имя файла ELF, который нужно изменить.
К сожалению, если вы не знаете о objcopy
вы можете в конечном итоге искать решения с strip
, не найдя ни одного.