I'm studying the ELF format right now. I have to code a simple nm fonction (without the options). I'm already printing on the output the symbol's value and the symbol's name.
Here's the nm output :
value type name
0000000000600e30 D __DTOR_END__
I have the same one, but without the 'type'. I am using the ELF64_Sym structure, as follow :
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;
I know that I have to use the st_info variable and this macro :
#define ELF64_ST_TYPE(info) ((info) & 0xf)
to get the symbol's type. But, the symbol type can be a macro as follow :
NAME VALUE
STT_NOTYPE 0
STT_OBJECT 1
STT_FUNC 2
STT_SECTION 3
STT_FILE 4
STT_LOPROC 13
STT_HIOPROC 15
And I would like to know is how can I get from these macros the letters printed by nm, example:
U, u, A, a, T, t, R, r, W, w
switch
statement, perhaps? – Lenis