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.
Tags und Links c gcc linker compiler-construction fpic