首页
学习
活动
专区
工具
TVP
发布

homura的博客

专栏作者
50
文章
22205
阅读量
13
订阅数
mold源码阅读十三 计算shdr以及osec offset
本期的内容主要是更新section header以及set output section offsets相关。当这些操作结束后,虚拟地址会固定,因此输出文件的memory layout就固定下来了。
AkemiHomura
2023-10-22
1420
mold源码阅读十二 创建一些输出段
这里对verdef和verneed段进行构造,实际写入内容。其中包含了字符串信息,因此还会将字符串写入dynstr中。
AkemiHomura
2023-10-22
1440
mold源码阅读十一 relr and dynsym
将OutputSection以及Got中的relocations以压缩的形式存储到relr.dyn,在这之后rel段的大小和layout就固定了。
AkemiHomura
2023-10-22
2330
mold源码阅读九 未解析符号的处理
本期内容主要是claim_unresolved_symbols的部分,其次是其他一些简单的处理
AkemiHomura
2023-10-22
1480
mold源码阅读八 创建输出段
上一期介绍了一些创建输出段之前的工作,本期主要是把创建输出相关的最后一些前置准备讲解完成。根据代码中的注释,add_synthetic_symbols以后,不会再有任何新的文件添加到ctx.objs和ctx.dsos中了。之后会再讲解简单的命令行参数处理,下一期再讲对于输出chunk中的一些处理
AkemiHomura
2023-10-22
1140
mold源码阅读十四 固定文件layout以及创建输出
上一期主要讲解了shdr计算更新的部分以及osec offset的设置,这期则是做链接最后的工作。上期在对段shrink的时候也提到部分synthetic的符号值还未固定,本期就会从这部分的值提起,之后则是对debug_section进行压缩,同时文件的大小也会产生变化,到了这里整个文件内部的layout以及文件的大小也就固定了。
AkemiHomura
2023-10-16
1390
mold源码阅读十四 固定文件layout以及创建输出
上一期主要讲解了shdr计算更新的部分以及osec offset的设置,这期则是做链接最后的工作。上期在对段shrink的时候也提到部分synthetic的符号值还未固定,本期就会从这部分的值提起,之后则是对debug_section进行压缩,同时文件的大小也会产生变化,到了这里整个文件内部的layout以及文件的大小也就固定了。
AkemiHomura
2023-10-16
2080
mold源码阅读十五 最后的收尾工作
将所有依赖,也就是链接过程中所有读取的文件,并且写入到文件中。可以用于确认某个文件是否被加入到链接过程中。
AkemiHomura
2023-10-16
1850
mold源码阅读七 创建输出段之前
上期的内容主要是section size相关的优化,这期内容是创建输出段前的最后一些处理
AkemiHomura
2023-05-21
2790
mold源码阅读六 section size优化
上一期我们讲解了一些符号相关的处理,这一期我们来讲一些对于section size的优化处理。
AkemiHomura
2023-05-10
5120
mold源码阅读五 符号相关
上期讲完了resolve_section_pieces,在这之后本应是combine_object,但是combine_object几乎包含了后面的所有过程,因此等到整个流程讲完后或许会再回来讲,这一期的内容以符号版本的处理为主。
AkemiHomura
2023-05-03
2750
mold源码阅读 其四 mergeable section
上一期的内容讲完了一些针对文件的简单处理以及符号决议,这一期的主要内容是在这之后针对mergeable section的决议与合并。
AkemiHomura
2023-04-24
3320
mold源码阅读 其三 符号决议
前面两期将读取输入的部分全部讲完了,本期开始涉及链接过程中的处理。在讲主要的符号决议之前,先讲一下mold在符号决议执行之前做的一些其他处理。
AkemiHomura
2023-04-12
3070
mold源码阅读 其二 读取SharedFile
这期的内容主要是讲完读取输入的部分,有一些之前遗漏的信息,以及之前未讲完的初始化ehframe以及shared object读取的部分。有许多地方默认读者读过上期内容,建议先阅读上期内容后再来查看本期。
AkemiHomura
2023-04-07
3280
mold源码阅读 其一 读取输入文件
上一期主要讲了链接前的一些准备流程以及在mold中链接过程的简单介绍。这期开始我们从链接过程中的功能开始介绍。在开始之前,提前说明一下里面各种缩写有很多,我会在第一次出现时提及缩写具体含义是什么,如果后期更的期数比较多会考虑专门写一页缩写的参考,方便查阅。
AkemiHomura
2023-04-07
1.3K0
mold源码阅读 其零 main
我们从main函数的开始,大致讲一下都做了哪些事情。之后再从每个流程中的具体实现开始阅读(如果我记得的话会回头在这里补上对应的链接),或者会以解决某些问题为线索写一篇,比如说某一些常见的参数具体在mold中怎么生效的,比如说whole_archive这种。为保证两部分文章内容的连贯性,内容不可避免会有一定重叠。
AkemiHomura
2023-04-07
3700
链接器起始篇
又开始不务正业乱开新坑了。接下来会通过阅读mold的源码来学习如何实现一个ELF链接器,有精力也会再跟着plct的这个课程学习实现一个简单的RV ELF链接器,可能会跟着将代码换一门语言翻译一遍,将这个学习过程中遇到的知识点记录到博客中。如果坑能开到后面的话我还会针对这门课程实现的链接器在功能上与mold的进行比较,一门教学用的链接器和真正实用的链接器在功能上有哪些差别。
AkemiHomura
2023-04-07
3760
调试器之工作原理
之前对于调试器并没有什么了解,对于很多问题也没什么头脑,比如说attach是怎么做到的,怎么实现运行时断点的。今天来简单了解一下调试器部分功能的工作原理。
AkemiHomura
2023-04-07
5600
基于xv6 riscv实现学习os 其零:helloworld
这个系列的目的还是以讲解xv6-riscv的代码以及记录我在做的事情为主,也会掺杂许多mini-riscv-os的代码介绍(关于xv6-riscv和mini-riscv-os的链接请看参考),并非教程倾向(但也会尽可能讲解一些基础知识),很多细节不会讲到。如果想要更详细的教程我建议你查看参考资料中引用的内容,在这一期我会列出一部参考的项目。
AkemiHomura
2023-04-07
8380
工作踩坑小结
前些时间工作中踩到的坑做个简单小总结,第一次搞裸机与交叉编译,本次内容也以此为主。
AkemiHomura
2023-04-07
5000
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档