objdump 输出格式解析

objdump 输出格式解析

文章主要翻译自https://www.man7.org/linux/man-pages/man1/objdump.1.html,为提高工作效率翻译借助了AI工具,并进行简单修改

一、objdump 选项
1. 
-t
--syms
打印文件的符号表

另外一种常见的输出格式,通常出现在基于ELF的文件中,如下所示:
    00000000 l    d  .bss   00000000 .bss
    00000000 g       .text  00000000 fred

在这里,第一个数字是符号的值(有时被称为它的地址)。接下来的字段实际上是一组字符和空格,表示符号的标志位。这些字符将在下面描述。接下来是与符号关联的节,如果是绝对节(即不与任何节连接),则显示为 ABS,如果是未定义但在文件中引用的节,则显示为 UND。

节名之后是另一个字段,一个数字,对于大多数符号来说是对齐字节数,对于其他符号是大小。最后显示符号的名称。

标志字符分为以下7组:

"l"
"g"
"u"
"!"
符号可以是局部的(l),全局的(g),唯一的全局(u),既不是全局也不是局部(空格),或者既是全局又是局部(!)。符号既不是局部的也不是全局的,可能是由于各种原因,例如它用于调试,但如果它既是局部的又是全局的,也可能是出错了。唯一的全局符号是GNU对标准ELF符号集的扩展。对于这样的符号,动态链接器将确保在整个进程中只有一个具有此名称和类型的符号被使用。

"w" 符号是弱符号(w)或者强符号(空格)
"C" 符号是构造符号(C)或者原始符号(空格)
"W" 符号是一个警告(W)或者一个普通符号(空格)。警告符号的名称是一个如果跟随警告符号的符号被引用时要显示的消息。

"I"
"i"
符号是对另一个符号的间接引用(I),在重定位期间需要处理的函数(i),或者是一个普通符号(空格)。

"d"
"D"
符号是一个调试符号(d)、一个动态符号(D)或者一个普通符号(空格)。

"F"
"f"
"O"
符号是函数名(F)、文件名(f)、对象名(O)或者只是一个普通符号(空格)。

2.
-T
--dynamic-syms
打印文件的动态符号表。这只对动态对象有意义,比如某些类型的共享库。这与nm使用 -D (–dynamic) 选项时提供的信息相似。

输出格式与 --syms 选项产生的格式相似,不同之处在于在符号名称前插入了一个额外的字段,给出了与符号关联的版本信息。如果该版本是用于解析对符号的无版本引用时的默认版本,则直接显示;否则将其放入括号中。

二、示例
$ objdump -TtC libalg.so 

libalg.so:     file format elf64-x86-64

SYMBOL TABLE:
0000000000001040 l     F .text    0000000000000000 deregister_tm_clones
0000000000000000 l    df *ABS*    0000000000000000 add.cpp
0000000000004028 l     O .bss    0000000000000004 TestFun(int, int)::s_sum
0000000000000000 l    df *ABS*    0000000000000000 sub.cpp  
0000000000000000  w      *UND*    0000000000000000 __cxa_finalize
0000000000001135 g     F .text    0000000000000016 Sub(int, int)
00000000000010f9 g     F .text    0000000000000024 TestFun(int, int)
0000000000004024 g     O .bss    0000000000000004 g_value
0000000000000000  w      *UND*    0000000000000000 __gmon_start__


DYNAMIC SYMBOL TABLE:
0000000000000000  w   D  *UND*    0000000000000000 __gmon_start__
00000000000010f9 g    DF .text    0000000000000024 TestFun(int, int)
0000000000004024 g    DO .bss    0000000000000004 g_value
000000000000111d g    DF .text    0000000000000018 Add(int, int)
0000000000001135 g    DF .text    0000000000000016 Sub(int, int)

上面是一个动态库,
第一列表示符号的值或者地址,
第二列 l(local)表示局部符号,w(weak)表示弱符号,g(global)表示全局符号;
第三列 F(Function)表示该符号是函数,f(file)表示是一个文件名称,add.cpp是库的一个文件,O(Object)表示是目标名,D(Dynamic)表示动态符号,动态符号简单可以理解为动态库导出的符号;
第四列表示符号所属的段,*UND*(undefine)表示该符号在该文件中未定义,是引用的其他地方的。__gmon_start__是引用的其他库的函数,在本库中未定义。Add则是本库定义的函数。

本文测试代码:https://download.csdn.net/download/SimpleForest/89251966

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#word文档:3.向Word文档中插入表格/4.读取Word文档中表格

--向Word文档中插入表格-- (1)在OfficeOperator项目的WordOperator类中定义向Word文档插入换页的函数NewPage (2)在WordOperator类中定义向Word文档插入表格的函数InsertTable using Microsoft.Office.Interop.Word;// 引入Mic…

Ajax从入门到精通

AJAX无刷新交互 目录(单击跳转对应目录) 1.初步认识AJAX............................................................ 1 1.1AJAX原理和优点...................................................... 1 1.2实际使用..................................…

探索APP内测分发的全过程(APP开发)

