2015-07-16 14 views
9

Ich habe eine ELF 32-Bit-x86-Datei, die eine .eh_frame Abschnitt enthält, trotz meiner Versuche , um es zu entfernen.Wie entferne ich eine bestimmte ELF-Sektion, ohne andere Symbole zu entfernen?

Ich möchte den .eh_frame Abschnitt entfernen, ohne Symbole in anderen Abschnitten zu berühren, einschließlich unbenutzter.

strip scheint keine Option zu haben --remove-only, und es endet immer ändern andere Abschnitte.

Wie kann ich eine einzelne ELF-Sektion entfernen, ohne etwas anderes in der Datei zu ändern?

Wie in other questions vorgeschlagen, versuchte ich mehrere Varianten von gcc-3.4.3 -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables, aber der .eh_frame Abschnitt ist immer da. Das liegt wahrscheinlich an der Tatsache, dass ich einen alten GCC (3.4.3) verwenden muss ... die Quelldatei selbst enthält nichts Besonderes, das diese Abschnitte benötigen könnte: int main() { return 0; }.

Antwort

16

strip, trotz des Namens, ist hier nicht das richtige Werkzeug. Eine mögliche Lösung ist objcopy --remove-section .eh_frame a.out, wobei a.out der Name der zu ändernden ELF-Datei ist.

Leider, wenn Sie nicht über objcopy wissen, können Sie am Ende suchen nach Lösungen mit strip, ohne zu finden.