objdump 符号表输出格式

 没找到objdump的输出格式解释的文档,只能自己猜测了。

objdump打印符号表的格式:

shenyan@ubuntu:~/Temp$ objdump -t a.o

a.o:     file format elf32-i386

SYMBOL TABLE:
00000000 l    df *ABS* 00000000 a.c
00000000 l    d  .text 00000000 .text
00000000 l    d  .data 00000000 .data
00000000 l    d  .bss 00000000 .bss
00000000 l    d  .note.GNU-stack 00000000 .note.GNU-stack
00000000 l    d  .comment 00000000 .comment
00000000 g     F .text 00000005 f_test
00000005 g     F .text 00000027 main
00000000         *UND* 00000000 shared
00000000         *UND* 00000000 swap

1.段内偏移

2.符号作用域

3.符号类型:

  d ?? 

  f 文件名

  F 函数名

4.符号所在段

    *UND*外部链接符号,未在本目标文件定义

5.符号对应的对象占据的内存空间大小,没有实体对象大小为0,未定义的为0

6. 符号名

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`objdump -t` 是一个用于查看目标文件符号的命令。它可以列出目标文件中的符号,包括函数、变量和常量等。 下面是 `objdump -t` 输出结果的解析: ``` 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 puts 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __libc_start_main 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __gmon_start__ 0000000000000000 w *UND* 0000000000000000 _ITM_deregisterTMCloneTable 0000000000000000 w *UND* 0000000000000000 __cxa_finalize 0000000000601038 g O .data 0000000000000008 global_variable 00000000004004d6 g F .text 000000000000001f main ``` 每一行的含义如下: - 第一列:符号的地址,可能是绝对地址或相对地址。 - 第二列:符号的类型。`w` 示弱符号(weak symbol),`g` 示全局符号(global symbol)。 - 第三列:符号的绑定类型。`U` 示未定义符号(undefined symbol),`T` 示文本段符号(text segment symbol),`D` 示数据段符号(data segment symbol)。 - 第四列:符号的大小,如果是函数则示代码段大小,如果是数据则示数据段大小。 - 第五列:符号的版本信息。 - 第六列:符号的名称。 例如,`main` 函数的符号信息为: ``` 00000000004004d6 g F .text 000000000000001f main ``` 它的地址为 `0x4004d6`,类型为 `g`(全局符号),绑定类型为 `F`(文本段符号),大小为 `0x1f`(代码段大小),版本信息为空,名称为 `main`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值