GNU链接器(LD):输入分区和输出分区介绍

server/2024/9/24 8:27:31/

0 参考资料

GNU-LD-v2.30-中文手册.pdf
GNU linker.pdf

1 前言

一个完整的编译工具链应该包含以下4个部分:
(1)编译器
(2)汇编器
(3)链接器
(4)lib库
在GNU工具链中,对应的是:
(1)编译器:GCC(GNU Compiler Collection,GNU编译器套件)
(2)汇编器:GAS(GNU Assembler,GNU汇编器)
(3)链接器:LD(GNU Linker,GNU链接器)
(4)lib库:glibc(GNU C Library,GNU C 库)
本文介绍GNU链接器(LD)链接器脚本中输入分区输出分区相关概念。

LD_18">2 GNU链接器(LD):输入分区输出分区介绍

实际上输入分区输出分区密不可分,我们先通过一个简单的链接器脚本对输入分区输出分区有个感性认识。假设你的程序质包含code(代码)、data(有初始值的数据)、bss(未赋初始值的数据)则它们将被分别放在.text、.data、.bss段中。下面这个例子,会将.text段加载在到0x10000开始的地址,.data段会从0x8000000地址开始,.bss段会紧跟在.data段之后。

SECTIONS
{. = 0x10000;.text : { *(.text) }. = 0x8000000;.data : { *(.data) }.bss : { *(.bss) }
}

在SECTIONS花括号后的第一行,为位置计数器(.)赋值为0x10000,这主要是为了给后面的输出分区.text设置起始地址(如果不通过其它方式给输出分区指定地址),.text是输出分区的名称,后面必须跟冒号(:)。在.text输出分区花括号内列出了想要放在输出分区中的输入分区的名字列表。是通配符,可匹配所有文件名。表达式(.text)意思是将所有输入文件的.text段包含进该输入分区
由于在定义.text输出分区前已经将位置计数器的值修改为0x10000,且.text输出分区没有定义起始地址,则链接器会将.text输出分区的起始地址设置为0x10000。
接下来的2个输出分区将.data段和.bss段放在了以0x8000000为起始地址的内存空间上。

2 总结

简单来说,输出分区就是告诉链接器如何在存储器(Flash、RAM)中布局,而输入分区则告诉链接器如何映射输入文件到存储布局中。输出分区决定整个分区分配在哪个存储器(或存储器的哪个地址),而输入分区决定code、data、bss段在存储器中的具体布局。


http://www.ppmy.cn/server/121255.html

相关文章

[vulnhub] Hackademic.RTB1

第一次打靶机,思路看的红队笔记 https://www.vulnhub.com/entry/hackademic-rtb1,17/ 环境:kali Linux - 192.168.75.131,靶机 - 192.168.75.132 主机发现和端口扫描 扫描整个网络有哪台机子在线,不进行端口扫描 nmap -sP 192.16…

漏洞挖掘 | Selenium Grid 中的 SSRF

Selenium 网格框架上的基本服务器端请求伪造 最近,我正在阅读漏洞文章看到Peter Jaric写的一篇 Selenium Grid 文章;他解释了 Selenium Grid 框架上缺乏身份验证和安全措施强化的问题。 在网上进行了更多搜索,我发现 Selenium Grid 开箱即用…

Webpack 常见配置项

1. entry 指定一个或多个入口点,Webpack 从这里开始构建依赖图。 entry: {main: ./src/index.js,admin: ./src/admin.js }2. output 指定输出文件的路径和名称。 output: {filename: [name].bundle.js,path: path.resolve(__dirname, dist),publicPath: /assets…

通过深度学习识别情绪

通过深度学习识别情绪(Emotion Recognition using Deep Learning)是一项结合多模态数据的技术,旨在通过分析人类的面部表情、语音语调、文本内容等特征来自动识别情绪状态。情绪识别在人机交互、健康监测、教育、娱乐等领域具有广泛的应用。 …

共享行业使用第三方支付分账系统优势

在共享行业中,选择最适合的分账模式需要考虑多个因素,包括安全性、透明度、灵活性、合规性以及成本效益等。以下是对几种常见分账模式的简要评估: 银行分账系统: 优点:信誉高、安全性好、资金可追踪性强。 缺点&…

【机器学习】——支持向量机

文章目录 支持向量机(Support Vector Machine, SVM)概述SVM 的工作原理线性不可分数据:软间隔与核技巧SVM 的数学形式SVM 的优势SVM 的缺点SVM 的应用 支持向量机(Support Vector Machine, SVM)概述 支持向量机&#…

自学前端的正确姿势是...

师傅带进门,修行在个人。 在前端自学成才的道路上,有些人走的很快,有些人却举步维艰。 为什么会这样子呢?因为他们没有掌握自学前端的正确姿势。 在介绍应该要怎样自学前端之前,首先来看下,自学前端容易…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上,我们在前几年发布Unity下直播播放模块的时候&#xf…