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