标签 · TLS
3 篇文章,记录每一次探索。
[链接器的世界-实验篇14] 接住 rustc:把链接器变成真正的驱动程序
2026-10-06
为累积的 class13 静态 PIE 后端实现命令行驱动,让 rustc 直接调用它,链接一个使用 core::fmt 的 no_std Rust 程序。
阅读全文
[链接器的世界-实验篇10] 不再原样复制:常量合并与展开表重建
2026-10-06
在 class8 的 ET_EXEC 后端中合并重复常量,映射输入偏移,并为存活代码重建 .eh_frame 与搜索索引。
阅读全文
[链接器的世界-原理篇09] TLS:同一个变量,每个线程各有一份
2026-10-04
thread_local 变量在每个线程里是同一个名字、不同的地址。这个地址由编译器、链接器和动态加载器合作算出:.tdata/.tbss 与 PT_TLS 是模板,%fs 和 TPIDR_EL0 指向每个线程自己的那一份,四种访问模型在通用和快之间取舍,链接器在知道更多信息时把慢序列原地改写成快序列。本文用 clang、ld.lld 和 GNU ld 的真实输出走一遍全过程,最后解释"cannot allocate memory in static TLS block"的根因。
阅读全文