aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorMichael Meissner <gnu@the-meissners.org>1997-06-27 23:19:15 +0000
committerMichael Meissner <gnu@the-meissners.org>1997-06-27 23:19:15 +0000
commitd006e435275118ac736229dffd19874fee367f9f (patch)
treeaaafad748e820abe47b083053c1fb03df5d2abc8 /gas
parent3a8e858f24704fbd4493b8a7f98dfb0578768159 (diff)
downloadgdb-d006e435275118ac736229dffd19874fee367f9f.zip
gdb-d006e435275118ac736229dffd19874fee367f9f.tar.gz
gdb-d006e435275118ac736229dffd19874fee367f9f.tar.bz2
Remove brokeness in PowerPC asm
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-ppc.h27
2 files changed, 18 insertions, 14 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 08bab53..3aa7d8e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jun 27 19:15:27 1997 Michael Meissner <meissner@cygnus.com>
+
+ * config/tc-ppc.h (tc_fix_adjustable): Only check for GOT type
+ relocations, don't check for symbol being external, weak, etc.
+
Mon Jun 16 19:12:51 1997 Geoff Keating <geoffk@ozemail.com.au>
* config/tc-ppc.h (tc_fix_adjustable): Don't let the assembler
diff --git a/gas/config/tc-ppc.h b/gas/config/tc-ppc.h
index e8797a7..d21610c 100644
--- a/gas/config/tc-ppc.h
+++ b/gas/config/tc-ppc.h
@@ -190,6 +190,12 @@ extern void ppc_adjust_symtab PARAMS ((void));
#endif /* OBJ_XCOFF */
#ifdef OBJ_ELF
+/* The name of the global offset table generated by the compiler. Allow
+ this to be overridden if need be. */
+#ifndef GLOBAL_OFFSET_TABLE_NAME
+#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
+#endif
+
/* Branch prediction relocations must force relocation */
#define TC_FORCE_RELOCATION_SECTION(FIXP,SEC) \
((FIXP)->fx_r_type == BFD_RELOC_PPC_B16_BRTAKEN \
@@ -225,20 +231,13 @@ extern int ppc_section_flags PARAMS ((int, int, int));
#define tc_comment_chars ppc_comment_chars
extern const char *ppc_comment_chars;
-/* Keep relocations relative to the GOT, or non-PC relative. */
-#define tc_fix_adjustable(FIX) \
- ((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF && \
- (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF && \
- (FIX)->fx_r_type != BFD_RELOC_HI16_GOTOFF && \
- (FIX)->fx_r_type != BFD_RELOC_HI16_S_GOTOFF && \
- (FIX)->fx_r_type != BFD_RELOC_GPREL16 && \
- ! 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)))))
-
+/* Keep relocations relative to the GOT. */
+#define tc_fix_adjustable(FIX) \
+ ((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF \
+ && (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF \
+ && (FIX)->fx_r_type != BFD_RELOC_HI16_GOTOFF \
+ && (FIX)->fx_r_type != BFD_RELOC_HI16_S_GOTOFF \
+ && (FIX)->fx_r_type != BFD_RELOC_GPREL16)
#endif /* OBJ_ELF */
/* call md_apply_fix3 with segment instead of md_apply_fix */