DWARF updates for linker relaxation?
Bob Wilson
bwilson@tensilica.com
Fri Jul 28 23:28:00 GMT 2006
On Mon, 17 Jul 2006 at 14:32:46 -0700, Bob Wilson wrote:
> How do I make this work? It seems like the obvious approach is to have a hook
> in the assembler to make it use the generic "advance_pc" opcode instead of
> "special opcodes", with relocations on the address offset fields. The SH code
> mentioned above made me think there might already be code for this somewhere
> in the assembler, but I haven't found it.
>
> Any suggestions?
I didn't get any suggestions or pointers to existing code, so I came up with my
own solution for this. It allows a port to specify that DWARF line numbers
should be specified using the DW_LNS_fixed_advance_pc opcodes. This allows
linker relaxation to update the PC offsets, at the expense of slightly larger
.debug_line sections.
I tested this by building for both i686-pc-linux-gnu and xtensa-elf targets.
The testsuite passes with no regressions, except for one. For the xtensa-elf
target, the lns/lns-common-1 test fails because the expected dump file no longer
matches. Is there an easy way to specify an alternate expected dump file?
Otherwise, I guess I could skip this test for Xtensa targets.
Assuming I get that regression fixed, is this OK?
2006-07-28 Bob Wilson <bob.wilson@acm.org>
* dwarf2dbg.c (DWARF2_USE_FIXED_ADVANCE_PC): New.
(out_sleb128): New.
(out_fixed_inc_line_addr): New.
(process_entries): Use out_fixed_inc_line_addr when
DWARF2_USE_FIXED_ADVANCE_PC is set.
* config/tc-xtensa.h (DWARF2_USE_FIXED_ADVANCE_PC): Define.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dwarf-linkrelax.diff
URL: <https://sourceware.org/pipermail/binutils/attachments/20060728/dd502ab0/attachment.ksh>
More information about the Binutils
mailing list