什么是APP内测分发探索APP内测分发的全过程? APP内测分发是在应用程序开发过程中探索APP内测分发的全过程,开发者将应用程序的测试版或预发布版分发给特定用户进行测试、反馈和评估的一种方式。这是一个非常重要的环节,可以有效地提高应用的…

【右一的实操记录】全导航,持续更新...

文章目录 📚大数据管理与分析【实验】📚数据结构【实验】📚机器学习【实验】📚大数据安全【实验】📚信息检索【实验】📚爬虫【小实践】📚AIGC📚杂货铺 大部分是和电子笔记对应的实验…

详解SDRAM基本原理以及FPGA实现读写控制

文章目录 一、SDRAM简介二、SDRAM存取结构以及原理2.1 BANK以及存储单元结构2.2 功能框图2.3 SDRAM速度等级以及容量计算 三、SDRAM操作命令3.1 禁止命令: 4b1xxx3.2 空操作命令:4b01113.3 激活命令:4b00113.4 读命令:4b01013.5 写…

mac如何打开exe文件?如何mac运行exe文件 如何在Mac上打开/修复/恢复DMG文件

在macOS系统中,无法直接运行Windows系统中的.exe文件,因为macOS和Windows使用的是不同的操作系统。然而,有时我们仍然需要运行.exe文件,比如某些软件只有Windows版本,或者我们需要在macOS系统中运行Windows程序。 虽然…

如何安全的使用密码登录账号(在不知道密码的情况下)

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,进入账号密码模块,如图 2、看到鼠标移动到密码那一栏有提示,按住Ctrl或者Alt点击或者双击就能复制内容&…

初识Vue-组件化开发(详解各个组件)

目录 一、组件介绍 1.概念 2.特点 3.作用 4.应用 5.分类 二、组件语法 1.定义挂载vue应用 2.注册全局组件 实例 1.自定义组件 2.计数器 3.组件的复用 4.局部组件 实例 5.Prop 6.动态Prop 7.Prop 验证 三、创建组件的关键概念和语法 1. 组件定义 2. 组件选…

mybatis批量保存工具类实用

一、代码 import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemp…

正版Office-Word使用时却提示无网络连接请检查你的网络设置 然后重试

这是购买电脑时自带的已经安装好的word。看纸箱外壳有office标记,但是好像没有印系列号。 某天要使用。提示:无网络连接请检查你的网络设置。 经过网上高手的提示: 说要勾选勾选ssl3.0、TLS1.0、1.1、1.2。 我的截图 我电脑进去就缺1.2. …

PCIe总线-MPS MRRS RCB参数介绍(四)

1.概述 PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载,即Data Payload。Data Payload的长度和MPS(Max Payload Size)、MRRS(Max Read Request Size)和RCB(Read Completion Boundary&#xff0…

PostgreSQL的pg_archivecleanup工具

PostgreSQL的pg_archivecleanup工具 pg_archivecleanup 是 PostgreSQL 中用于管理 WAL(Write-Ahead Logging)归档目录的工具。在使用基于归档的日志复制或持久化存储时,pg_archivecleanup 用来清理那些不再需要的归档日志文件,帮…

vue中的数据共享场景和数据共享方法总结

1、数据共享场景有哪些 页面之间共享数据: 不同页面之间需要共享数据时,可以通过 Vuex 状态管理库或路由参数等方式进行数据传递。例如,在路由参数中传递数据或将数据存储在 Vuex 中,在不同页面间进行数据交换。页面和组件之间共…

C++ 抽象机制

抽象机制 1. 虚函数 使用关键字virtual 声明的函数,意思是可能随后在其派生类中重新定义。 纯虚函数 在声明的末尾使用0 的函数,说明是纯虚函数。 抽象类 含有纯虚函数多的类称为抽象类(abstract class). 多态类型 如果一个类负责为其他一些类提供接…

unity入门——按钮点击了却无法调用函数

查阅了一番都没有解决问题,最后发现问题是由button的Onclick()事件绑定了代码脚本而不是游戏对象导致的。 如果Onclick()事件绑定的是代码脚本,则下拉框里没有函数,但是点击MonoScript后能手动填入函数名(本以为这样就能实现调用…

State.initState() must be a void method without an `async` keyword错误解析

文章目录 报错问题报错的代码 错误原因解决方法解析 另外的方法 报错问题 State.initState() must be a void method without an async keyword如下图: 报错的代码 报错的代码如下: overridevoid initState() async{super.initState();await getConf…

openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__

文章目录 openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__概述笔记验证是否__FILE__在release版下也能用?将openssl编译成release版的,看看CRYPTO_free()是否只需要一个参数就行?将工程中的openssl相关的库换…

重定义大语言模型的记忆能力:对抗性压缩如何挑战现有测量法

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! Rethinking LLM Memorization through the Lens of Adversarial Compression 引言:探索大型语言模型的记忆能力 在当今信息时代,大型…

Window(Qt/Vs)软件添加版本信息

Window(Qt/Vs)软件添加版本信息 文章目录 Window(Qt/Vs)软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…

React 中使用 TS

目录 1,搭建项目2,tsconfig.json 相关配置项1, lib2,module3,jsx 3,在 React 中使用 TS3.1,TS 可以解决的问题3,2,函数式组件3.3,类组件3.4,Props 的默认值方…