Ich studiere gerade das ELF-Format. Ich muss eine einfache nm-Funktion codieren (ohne die Optionen). Ich drucke bereits auf der Ausgabe den Wert des Symbols und den Namen des Symbols.Wie wird der Symboltyp wie der nm-Befehl angezeigt?
Hier ist der Ausgang nm:
value type name
0000000000600e30 D __DTOR_END__
ich das gleiche, aber ohne den 'Typ'. Ich bin mit dem ELF64_Sym Struktur, wie folgt:
typedef struct {
Elf64_Word st_name;
unsigned char st_info;
unsigned char st_other;
Elf64_Half st_shndx;
Elf64_Addr st_value;
Elf64_Xword st_size;
} Elf64_Sym;
Ich weiß, dass ich die st_info Variable und dieses Makro verwenden:
#define ELF64_ST_TYPE(info) ((info) & 0xf)
das Symbol der Art zu erhalten. Aber kann das Symboltyp ein Makro wie folgt sein:
NAME VALUE
STT_NOTYPE 0
STT_OBJECT 1
STT_FUNC 2
STT_SECTION 3
STT_FILE 4
STT_LOPROC 13
STT_HIOPROC 15
Und ich würde gerne wissen, wie kann ich von diesen Makros erhalten die Buchstaben gedruckt von nm, Beispiel:
U, u, A, a, T, t, R, r, W, w
Eine 'switch' Aussage, vielleicht? –
Nehmen Sie diesen Mann in Betracht man nm (1): http://linux.die.net/man/1/nm – EGOrecords