* write.c (fixup_segment): Do not assume we know the section a

defined weak symbol is in.
        * config/tc-arm.c (relax_adr, relax_branch, md_apply_fix): Treat
        weak symbols as not known to be in the same section, even if they
        are defined.

        * gas/arm/weakdef-1.s: New.
        * gas/arm/weakdef-1.d: New.
        * gas/arm/weakdef-2.s: New.
        * gas/arm/weakdef-2.d: New.
        * gas/arm/weakdef-2.l: New.
This commit is contained in:
Nick Clifton
2010-04-29 14:44:15 +00:00
parent c0643a5132
commit 77db8e2e96
9 changed files with 110 additions and 32 deletions

View File

@@ -992,7 +992,9 @@ fixup_segment (fixS *fixP, segT this_segment)
if (fixP->fx_addsy)
{
if (add_symbol_segment == this_segment
if (S_IS_WEAK (fixP->fx_addsy))
; // even if it is defined, it might be overridden later
else if (add_symbol_segment == this_segment
&& !TC_FORCE_RELOCATION_LOCAL (fixP))
{
/* This fixup was made when the symbol's segment was