(3).o文件

然后我们把俩文件都编译为.o文件

.o文件是二进制,需要用readelf工具查看

我们首先看main.o

.o文件是没有入口地址的,也没有program headers,这是由连接器给出的

.strtab

.strtab 是 ELF 文件中的一个特殊节(section),用于存储字符串表(string table)。在 ELF 文件中,很多地方都会引用字符串,比如节的名称、符号的名称等等,这些字符串都被存储在 .strtab 节中。.strtab 节中的每个字符串都以null结尾。

.text

代码段,这里面还有需要重定位的信息。

.rela.text

.rela.text 是一个重定位表(Relocation Table),它包含了对于.text节中的代码的重定位信息。重定位表(Relocation Table)用于告诉链接器或加载器在程序运行或加载时如何修改代码段(如.text节)中的地址,以便正确地引用其他部分的数据或代码。在.rela.text中,记录了需要进行重定位的位置和需要进行的重定位操作,例如修改代码中的某个地址,使其指向正确的数据或函数。

一般情况下,.rela.text会包含.text节中对其他符号(如全局变量、函数等)的引用信息,以确保程序在运行时能够正确地找到这些符号的地址。

.sdata

.sdata 节用于存储小数据(Small Data),这类数据通常指的是全局变量和静态变量,其大小足够小,可以通过立即数寻址的方式来访问。这样可以提高程序的运行效率,因为直接访问小数据区的全局变量速度比从一般的数据段(如.data节)中访问要快。.sdata节特别适用于那些对性能要求较高的应用程序或嵌入式系统中。

.comment

.comment 节(section .comment)是 ELF 文件中的一种特殊节,用于存储注释信息。这些注释通常是由开发人员或编译工具在编译过程中添加的,用于调试目的或提供有关文件内代码或数据的附加上下文信息。

.riscv.attributes

.riscv.attributes 是 RISC-V 架构的 ELF 文件中的一个特殊节,用于存储与 RISC-V 架构相关的特定属性信息。这些属性通常由编译器或工具添加,用于描述与 RISC-V 架构相关的特定信息,例如代码生成选项、特定指令集的使用等。这些信息在编译和链接过程中可能会被使用,以确保生成的可执行文件或库与目标架构兼容并具有正确的行为。

.eh_frame

.eh_frame 节是 ELF 文件中的一种特殊节,用于存储异常处理框架信息。这些信息通常由编译器生成,用于支持程序在运行时进行异常处理、栈回溯和调试。.eh_frame 节包含了一系列的数据结构,如 CIE (Common Information Entry) 和 FDE (Frame Description Entry),它们描述了程序执行时栈帧的结构和异常处理的相关信息。

.rela.eh_frame

.llvm_addrsig

.llvm_addrsig 不是 ELF 文件中的标准节,而是 LLVM 编译器引入的一个特殊节。它包含了一些用于调试和性能分析的地址签名信息,有助于工具在处理二进制文件时更好地理解程序的结构和执行流程。

.symtab

.symtab 节是 ELF 文件中的符号表节,用于存储程序的全局符号信息。这些符号包括函数名、变量名以及其他标识符。.symtab 节中的条目提供了符号的名称、类型、绑定信息以及符号在文件中的地址或者与之关联的节的索引等信息。通常用于调试、动态链接和符号解析等操作。

add.o类似,然后我们看一下他的符号表

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值