現在、ELF形式を勉強しています。単純なnm関数(オプションなし)をコーディングする必要があります。シンボルの値とシンボルの名前を出力にすでに印刷しています。
nm出力は次のとおりです。
value type name
0000000000600e30 D __DTOR_END__
私は同じものを持っていますが、「タイプ」はありません。次のように、ELF64_Sym構造を使用しています。
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;
st_info変数とこのマクロを使用する必要があることを知っています:
#define ELF64_ST_TYPE(info) ((info) & 0xf)
シンボルのタイプを取得します。ただし、シンボルタイプは次のようにマクロにすることができます。
NAME VALUE
STT_NOTYPE 0
STT_OBJECT 1
STT_FUNC 2
STT_SECTION 3
STT_FILE 4
STT_LOPROC 13
STT_HIOPROC 15
そして、私が知りたいのは、これらのマクロからnmで印刷された文字をどのように取得できるかです。例:
U, u, A, a, T, t, R, r, W, w