This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Relaxations vs debug info
- From: Senthil Kumar Selvaraj <senthilkumar dot selvaraj at microchip dot com>
- To: James Bowman <james dot bowman at ftdichip dot com>
- Cc: "gdb at sourceware dot org" <gdb at sourceware dot org>
- Date: Wed, 15 Mar 2017 11:24:25 +0530
- Subject: Re: Relaxations vs debug info
- Authentication-results: sourceware.org; auth=none
- References: <2BB0A51F073B384698CACFD1D5A30FCC24F429@glaexch3>
James Bowman writes:
> I am working on some linker relaxations for my target, using existing
> relaxation implementations as my pattern.
>
> Everything seems to be working: relaxations are being applied, for example
> relaxation reduces the size of function foo from 0x48 to 0x38 bytes.
> Checking symbols, it looks good:
>
> $ ft32-elf-objdump -t a.out | grep foo
> 0000033c g F .text 00000038 foo
>
> However when I look at the debug info (objdump -g) I see that the size is still 0x48:
>
> <a1d> DW_AT_name : foo
> <a21> DW_AT_decl_file : 1
> <a22> DW_AT_decl_line : 51
> <a23> DW_AT_prototyped : 1
> <a23> DW_AT_type : <0x5d>
> <a27> DW_AT_low_pc : 0x33c
> <a2b> DW_AT_high_pc : 0x48
>
> Unsurprisingly this confuses gdb.
>
> My question is: in relaxation, how does the gdb info get adjusted?
1. Are you seeing relocs at the offsets for ow_pc and high_pc in the
debug_info section?
2. When relaxing, are you adjusting reloc values in debug sections as well?
If the reloc value is sym + addend, and if the relaxation occurs between
sym and addend, you'd obviously need to adjust the addend downwards.
Regards
Senthil