韦东山Linux嵌入式课程社区
直播中

王春梅

8年用户 187经验值
私信 关注

lds脚本丢失调试信息

诸位前辈,我想请教一个问题。在编写裸机程序时,各个源文件都用gcc的-g -O0 -c选项编译,链接时用ld的默认lds脚本产生的elf文件包含了调试信息。但是如果用了自定义的lds脚本,elf里就没有调试信息了,这个问题有办法解决吗?
自定义lds脚本如下:
ENTRY(_start)
SECtiONS{   
    . = 0x00000000;
    .text ALIGN(4) : AT(0) {head.o  init.o nand.o}
    . = 0x30000000;
    _beginofrest = .;
    rest ALIGN(4) : AT(4096) { *.o  }
    _endofrest = .;
}

回帖(2)

时忠晨

2019-6-14 09:22:08
$ nm -a head.o显示包含了调试信息
00000000 t $a
00000078 t $d
00000000 n .ARM.attributes
00000000 b .bss
00000000 d .data
00000000 N .debug_abbrev
00000000 N .debug_aranges
00000000 N .debug_info
00000000 N .debug_line
00000000 t .text
00000000 T _start
00000060 t dead_loop
         U disable_watchdog
0000001c t handleFIQ
00000064 t handleIRQ
00000014 t handleNotused
00000008 t handleSWI
00000010 t handledataAbort
0000000c t handleprefetchAbort
00000004 t handleundef
         U init_led
00000044 t init_led_return
         U init_timer0
00000058 t init_timer0_return
         U int_handler
00000074 t int_return
         U load_nand_program_sdram
         U main
         U memory_setup
         U mpll_setup
00000020 t reset
举报

常小丽

2019-6-14 09:31:19
nm -a TestTimer.elf就显示没有调试信息了:
00000000 t .text
30000000 A _beginofrest
30000614 A _endofrest
00080000 T _stack
00000000 T _start
00000060 t dead_loop
00000190 T disable_watchdog
0000001c t handleFIQ
00000064 t handleIRQ
00000014 t handleNotused
00000008 t handleSWI
00000010 t handledataAbort
0000000c t handleprefetchAbort
00000004 t handleundef
00000000 a init.c
30000088 T init_led
00000044 t init_led_return
30000000 T init_timer0
00000058 t init_timer0_return
30000394 T int_handler
00000074 t int_return
00000000 a interrupt.c
00000638 T load_nand_program_sdram
300000e0 T main
00000000 a main.c
000001c8 T memory_setup
000001a0 T mpll_setup
00000000 a nand.c
00000548 T nand_read
00000524 T nand_reset
00000020 t reset
30000000 t rest
00000318 t s3c2440_nand_deselect_chip
000002c0 t s3c2440_nand_select_chip
000004ec t s3c2440_read_data
00000254 t s3c2440_wait_idle
00000388 t s3c2440_write_addr_lp
00000348 t s3c2440_write_cmd
00000678 t s3c2440nand
怎么样用自定义的lds脚本定义section的同时,仍能够在elf文件里包含调试信息呢?请前辈们不吝赐教啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分