腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
homura的博客
专栏作者
举报
50
文章
22205
阅读量
13
订阅数
订阅专栏
申请加入专栏
全部文章(50)
开发(21)
函数(20)
源码阅读(16)
编译(9)
file(8)
对象(8)
优化(8)
数据(7)
std(6)
变量(6)
继承(6)
llvm(5)
指针(5)
size(4)
symbols(4)
遍历(4)
工作(4)
管理(4)
字符串(4)
sh(3)
命令行(3)
设计(3)
系统(3)
语法(3)
源码(3)
缓存(2)
analysis(2)
ast(2)
layout(2)
offset(2)
oop(2)
编译器(2)
测试(2)
程序(2)
多线程(2)
工具(2)
架构(2)
接口(2)
内存(2)
排序(2)
数组(2)
算法(2)
调试(2)
压缩(2)
源码学习(2)
重构(2)
官方文档(1)
c++(1)
正则表达式(1)
hexo(1)
数据结构(1)
迁移(1)
add(1)
callback(1)
ci(1)
counter(1)
deployment(1)
documentation(1)
function(1)
gc(1)
glibc(1)
label(1)
lexer(1)
post(1)
push(1)
riscv(1)
server(1)
version(1)
编程(1)
编程语言(1)
博客(1)
程序员(1)
递归(1)
队列(1)
翻译(1)
基础(1)
兼容性(1)
脚本(1)
教程(1)
进程(1)
量化(1)
模型(1)
配置(1)
搜索(1)
效率(1)
异常(1)
原理(1)
搜索文章
搜索
搜索
关闭
mold源码阅读十三 计算shdr以及osec offset
offset
sh
size
优化
源码阅读
本期的内容主要是更新section header以及set output section offsets相关。当这些操作结束后,虚拟地址会固定,因此输出文件的memory layout就固定下来了。
AkemiHomura
2023-10-22
142
0
mold源码阅读十二 创建一些输出段
file
offset
size
symbols
源码阅读
这里对verdef和verneed段进行构造,实际写入内容。其中包含了字符串信息,因此还会将字符串写入dynstr中。
AkemiHomura
2023-10-22
144
0
mold源码阅读十一 relr and dynsym
symbols
变量
程序
函数
源码阅读
将OutputSection以及Got中的relocations以压缩的形式存储到relr.dyn,在这之后rel段的大小和layout就固定了。
AkemiHomura
2023-10-22
233
0
mold源码阅读九 未解析符号的处理
file
std
symbols
遍历
源码阅读
本期内容主要是claim_unresolved_symbols的部分,其次是其他一些简单的处理
AkemiHomura
2023-10-22
148
0
mold源码阅读八 创建输出段
add
file
std
函数
源码阅读
上一期介绍了一些创建输出段之前的工作,本期主要是把创建输出相关的最后一些前置准备讲解完成。根据代码中的注释,add_synthetic_symbols以后,不会再有任何新的文件添加到ctx.objs和ctx.dsos中了。之后会再讲解简单的命令行参数处理,下一期再讲对于输出chunk中的一些处理
AkemiHomura
2023-10-22
114
0
mold源码阅读十四 固定文件layout以及创建输出
layout
sh
数据
压缩
源码阅读
上一期主要讲解了shdr计算更新的部分以及osec offset的设置,这期则是做链接最后的工作。上期在对段shrink的时候也提到部分synthetic的符号值还未固定,本期就会从这部分的值提起,之后则是对debug_section进行压缩,同时文件的大小也会产生变化,到了这里整个文件内部的layout以及文件的大小也就固定了。
AkemiHomura
2023-10-16
139
0
mold源码阅读十四 固定文件layout以及创建输出
layout
sh
数据
压缩
源码阅读
上一期主要讲解了shdr计算更新的部分以及osec offset的设置,这期则是做链接最后的工作。上期在对段shrink的时候也提到部分synthetic的符号值还未固定,本期就会从这部分的值提起,之后则是对debug_section进行压缩,同时文件的大小也会产生变化,到了这里整个文件内部的layout以及文件的大小也就固定了。
AkemiHomura
2023-10-16
208
0
mold源码阅读十五 最后的收尾工作
counter
file
std
工作
源码阅读
将所有依赖,也就是链接过程中所有读取的文件,并且写入到文件中。可以用于确认某个文件是否被加入到链接过程中。
AkemiHomura
2023-10-16
185
0
mold源码阅读七 创建输出段之前
file
push
size
std
源码阅读
上期的内容主要是section size相关的优化,这期内容是创建输出段前的最后一些处理
AkemiHomura
2023-05-21
279
0
mold源码阅读六 section size优化
file
size
std
优化
源码阅读
上一期我们讲解了一些符号相关的处理,这一期我们来讲一些对于section size的优化处理。
AkemiHomura
2023-05-10
512
0
mold源码阅读五 符号相关
file
std
symbols
version
源码阅读
上期讲完了resolve_section_pieces,在这之后本应是combine_object,但是combine_object几乎包含了后面的所有过程,因此等到整个流程讲完后或许会再回来讲,这一期的内容以符号版本的处理为主。
AkemiHomura
2023-05-03
275
0
mold源码阅读 其四 mergeable section
数据结构
数据
源码阅读
指针
字符串
上一期的内容讲完了一些针对文件的简单处理以及符号决议,这一期的主要内容是在这之后针对mergeable section的决议与合并。
AkemiHomura
2023-04-24
332
0
mold源码阅读 其三 符号决议
对象
多线程
函数
命令行
源码阅读
前面两期将读取输入的部分全部讲完了,本期开始涉及链接过程中的处理。在讲主要的符号决议之前,先讲一下mold在符号决议执行之前做的一些其他处理。
AkemiHomura
2023-04-12
307
0
mold源码阅读 其二 读取SharedFile
数据
搜索
效率
异常
源码阅读
这期的内容主要是讲完读取输入的部分,有一些之前遗漏的信息,以及之前未讲完的初始化ehframe以及shared object读取的部分。有许多地方默认读者读过上期内容,建议先阅读上期内容后再来查看本期。
AkemiHomura
2023-04-07
328
0
mold源码阅读 其一 读取输入文件
file
多线程
管理
命令行
源码阅读
上一期主要讲了链接前的一些准备流程以及在mold中链接过程的简单介绍。这期开始我们从链接过程中的功能开始介绍。在开始之前,提前说明一下里面各种缩写有很多,我会在第一次出现时提及缩写具体含义是什么,如果后期更的期数比较多会考虑专门写一页缩写的参考,方便查阅。
AkemiHomura
2023-04-07
1.3K
0
mold源码阅读 其零 main
对象
函数
命令行
排序
源码阅读
我们从main函数的开始,大致讲一下都做了哪些事情。之后再从每个流程中的具体实现开始阅读(如果我记得的话会回头在这里补上对应的链接),或者会以解决某些问题为线索写一篇,比如说某一些常见的参数具体在mold中怎么生效的,比如说whole_archive这种。为保证两部分文章内容的连贯性,内容不可避免会有一定重叠。
AkemiHomura
2023-04-07
370
0
链接器起始篇
编译
脚本
数据
系统
源码
又开始不务正业乱开新坑了。接下来会通过阅读mold的源码来学习如何实现一个ELF链接器,有精力也会再跟着plct的这个课程学习实现一个简单的RV ELF链接器,可能会跟着将代码换一门语言翻译一遍,将这个学习过程中遇到的知识点记录到博客中。如果坑能开到后面的话我还会针对这门课程实现的链接器在功能上与mold的进行比较,一门教学用的链接器和真正实用的链接器在功能上有哪些差别。
AkemiHomura
2023-04-07
376
0
调试器之工作原理
程序
工作
进程
调试
原理
之前对于调试器并没有什么了解,对于很多问题也没什么头脑,比如说attach是怎么做到的,怎么实现运行时断点的。今天来简单了解一下调试器部分功能的工作原理。
AkemiHomura
2023-04-07
560
0
基于xv6 riscv实现学习os 其零:helloworld
riscv
编译
教程
开发
配置
这个系列的目的还是以讲解xv6-riscv的代码以及记录我在做的事情为主,也会掺杂许多mini-riscv-os的代码介绍(关于xv6-riscv和mini-riscv-os的链接请看参考),并非教程倾向(但也会尽可能讲解一些基础知识),很多细节不会讲到。如果想要更详细的教程我建议你查看参考资料中引用的内容,在这一期我会列出一部参考的项目。
AkemiHomura
2023-04-07
838
0
工作踩坑小结
编译
工具
工作
内存
优化
前些时间工作中踩到的坑做个简单小总结,第一次搞裸机与交叉编译,本次内容也以此为主。
AkemiHomura
2023-04-07
500
0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档