2015-07-16 25 views
9

Mam 32-bitowy plik EL86 ELF, który zawiera sekcję .eh_frame, pomimo moich prób, aby usunąć go z domeny .Jak usunąć konkretną sekcję ELF, bez usuwania innych symboli?

Chciałbym usunąć sekcję .eh_frame, nie dotykając żadnych symboli w innych sekcjach, w tym nieużywanych.

strip wydaje się nie mieć opcji --remove-only i zawsze kończy się modyfikacją innych sekcji.

Jak mogę usunąć pojedynczą sekcję ELF bez modyfikowania czegokolwiek w pliku?

Jak sugerowano w other questions, próbowałem kilka wariantów gcc-3.4.3 -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables, ale sekcja .eh_frame jest zawsze. Wynika to prawdopodobnie z faktu, że muszę używać starego GCC (3.4.3) ... sam plik źródłowy nie zawiera niczego specjalnego, co może wymagać tych sekcji: int main() { return 0; }.

Odpowiedz

16

strip, pomimo nazwy, nie jest właściwym narzędziem.

Możliwe rozwiązanie to objcopy --remove-section .eh_frame a.out, gdzie a.out to nazwa pliku ELF, który ma zostać zmodyfikowany.

Niestety, chyba że wiesz o objcopy, możesz skończyć szukając rozwiązań z strip, bez wyszukiwania żadnych.