diff options
-rw-r--r-- | gas/ChangeLog | 11 | ||||
-rw-r--r-- | gas/config/tc-sparc.c | 6 |
2 files changed, 15 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 9191079..d4c5681 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +Mon Feb 19 14:16:24 1996 Ian Lance Taylor <ian@cygnus.com> + + * config/tc-sparc.h (TC_RELOC_RTSYM_LOC_FIXUP): Check S_IS_WEAK as + well as S_IS_EXTERNAL. + (tc_fix_adjustable): Likewise. + * config/tc-sparc.c (md_apply_fix): In OBJ_ELF case, check for + S_IS_WEAK as well as S_IS_EXTERNAL when deciding whether to return + early. + (tc_gen_reloc): Check S_IS_WEAK as wel as S_IS_EXTERNAL when + deciding whether to convert BFD_RELOC_32_PCREL_S2 if PIC. + Mon Feb 19 02:15:57 1996 Doug Evans <dje@charmed.cygnus.com> * config/tc-sparc.c (max_architecture): Change to sparclite for diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index a73ee7b..0cac1fe 100644 --- a/gas/config/tc-sparc.c +++ b/gas/config/tc-sparc.c @@ -1956,7 +1956,8 @@ md_apply_fix (fixP, value) don't want to include the value of an externally visible symbol. */ if (fixP->fx_addsy != NULL) { - if ((S_IS_EXTERN (fixP->fx_addsy) + if ((S_IS_EXTERNAL (fixP->fx_addsy) + || S_IS_WEAK (fixP->fx_addsy) || (sparc_pic_code && ! fixP->fx_pcrel)) && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section && S_GET_SEGMENT (fixP->fx_addsy) != undefined_section @@ -2216,7 +2217,8 @@ tc_gen_reloc (section, fixp) { case BFD_RELOC_32_PCREL_S2: if (! S_IS_DEFINED (fixp->fx_addsy) - || S_IS_EXTERNAL (fixp->fx_addsy)) + || S_IS_EXTERNAL (fixp->fx_addsy) + || S_IS_WEAK (fixp->fx_addsy)) code = BFD_RELOC_SPARC_WPLT30; break; case BFD_RELOC_HI22: |