c - elf符号表中value列的含义

标签 c assembly elf

我有一个 elf 二进制文件,它具有以下 dynsym 符号表作为 readelf 的输出:

Num:    Value          Size Type    Bind   Vis      Ndx Name
 0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
 1: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __libc_start_main@GLIBC_2.2.5 (2)
 2: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
 3: 0000000000400440     0 FUNC    GLOBAL DEFAULT  UND printf@GLIBC_2.2.5 (2)
 4: 0000000000400460     0 FUNC    GLOBAL DEFAULT  UND fgets@GLIBC_2.2.5 (2)

value 列的含义是什么?由于此表的 printf400440,这是否意味着动态链接器必须printf 映射到该地址?如果是,这个值是如何决定的?是随机的吗?

编辑:此外,这是带有 gcc 的 linux x86-64

最佳答案

看起来函数类型的未定义动态符号的值只是它们在PLT中的条目的地址。同样,变量条目的值可能只是它们在 GOT 中的条目。

关于c - elf符号表中value列的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132875/

相关文章:

c - 无符号长 0 < -1?

c - 关于 pthread_create() 和 pthread_join()

我可以编写使用 GCC 和 MSVC 构建的 (x86) 汇编语言吗?

c - 为什么编译器版本出现在我的 ELF 可执行文件中?

c - 如何查找 ELF 文件的 .dynamic 部分中的条目数?

c - C 中的指针和在链表中的使用

c - strcmp返回值不正确?

c - C 中的数组 asm 函数

assembly - PIC 18F8722 组件中的 subwfb

assembly - 我想手写一个ELF文件。如何让我的elf文件调用c标准库