aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog3
-rw-r--r--gas/config/tc-sparc.h21
2 files changed, 16 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 67ac762..6d4ca71 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,8 @@
Wed Feb 4 13:17:19 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: A reloc against
+ a gas internal symbol is adjustable.
+
* as.h: If gcc version greater than 2.6, use `__format__' and
`__printf__' in function attributes, rather than `format' and
`printf'.
diff --git a/gas/config/tc-sparc.h b/gas/config/tc-sparc.h
index cea036d..5b731a0 100644
--- a/gas/config/tc-sparc.h
+++ b/gas/config/tc-sparc.h
@@ -114,14 +114,16 @@ extern void sparc_handle_align PARAMS ((struct frag *));
relocations against sections. This is required for the dynamic
linker to operate properly. When generating PIC, we need to keep
any non PC relative reloc. */
-#define tc_fix_adjustable(FIX) \
- (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
- && ! S_IS_WEAK ((FIX)->fx_addsy) \
- && (! sparc_pic_code \
- || (FIX)->fx_pcrel \
- || ((FIX)->fx_subsy != NULL \
- && (S_GET_SEGMENT ((FIX)->fx_subsy) \
- == S_GET_SEGMENT ((FIX)->fx_addsy)))))
+#define tc_fix_adjustable(FIX) \
+ (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
+ && ! S_IS_WEAK ((FIX)->fx_addsy) \
+ && (! sparc_pic_code \
+ || (FIX)->fx_pcrel \
+ || ((FIX)->fx_subsy != NULL \
+ && (S_GET_SEGMENT ((FIX)->fx_subsy) \
+ == S_GET_SEGMENT ((FIX)->fx_addsy))) \
+ || strchr (S_GET_NAME ((FIX)->fx_addsy), '\001') != NULL \
+ || strchr (S_GET_NAME ((FIX)->fx_addsy), '\002') != NULL))
#endif
#ifdef OBJ_AOUT
@@ -134,6 +136,9 @@ extern void sparc_handle_align PARAMS ((struct frag *));
|| (FIX)->fx_r_type == BFD_RELOC_32)
#endif
+#define elf_tc_final_processing sparc_elf_final_processing
+extern void sparc_elf_final_processing PARAMS ((void));
+
#define md_operand(x)
extern void sparc_md_end PARAMS ((void));