看了很多文档,都是对ELF文件中的调试信息格式一带而过,包括《Linker&Loader》中也没有详细介绍。
我想获取调试信息中的数据结构相关的信息,结构大小,每个变量的名称,大小等信息。
|
通过objdump的命令,例如:tmp.o是elf文件,objdump参数应该为--sym
1、dump出符号表,objdumpppc--symtmp.o>bootrom_sym.txt,内容如下:
tmp.o:fileformatelf32-powerpc
SYMBOLTABLE:
02c00000ld.text00000000
02ce7cc0ld.data00000000
02d0a1f0ld.bss00000000
00000000ld.PPC.EMB.apuinfo00000000
00000000ld*ABS*00000000
00000000ld*ABS*00000000
00000000ld*ABS*00000000
00000000ldf*ABS*00000000bootConfig.c
02ce7da8lO.data00000078netIf
02ce7e2clO.data00000004trapValue1
02ce7e30lO.data00000004trapValue2
02ce7f34lO.data00000044noticeChar.0
02d0a674lO.bss00000004noticeNum.1
02d0a678lO.bss00000004memTestRoundPass
02ce7f78lO.data00000004SEED_X
02ce7f7clO.data00000004SEED_Y
02ce7f80lO.data00000004a.2
02ce7f84lO.data00000004b.3
02c00184lF.text00000058memCheckRand
02c00200lF.text00000278movinv1
02c00478lF.text000001d8addr_tst1
02c00650lF.text00000184addr_tst2
02c007d4lF.text00000284modtst
02c00a58lF.text00000204movinvr
02c00c5clF.text00000340movinv32
02c00f9clF.text00000188bit_fade
02c01124lF.text000003bcenhancedMemCheckMainLoop
02c014e0lF.text000001d8patchVecBase
02c018a0lF.text00000184CheckRam
02c093a4lF.text000000c8usrBootLineInit
02c08840lF.text00000080go
.....................................................
2、dump出汇编,objdumpppc--disassembletmp.o>bootrom_asm.txt,内容如下:
tmp.o:fileformatelf32-powerpc
Disassemblyofsection.text:
02c00000:
2c00000:9421fff8stwur1,-8(r1)
2c00004:7c0802a6mflrr0
2c00008:9001000cstwr0,12(r1)
2c0000c:4cc63182crclr4*cr1+eq
2c00010:480016a9bl2c016b8
2c00014:8001000clwzr0,12(r1)
2c00018:38210008addir1,r1,8
2c0001c:7c0803a6mtlrr0
2c00020:4e800020blr
02c00024:
2c00024:9421fff8stwur1,-8(r1)
2c00028:7c0802a6mflrr0
2c0002c:9001000cstwr0,12(r1)
2c00030:48088809bl2c88838
2c00034:480c7bb9bl2cc7bec
2c00038:48097015bl2c9704c
2c0003c:480c4941bl2cc497c
2c00040:480c6549bl2cc6588
2c00044:480c5129bl2cc516c
2c00048:480c1fcdbl2cc
2c0004c:480ca9edbl2ccaa38
2c00050:480c2e19bl2cc2e68
2c00054:3ca002dblisr5,731
2c00058:3d2002cflisr9,719
2c0005c:80894a38lwzr4,19000(r9)
2c00060:3c6002dblisr3,731
2c00064:38c00100lir6,256
2c00068:38a5c614addir5,r5,-14828
2c0006c:3863b948addir3,r3,-18104
2c00070:4cc63182crclr4*cr1+eq
2c00074:480a124dbl2ca12c0
。。。。。。。。。。。
就这样,linux下面也有类似的工具。
如果觉得《c语言修改elf文件crc32 ELF文件中调试信息的格式说明?》对你有帮助,请点赞、收藏,并留下你的观点哦!