标签 · DWARF
5 篇文章,记录每一次探索。
[链接器的世界-实验篇12] 让调试信息跟着地址走:DWARF、符号表与节头
2026-10-06
为 ET_EXEC 与静态 PIE 补全调试节、符号表和节头表,区分图像地址、调试节偏移与 TLS 偏移。
阅读全文
[链接器的世界-实验篇09] 不知道加载地址时怎么链接:自重定位的静态 PIE
2026-10-06
在 class8 前端与 class6 布局之上生成静态 PIE,区分静态补丁和加载期指针,并通过提供的启动代码完成自重定位。
阅读全文
[链接器的世界-原理篇11] 调试信息:让机器码认回源代码
2026-10-04
从代码地址、调试节内偏移与被删除代码的 tombstone 出发,解释 DWARF 如何随链接结果变化;进一步分析索引形式、字符串合并、压缩、独立调试文件和 split DWARF 的引用与分发机制。
阅读全文
[链接器的世界-原理篇08] 栈展开:沿调用栈找到回去的路
2026-10-04
函数一层套一层地调用,返回地址散落在栈上。打印调用栈、抛出 C++ 异常时,运行时要一层层退回调用者,靠的是编译器和汇编器写进 .eh_frame 的一张"每条指令处怎么找回调用者"的表。本章用真实目标文件逐字节拆开 CIE/FDE,讲 CFI 状态机、personality 与 LSDA、两阶段展开,以及链接器为 .eh_frame 和 .eh_frame_hdr 要做的事。
阅读全文
[链接器的世界-原理篇01] 地址不能总靠手填:链接器的演化之路
2026-10-04
从 1949 年 EDSAC 的子程序库讲起,沿着"一个问题催生一个发明"的线索,看重定位、汇编器、目标文件、ELF、共享库、DWARF、.eh_frame、COMDAT、可执行栈标记和四代链接器是怎么一个接一个出现的,以及它们怎样把链接器推到今天的位置。
阅读全文