* write.c (fixup_segment): Only perform the subtraction of an

fx_subsy symbol if MD_APPLY_SYM_VALUE allows it and the symbol is
	properly defined.
	* config/tc-msp430.h (MD_APPLY_SYM_VALUE): Define.
This commit is contained in:
Nick Clifton 2012-07-02 07:35:06 +00:00
parent fb7b5af43f
commit 586ec8c1d0
3 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2012-07-02 Nick Clifton <nickc@redhat.com>
* write.c (fixup_segment): Only perform the subtraction of an
fx_subsy symbol if MD_APPLY_SYM_VALUE allows it and the symbol is
properly defined.
* config/tc-msp430.h (MD_APPLY_SYM_VALUE): Define.
2012-06-30 Alan Modra <amodra@gmail.com>
PR gas/14315

View File

@ -73,6 +73,8 @@
and define `md_create_long_jump' to create a long jump. */
#define MD_APPLY_FIX3
/* Values passed to md_apply_fix don't include symbol values. */
#define MD_APPLY_SYM_VALUE(FIX) 0
#define TC_HANDLES_FX_DONE

View File

@ -1004,12 +1004,7 @@ 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))
/* 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
else if (!TC_VALIDATE_FIX_SUB (fixP, add_symbol_segment))
{
if (!md_register_arithmetic
&& (add_symbol_segment == reg_section
@ -1024,6 +1019,10 @@ fixup_segment (fixS *fixP, segT this_segment)
S_GET_NAME (fixP->fx_subsy),
segment_name (sub_symbol_segment));
}
else if (sub_symbol_segment != undefined_section
&& ! bfd_is_com_section (sub_symbol_segment)
&& MD_APPLY_SYM_VALUE (fixP))
add_number -= S_GET_VALUE (fixP->fx_subsy);
}
if (fixP->fx_addsy)