符号表
来源:互联网 发布:淘宝网页版登录首页 编辑:程序博客网 时间:2024/04/30 07:58
符号定义的实质是:指分配了存储空间。
函数名指明代码所在区域,变量名指数据所在区域
所有符号的值就是其目标所在的首地址。符号解析也叫符号绑定。
函数名和已初始化的全局变量名都是强符号。
未初始化的全局变量名是弱符号
Rule 1: 强符号不能多次定义
Rule 2: 若一个符号被定义为一次强符号和多次弱符号,则按强定义为准
Rule 3: 若有多个弱符号定义,则任选其中一个
使用命令 gcc –fno-common链接时,会告诉链接器在遇到多个弱定义的全局符号时输出一条警告信息。1:符号表(symtab)::::: objdump -t或者--syms
2:.dynsym 动态符号表(Dynamic Symbol Table)::::::: objdump -T或者--dynamic-syms
3: readelf -a
typedef struct {
int name; /*符号对应字符串在strtab节中的偏移量*/
int value; /*在对应节中的偏移量,可执行文件中是虚拟地址*/
int size; /*符号对应目标所占字节数*/
char type: 4, /*符号对应目标的类型:数据、函数、源文件、节*/
binding: 4; /*符号类别:全局符号、局部符号、弱符号*/
char reserved;
char section; /*符号对应目标所在的节,或其他情况*/
} Elf_Symbol;
ABS表示不该被重定位;
UND表示未定义;
COM表示未初始化数据(.bss),此时,value表示对齐要求,size给出最小大小
局部变量临时分配在栈中,不会在过程外被引用,因此不是符号定义
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表
- 符号表之一:符号属性
- Typeglob和符号表
- 如何建立符号表
- vxworks之符号表
- 内核符号表
- 逻辑符号表
- 内核符号表详解
- linux 符号表
- linux内核符号表
- Hive 分区操作
- LeetCode ( Populating Next Right Pointers in Each Node II)
- org.hibernate.StaleObjectStateException
- 《使用Python进行自然语言处理》学习笔记四
- Bash scripts-II
- 符号表
- SpringBoot系列之三全局异常的捕获处理
- 二级列表实现CheckBox单选及全选
- map遍历删除异常:ConcurrentModificationException
- java值传递和引用传递
- 萌新程序媛笔记-第1章-程序设计入门
- 计算几何练习1
- 火车进站 一个入栈序列的所有出栈顺序
- 《程序员面试宝典第四版》笔记3