I want to get the disassebled binary files with source line and file name. I have added option -g as a compilation option,following is the setting in cmake files.
SET(CMAKE_CXX_COMPILER "/home/desword/gcc-linaro-arm-linux-gnueabihf-4.8/bin/arm-linux-gnueabihf-g++")
SET(CMAKE_CXX_FLAGS "-std=c++11 -s -g")
And following is my objdump bash script:
objdump=/home/desword/gcc-linaro-arm-linux-gnueabihf-4.8/bin/arm-linux-gnueabihf-objdump
$objdump -dl bin/main > bin/asmmain2.txt
From the instructions, I should have a asm file with source line and file name just as https://manpages.debian.org/testing/binutils-arm-linux-gnueabihf/arm-linux-gnueabihf-objdump.1.en.html
it says:
–line-numbers Label the display (using debugging information) with the filename and source line numbers corresponding to the object code or relocs shown. Only useful with -d, -D, or -r.
However, I just got the file like the following:
0002092c <_ZN3PRU15gpioNumToPruMapEh>:
2092c: b580 push {r7, lr}
2092e: b082 sub sp, #8
20930: af00 add r7, sp, #0
20932: 6078 str r0, [r7, #4]
20934: 460b mov r3, r1
20936: 70fb strb r3, [r7, #3]
20938: 78fb ldrb r3, [r7, #3]
2093a: 3b07 subs r3, #7
2093c: 2b6e cmp r3, #110 ; 0x6e
2093e: f200 8119 bhi.w 20b74 <_ZN3PRU15gpioNumToPruMapEh+0x248>
20942: a201 add r2, pc, #4 ; (adr r2, 20948 <_ZN3PRU15gpioNumToPruMapEh+0x1c>)
20944: f852 f023 ldr.w pc, [r2, r3, lsl #2]
20948: 0b15 lsrs r5, r2, #12
2094a: 0002 movs r2, r0
2094c: 0b75 lsrs r5, r6, #13
2094e: 0002 movs r2, r0
20950: 0b75 lsrs r5, r6, #13
20952: 0002 movs r2, r0
THere are no source line and file name. In expectation, I want get the file like this:
000003f6 <LedsP__Init__init>:
LedsP__Init__init():
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:56
3f6: cf 93 push r28
3f8: df 93 push r29
3fa: cd b7 in r28, 0x3d ; 61
3fc: de b7 in r29, 0x3e ; 62
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:59
3fe: 0e 94 10 02 call 0x420 ; 0x420 <LedsP__Led0__makeOutput>
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:60
402: 0e 94 27 02 call 0x44e ; 0x44e <LedsP__Led1__makeOutput>
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:61
406: 0e 94 3e 02 call 0x47c ; 0x47c <LedsP__Led2__makeOutput>
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:62
40a: 0e 94 55 02 call 0x4aa ; 0x4aa <LedsP__Led0__set>
/home/desword/tinyos-main-2_1_2/tos/system/LedsP.nc:63
Anyone can help me! thanks!
Advertisement
Answer
SET(CMAKE_CXX_FLAGS "-std=c++11 -s -g")
Try remove the -s
switch, which strip away information. It works for me.