vmlinux.lds文件中的.stab 0 : { *(.stab) }是什么含义?

来源:百度知道 编辑:UC知道 时间:2024/06/21 06:06:47
同问下面这一段:
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }

STAB
调试信息的传统格式被称为 STAB(符号表)。STAB 信息保存在 ELF 文件的 .stab 和 .stabstr 部分。
STAB 调试格式是一种记录不完整的半标准格式,用于调试 COFF 和 ELF 对象文件中的信息。调试信息是作为对象文件的符号表的一部分进行存储的,因此复杂性和范围是有限的。尽管如此,STAB 在旧的 UNIX 和兼容系统上仍然是一种常见的调试格式。
对于某些对象文件格式,调试信息被封装到统称为 STAB 指令的汇编程序指令中,这些指令分布在生成的代码中。STAB 是 a.out 和 XCOFF 对象文件格式的调试信息的本机格式。GNU 工具也可以在 COFF 和 ECOFF 对象文件格式中生成 STAB。
汇编程序创建了两个自定义部分:
.stab,包含一组具有固定长度的结构,每个 stab 包含一个结构
.stabstr,包含所有可变长度的字符串,这些字符串在 .stab 部分是通过 stab 引用的。
STAB 二进制数据的字节顺序取决于对象文件格式。