This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Relaxations vs debug info


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]