aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-sparc.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-08-06 14:02:34 +0000
committerIan Lance Taylor <ian@airs.com>1999-08-06 14:02:34 +0000
commita1f2d7424f80826f1b8d4acd0e0a88c658cb82c6 (patch)
tree984c6db3aaa091bb977ee0bc8dd4939232e3fe23 /gas/config/tc-sparc.h
parent4f2860cafc0c098d1c3f1227d4d5e0f2a652ee33 (diff)
downloadgdb-a1f2d7424f80826f1b8d4acd0e0a88c658cb82c6.zip
gdb-a1f2d7424f80826f1b8d4acd0e0a88c658cb82c6.tar.gz
gdb-a1f2d7424f80826f1b8d4acd0e0a88c658cb82c6.tar.bz2
1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
* config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local non-adjustable symbols.
Diffstat (limited to 'gas/config/tc-sparc.h')
-rw-r--r--gas/config/tc-sparc.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/gas/config/tc-sparc.h b/gas/config/tc-sparc.h
index bf7b6f9..2435d72 100644
--- a/gas/config/tc-sparc.h
+++ b/gas/config/tc-sparc.h
@@ -127,18 +127,22 @@ extern int elf32_sparc_force_relocation PARAMS ((struct fix *));
#define tc_fix_adjustable(FIX) \
(! S_IS_EXTERNAL ((FIX)->fx_addsy) \
&& ! S_IS_WEAK ((FIX)->fx_addsy) \
- && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT10 \
- && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT13 \
- && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT22 \
- && (FIX)->fx_r_type != BFD_RELOC_SPARC_WPLT30 \
&& (FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \
&& (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \
&& (! sparc_pic_code \
- || (FIX)->fx_pcrel \
- || ((FIX)->fx_subsy != NULL \
- && (S_GET_SEGMENT ((FIX)->fx_subsy) \
- == S_GET_SEGMENT ((FIX)->fx_addsy))) \
- || S_IS_LOCAL ((FIX)->fx_addsy)))
+ || ((FIX)->fx_r_type != BFD_RELOC_HI22 \
+ && (FIX)->fx_r_type != BFD_RELOC_LO10 \
+ && (FIX)->fx_r_type != BFD_RELOC_SPARC13 \
+ && ((FIX)->fx_r_type != BFD_RELOC_32_PCREL_S2 \
+ || (S_IS_DEFINED ((FIX)->fx_addsy) \
+ && ! S_IS_COMMON ((FIX)->fx_addsy) \
+ && ! S_IS_EXTERNAL ((FIX)->fx_addsy) \
+ && ! S_IS_WEAK ((FIX)->fx_addsy))) \
+ && ((FIX)->fx_pcrel \
+ || ((FIX)->fx_subsy != NULL \
+ && (S_GET_SEGMENT ((FIX)->fx_subsy) \
+ == S_GET_SEGMENT ((FIX)->fx_addsy))) \
+ || S_IS_LOCAL ((FIX)->fx_addsy)))))
/* Finish up the entire symtab. */
#define tc_adjust_symtab() sparc_adjust_symtab ()