* dwarf2dbg.c (DWARF2_USE_FIXED_ADVANCE_PC): Enable when using

linker relaxation.
	(dwarf2_gen_line_info): Generate real, local, labels for line
	numbers.
	(dwarf2dbg_convert_frag): Do not finalize the computation of the
	frag's symbol value when linker relaxation is enabled.
	(ADDR_DELTA_LIMIT): Define.
	(size_fixed_inc_line_addr): Use ADDR_DELTA_LIMIT.
	(emit_fixed_inc_line_addr): Likewise.
	* write.c (fixup_segment): If the subtraction of two symbols
	cannot be resolved but is valid, then prevent bogus range warnings
	by pre-biasing add_number.
	* config/tc-h8300.h (DWARF2_USE_FIXED_ADVANCE_PC): Define to 0.

	* gas/lns/lns.exp: Use alternate lns-common test for targets
	enabling linker relaxation.
	* gas/lns/lns-big-delta.d: Allow for output from architectures
	with 32-bit addresses.
This commit is contained in:
Nick Clifton
2012-06-28 11:31:14 +00:00
parent 1d7975eb53
commit 453dc3f010
7 changed files with 69 additions and 9 deletions

View File

@@ -1004,7 +1004,12 @@ fixup_segment (fixS *fixP, segT this_segment)
fixP->fx_subsy = NULL;
fixP->fx_pcrel = 1;
}
else if (!TC_VALIDATE_FIX_SUB (fixP, add_symbol_segment))
else if (TC_VALIDATE_FIX_SUB (fixP, add_symbol_segment))
/* If the fix is valid, subtract fx_subsy here. The addition of
fx_addsy will be performed below. Doing this prevents bogus
warnings from the range check below. */
add_number -= S_GET_VALUE (fixP->fx_subsy);
else
{
if (!md_register_arithmetic
&& (add_symbol_segment == reg_section