Sto studiando il formato ELF in questo momento. Devo codificare un semplice nm fonction (senza le opzioni). Sto già stampando sull'output il valore del simbolo e il nome del simbolo.Come visualizzare il tipo di simbolo come il comando nm?
ecco l'output nm:
value type name
0000000000600e30 D __DTOR_END__
Ho lo stesso, ma senza il 'tipo'. Sto usando la struttura ELF64_Sym, come segue:
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;
So che devo usare la variabile st_info e questa macro:
#define ELF64_ST_TYPE(info) ((info) & 0xf)
per ottenere il tipo di simbolo. Ma, il tipo di simbolo può essere una macro come segue:
NAME VALUE
STT_NOTYPE 0
STT_OBJECT 1
STT_FUNC 2
STT_SECTION 3
STT_FILE 4
STT_LOPROC 13
STT_HIOPROC 15
e vorrei sapere è come posso ottenere da queste macro le lettere stampate dal nm, ad esempio:
U, u, A, a, T, t, R, r, W, w
Una dichiarazione 'switch', forse? –
Prendi questo uomo in considerazione man nm (1): http://linux.die.net/man/1/nm – EGOrecords