关于windows下gcc+cmake指定elf文件到特定section中

2023-11-01

1. map 文件中.glue_7/.glue_7t是什么

Those stub sections are generated by the linker, not by gcc itself, so any documentation would be associated with the linker.  That said, I don't think the GNU linker provides any documentation for them either.
The sections are named 'glue' because they glue together ARM and Thumb code.  I assume the 7 is there because the ARM7 was the first one to support Thumb code.  .glue_7 is used for ARM code calling Thumb code, and .glue_7t is used for Thumb code calling ARM code.

2. map 文件中.init/.finit是什么

.init这个section类似于构造函数,在main()函数之前执行

.fini这个section类似于析构函数,在main()函数退出之后执行

 

参考:(1条消息) crt1.o,crti.o,crtbegin.o,crtend.o ,crtn.o 与libc.so 的关系_Farmwang的博客-CSDN博客

(1条消息) 编译链接实战(12)crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o是什么东西_奇妙之二进制的博客-CSDN博客

(1条消息) 两个特殊的段.init和.finit_.init .fini_萝卜2305的博客-CSDN博客

3. map 文件中.plt 、.rel.dyn、.rel.plt、.got.plt是什么

.plt的作用是一个跳板,保存了某个符号在重定位表中的偏移量(用来第一次查找某个符号)和对应的.got.plt的对应的地址

.rel.dyn重定向表,在程序启动时就需要重定位完成。

.rel.plt保存了重定位表的信息,可以使用lazy的连接方式

.got据说是保存了elf文件本身的各个符号的偏移量,即不要动态链接,未证明

.got.plt保存了重定位地址。

比如printf是一个重定位符号,需要连接该符号时过程是这样:

main函数call  .plt段中的一个地址,这里的第一句话就是调转到.got.plt中的保存的printf的地址,如果是第一次,那么保存的地址就是.plt中的下一句话,这个下一句话就是压入这个符号在.rel.plt中的重定位表的偏移量,然后ld程序就会根据重定位表中的信息加上这个偏移量找到这个地址,保存到重定位表所指向的地址中,这个地址其实就是.got.plt段的一个地址。

第二次调用时就可以直接获取到.got.plt中保存的地址了

4. 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于windows下gcc+cmake指定elf文件到特定section中 的相关文章

  • C语言基础(五)自定义类型与宏定义

    自定义类型与宏定义 一 自定义类型 二 宏定义 三 枚举 一 自定义类型 自定义类型 typedef用新的类型名代替原有的类型名 例如 指定用u8为类型名 作用与unsigned char相同 typedef unsigned char u
  • 自定义Dynamics 365实施和发布业务解决方案 - 7. 报表

    在每个组织中 决策者都依赖于各种报告来推动业务取得成功 因此 每个软件开发项目都需要开发报告 Dynamics365配备了最先进的报告功能 这些报告的范围从简单的查询到具有复杂查询的更高级的报告 此外 Dynamics365的一个关键功能是

