2 Stimmen

Kann ich den Objektnamen aus einer Symbolinformation in der Symboltabelle in einer ELF-Datei erhalten?

Ich habe erfolgreich eine aus mehreren Quelldateien kompilierte elf-Datei (ausführbare Datei) analysiert. Ich bin in der Lage, die Bindung (lokal, global, schwach), Typ (Objekt, Datei, Abschnitt, Funktion), Größe des Symbols und die Adresse des Symbols zusammen mit dem Symbolnamen (aus der Stringtabelle) zu erhalten.

Der Abschnitt, mit dem das Symbol verknüpft ist, ist mir ebenfalls bekannt.

Meine Frage ist, ob wir den genauen Namen der Objektdatei erhalten können ( * *.obj), die das Symbol aus der Symboltabelle enthält? Fehlen mir einige Informationen beim Parsen?

1voto

80x25 Punkte 661

Der Name der Objektdatei kann nicht direkt abgefragt werden, er geht beim Linken verloren. Je nach dem Erstellungsprozess, mit dem die ausführbare Datei erstellt wurde, können Sie jedoch aus den STT_FILE-Symbolen auf den Namen der Objektdatei schließen (z. B. enthält eine ausführbare Datei ein STT_FILE-Symbol mit dem Namen foo.c -> Sie könnten daraus schließen, dass die Objektdatei foo.o heißt).

Es scheint, dass Symbole in einer bestimmten Quelldatei dem Symbol STT_FILE mit einer Bindung von STB_LOCAL folgen.

Aus dem System V ABI-Standard:

STT_FILE -- Normalerweise gibt der Name des Symbols den Namen der mit der Objektdatei verbundenen Quelldatei an. Ein Dateisymbol hat eine STB_LOCAL-Bindung, sein Abschnittsindex ist SHN_ABS, und es steht vor den anderen STB_LOCAL-Symbolen für die Datei, wenn es vorhanden ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X