PIC (positionsunabhängiger Code)

8

Gibt es eine Möglichkeit zu überprüfen, ob eine Objektdatei (.o-Datei) PIC-fähig ist?

    
Raj 05.05.2011, 09:24
quelle

1 Antwort

7

Nicht sicher, wie tragbar das ist, aber für ELF-Format x86 und x86_64 können Sie readelf -r verwenden und die Umlagerungsarten betrachten.

Für 32-Bit-PIC-Code sollten Sie einen R_386_GOTPC-Umzugsabschnitt haben:

%Vor%

Für Nicht-PIC .o s sollte kein solcher Abschnitt vorhanden sein. (Sie sehen auch eine globale Offset-Tabelle in der Ausgabe readelf -s .)

Für 64-Bit, dasselbe, aber mit einem R_X86_64_GOTPCREL Relocation-Typ. Ich bin mir ziemlich sicher, dass alle Namen des Umlagerungstyps direkt anzeigen, ob der Code PIC ist oder nicht, aber ich kann gerade keine Referenz finden.

    
Mat 05.05.2011, 11:29
quelle