GNU Binutils之objdump

2024-04-23 02:38
文章标签 gnu objdump binutils

本文主要是介绍GNU Binutils之objdump,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GNU Binutils之objdump

                                                                    作者:makethyme

 

格式如下:
objdump [‘-a’|‘--archive-headers’]
[‘-b’ bfdname|‘--target=bfdname’]
[‘-C’|‘--demangle’[=style] ]
[‘-d’|‘--disassemble’]
[‘-D’|‘--disassemble-all’]
[‘-z’|‘--disassemble-zeroes’]
[‘-EB’|‘-EL’|‘--endian=’{big | little }]
[‘-f’|‘--file-headers’]
[‘--file-start-context’]
[‘-g’|‘--debugging’]
[‘-e’|‘--debugging-tags’]
[‘-h’|‘--section-headers’|‘--headers’]
[‘-i’|‘--info’]
[‘-j’ section|‘--section=’section]
[‘-l’|‘--line-numbers’]
[‘-S’|‘--source’]
[‘-m’ machine|‘--architecture=’machine]
[‘-M’ options|‘--disassembler-options=’options]
[‘-p’|‘--private-headers’]
[‘-r’|‘--reloc’]
[‘-R’|‘--dynamic-reloc’]
[‘-s’|‘--full-contents’]
[‘-W’|‘--dwarf’]
[‘-G’|‘--stabs’]
[‘-t’|‘--syms’]
[‘-T’|‘--dynamic-syms’]
[‘-x’|‘--all-headers’]
[‘-w’|‘--wide’]
[‘--start-address=’address]
[‘--stop-address=’address]
[‘--prefix-addresses’]
[‘--[no-]show-raw-insn’]
[‘--adjust-vma=’offset]
[‘--special-syms’]
[‘-V’|‘--version’]
[‘-H’|‘--help’]
objfile...
 

选项如下:

  

选项
Desc
-a
--archive-header
有库文件时,显示库文件的头信息。即显示该库文件由那些什么格式的目标文件组成
-b bfdname
--target=bfdname
指定目标文件的格式
-C
--demangle[=style]
将低级符号名解析成用户级符号名。这样可以使 C++ 函数具有可读性。例如 00000000 T _ZN6MyTest3sumEii 被解析成 00000000 T MyTest::sum(int, int) 。这样一来这样的符号便具有可读性
-g
--debugging
显示目标文件的调试信息
-d
--disassemble
反汇编含代码的段
-D
--disassemble-all
反汇编所有的段
-EB
-EL
--endian={big|little}
指定目标文件的 endian
-f
--file-headers
显示目标文件的头信息
-h
--section-headers
--headers
显示目标文件的 section headers 。注意,在链接的过程中,会传递 -Ttext -Tdata -Tbss 选项给链接器,以指定 text data bss 的具体地址。特别是在嵌入式系统开发过程中,常常需要指定这些地址。
-i
--info
显示支持的 bfdname machine 。其中 bfdname 可以用作 -b bfdname machine 可用于 -m machine
-l
-line-numbers
配合 -d -D -r 选项,列出源文件和汇编代码之间的对应关系
-m machine
--architecture=machine
指定目标文件的 architecture
-p
--private-headers
显示属于该目标文件格式特有的一些信息,如:
vector.o:     file format elf32-m68hc12
private flags = 2:[abi=16-bit int, 64-bit double, cpu=HC12] [memory=flat]
-r
--reloc
显示 relocation entries 。如源文件为
int abc(int a, int b);
int sum(int a, int b)
{
   return abc(a,b);
}
查看 relocation entries ,便会发现有一个“ _abc ”的 entry
-R
--dynamic-reloc
查看文件的 dynamic relocation entries
-s
--full-contents
查看 section 的全部内容
-S
--source
反汇编时,将 source code 和汇编代码对应出来
--show-raw-insn
反汇编时,以 16 进制格式列出具体指令码
--no-show-raw-insn
反汇编时,不列出具体指令码
-t
--syms
列出 symbol table entries
-T
--dynamic-syms
列出 dynamic symbol table entries
-V
--version
列出 objdump 的版本号
-x
--all-headers
列出所有的头信息 header information ,该选项等同于 -a –f –h –p –r –t

 

 