随机推荐

  • Qt 串口发送0x00

    应用场景 大恒光电的平移台 GCD 040101M 先看看要发什么东西 这是串口监听软件截取的结果 绿色的字 串口协议主要包括三个部分 前面是固定的 后面是key 后面是 0x00 最后面是数据 错误版本1 bool MoveStage w
  • Windows10点击睡眠之后不锁屏?

    一些用户反馈自己在使用win10系统笔记本电脑过程中 突然碰到了无法睡眠的情况 不管是盖上屏幕还是在系统中选择睡眠 电脑都无法进行睡眠 根本没有任何反应 该怎么办呢 接下来 系统城小编就为大家带来该问题的具体解决方法 首先可以按方法一进行设
  • Deepin 系统安装并开启本地远程使Windos系统访问

    思路 1 系统安装 2 安装xrdp Linux和Windows间的远程桌面访问 coder i 的博客 CSDN博客 linux远程连接windows桌面 sudo apt install xrdp 然后启动xrdp服务 sudo sys
  • 关于stm32的GPIO的操作

    首先先了解一下输出的模式 比较常用的是 推挽输出 1 GPIO Mode AIN 模拟输入 2 GPIO Mode IN FLOATING 浮空输入 3 GPIO Mode IPD 下拉输入 4 GPIO Mode IPU 上拉输入 5 G
  • 字符流

    import java io FileNotFoundException import java io FileReader import java io FileWriter import java io IOException publ
  • 线性代数(17)——坐标转换

    坐标转换 空间的基与坐标系 任意坐标系与标准坐标系之间的转换 任意坐标系之间的转换 标准单位矩阵作为桥梁 结论验证 不使用单位坐标系为桥梁的情况 空间的基与坐标系 坐标系是理解空间的基的一个视角 如果只到了一个坐标系也相当于知道了空间中的一
  • 【axmol】基于Cocos2d-x 4.0的持续维护的游戏引擎介绍

    Axmol引擎 A Multi platform Engine for Desktop XBOX UWP and Mobile games A radical fork of Cocos2d x 4 0 Axmol是基于Cocos2d x
  • 【小程序】手动实现switch开关中带文字效果(开关左右文字相同/不同都可以)

    最终效果 左右文字宽度相同 左右文字宽度不同 左右长度相同 效果 配合wx show切换 注意 左右长度相同的话可以设置合适的相同的宽度 html
  • 五. go 常见数据结构实现原理之 string, iota

    目录 一 string 其它问题 二 iota 几个小问题 原理 一 string golang中对string的解释 8比特字节的集合 可以为空 长度为0 但不会是nil string对象不可以修改 查看string 数据结构 strin
  • C语言中的正则表达式:匹配和替换

    当你在C语言中需要进行字符串匹配和替换操作时 正则表达式是一个强大的工具 在C语言中 可以使用正则表达式库来处理正则表达式的匹配和替换操作 下面是一个使用C语言中的正则表达式的示例教程 首先 你需要包含适当的头文件 c include
  • Python之异步处理

    同步处理 也被称为是阻塞式处理 是指程序执行到某个位置 会一直等待该命令执行完毕 然后继续执行后续逻辑 异步处理 是指一段程序由多个线程或进程同时执行 从而提高软件性能 一 多线程 线程是计算机调度的基本单位 一个进程至少有一个线程 线程是
  • 计算机网络分为哪些子网,计算机网络-划分子网

    IP地址 IP地址是给因特网上的每一个主机 或路由器 的每一个接口分配一个在全世界范围是唯一的32位标识符 层次化IP地址将32位的IP地址分为网络ID和主机ID IP地址分类 分为ABCDE类地址 二进制与十进制的关系 从上图看出128以
  • 这三个普通程序员,几个月就成功转型AI,他们的经验是...

    动辄50万的毕业生年薪 动辄100万起步价的海归AI高级人才 普通员到底应不应该转型AI工程师 普通程序员到底应该如何转型AI工程师 以下 AI科技大本营精选了三个特别典型的普通程序员成功转型AI的案例 也是知乎上点赞量相当高的案例 第一案
  • 学生没有教育邮箱如何享受Jetbrains全家桶优惠(白嫖)

    学生没有教育邮箱如何享受Jetbrains全家桶优惠 白嫖 Lan 2020 04 26 10 05 351 人阅读 0 条评论 首先来一波成功图 提交申请一个星期之后终于发来了这封邮件 每次申请可以使用一年 一年之后还是学生可以继续申请
  • Vue 使用 mockjs (返回数据、get、post 请求)

    1 安装 mockjs axios 一般默认自带 没有就安装下 附 mockjs 官网 mockjs github npm install mockjs axios 一般默认自带 npm install axios 2 启动项目 根据项目环
  • C/C++

    文章目录 2 2 C语言常用关键字及运算符操作 关键字 参考 麦子学院 嵌入式C语言高级 2 2 C语言常用关键字及运算符操作 重点 掌握C语言的常用关键宇及其应用场景 使用技巧 关键字 编译器 预先定义了一定意义的字符串 32个 size
  • qt安装到指定目录

    qt everywhere src 5 12 3安装到指定目录 默认情况下 QT会自动安装到 usr local Qt目录 这对于项目工具的归类来说 总是感觉很别扭 本文仅记录自己安装的过程 同时原理可借鉴给其他的工具归类 下载qt eve
  • 传感器课程作业 车载激光雷达

    高分辨率车载3D激光雷达介绍 1 车载3D激光雷达的背景 化石能源的日渐枯竭以及气候环境的恶化使得绿色节能可持续发展理念普世流行 其中交通减排是节能减排的主要途径 加之碳中和目标的提出 新能源汽车替代传统燃油车已然成为不可逆转的趋势 各国大
  • 特别篇 :从 0 开始创作云原生应用 (殷达)

    本节内容的分享主要围绕以下两方面 介绍云原生应用是什么 介绍 Helm 和如何创作一个 Helm 应用 一 云原生应用是什么 首先我们来思考一个问题 云原生应用是什么 在生活中我们会和各种各样的应用打交道 有时候会在移动端上使用淘宝购物 使
  • 关于windows下gcc+cmake指定elf文件到特定section中

    1 map 文件中 glue 7 glue 7t是什么 Those stub sections are generated by the linker not by gcc itself so any documentation would