小编Jér*_*ier的帖子

如何显示符号的类型,如nm命令?

我正在研究ELF格式.我必须编写一个简单的nm函数(没有选项).我已经在输出上打印了符号的值和符号的名称.

这是nm输出:

value             type    name
0000000000600e30  D       __DTOR_END__
Run Code Online (Sandbox Code Playgroud)

我有相同的,但没有'类型'.我正在使用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;
Run Code Online (Sandbox Code Playgroud)

我知道我必须使用st_info变量和这个宏:

#define ELF64_ST_TYPE(info)          ((info) & 0xf)
Run Code Online (Sandbox Code Playgroud)

获取符号的类型.但是,符号类型可以是一个宏,如下所示:

NAME            VALUE
STT_NOTYPE      0
STT_OBJECT      1
STT_FUNC        2
STT_SECTION     3
STT_FILE        4
STT_LOPROC      13
STT_HIOPROC     15
Run Code Online (Sandbox Code Playgroud)

我想知道如何从这些宏中获取由nm打印的字母,例如:

 U, u, A, a, T, t, R, r, W, w
Run Code Online (Sandbox Code Playgroud)

c unix command elf nm

7
推荐指数
1
解决办法
6336
查看次数

标签 统计

c ×1

command ×1

elf ×1

nm ×1

unix ×1