这篇关于GNU Binutils之objdump的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927560

相关文章

G++(GNU C++)安装及使用(windows)

安装步骤: 1、下载 Cygnus 的G++编译器(http://www.claremontmckenna.edu/math/ALee/g++/full.exe),并保存到E盘(或其它任意盘),格式为E:full.exe。 2、直接运行该文件,可能需要十几分钟的时间(中间会有停顿甚至没有任何提示性图片或者符号,需要耐心等待哦)。       或者Win + R ,输入cmd,按Ent

GNU工具集和MinGW

GNU工具集         GNU工具集包含了一系列的基本工具和实用程序,这些工具为系统管理员、开发人员和普通用户提供了丰富的功能和工具支持。         许多开源软件和项目都依赖于GNU工具集提供的稳定和强大的功能,因此GNU工具集的发展与完善对整个开源社区都具有重要意义。通过GNU工具集,用户可以在命令行下完成各种任务,如文件操作、进程管理、编程开发等,为用户提供了强大的工具支持。

GNU的伪操作 (25)

这里主要是 对 GNU的 各个伪操作进行 详细的解释。 先来看着几个 伪操作。 .byte,  .short,  .long,  .quad , .float ,  这个是关于 字节的。 .string   .ascii 是关于字符串的。 这个字符串编译器是可以自动在末尾补0 的。 举例: val:         .word 0x11223344         m

GNU/Linux - Open函数使用的O_CLOEXEC flag

在 Linux 中,“O_CLOEXEC ”标志与 “open ”系统调用一起使用,用于指定在使用 “exec ”系列函数(如 “execve”、“execl ”等)执行新程序时,“open ”返回的文件描述符应自动关闭。 In Linux, the `O_CLOEXEC` flag is used with the `open` system call to specify that

Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc

这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如: /* When a reference to SYMBOL is encountered, the linker will emit awarning message MSG. *//* We want the .gnu.warning.SYMBOL section to be u

GNU/Linux - 进程关联的控制终端

Controlling terminal 在类 Unix 操作系统中,控制终端是与进程组相关联的终端设备,它控制着进程与终端输入和输出的交互。控制终端通常是启动进程的终端。它负责处理进程的输入(如键盘输入)和输出(如显示文本)。 A controlling terminal is the terminal device associated with a process

GNU/Linux - Linux kernel memory access

User space memory access from the Linux kernel An introduction to Linux memory and user space APIs By M. Jones 10 August 2010 Archive date: 2023-08-31 虽然字节可能是 Linux 中内存的最低可寻址单位,但页面才是内存的可管理抽

GNU 汇编语法基础

目录 一、引言 二、GNU 汇编基本结构 1.指令格式 2.注释 3. 段 三、寄存器和寻址方式 1.寄存器命名 2.寻址方式 四、指令集  1.数据传送指令 2.算术运算指令  3.逻辑运算指令 4.控制流指令  五、宏和函数  1.宏定义   2. 函数定义 六、总结   一、引言         在嵌入式系统开发和底层编程中,汇编语言是

ISO C++ 和 GNU C++ 的区别

C++ 的 ios 标准和 gnu 标准是两种编译器标准或模式,主要由编译器在编译 C++ 代码时所遵循的规范决定。它们之间的区别主要在于是否包含标准之外的扩展以及对特定功能的支持。 1. ISO C++ 标准 (-std=c++11, -std=c++14, -std=c++17, 等) 定义: ISO C++ 标准是由国际标准化组织 (ISO) 制定的 C++ 语言标准。每个标准版本如 C

GNU/Linux - RSYSLOG

Getting started with RSYSLOG in Linux 用于日志处理的 Rocket-fast 系统(rsyslog)是 Linux 中提供的一个系统实用程序,支持消息日志。它具有高性能、出色的安全性和模块化设计。这是一个非常有用的工具,可以接受来自各种来源的输入,并将其转换和存储到多个不同的目的地。 The Rocket-fast System for