Как удалить определенный раздел 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, не найдя ни одного.

Другие вопросы по тегам