aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2002-04-09 16:48:03 +0000
committerJoern Rennecke <joern.rennecke@embecosm.com>2002-04-09 16:48:03 +0000
commit5bcd00a60aef50165fe80e709b9ddfaea87ffaaa (patch)
treec6ae43ea932582a82af8d9d6f8fe124b2f247330
parent05793179d738977110d19fda9fd1b336ad4950e9 (diff)
downloadgdb-5bcd00a60aef50165fe80e709b9ddfaea87ffaaa.zip
gdb-5bcd00a60aef50165fe80e709b9ddfaea87ffaaa.tar.gz
gdb-5bcd00a60aef50165fe80e709b9ddfaea87ffaaa.tar.bz2
* config/tc-sh.h (TC_FIX_ADJUSTABLE): Disable adjusting if
symbol_used_in_reloc_p is true.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-sh.h7
2 files changed, 10 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2cad825..94abdd9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,4 +1,7 @@
-Tue Apr 9 15:17:53 2002 J"orn Rennecke <joern.rennecke@superh.com>
+Tue Apr 9 16:45:48 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * config/tc-sh.h (TC_FIX_ADJUSTABLE): Disable adjusting if
+ symbol_used_in_reloc_p is true.
* config/tc-sh.c (md_apply_fix3): Don't zero relocations on big
endian hosts.
diff --git a/gas/config/tc-sh.h b/gas/config/tc-sh.h
index 7d9214a..313ac88 100644
--- a/gas/config/tc-sh.h
+++ b/gas/config/tc-sh.h
@@ -68,7 +68,12 @@ extern boolean sh_fix_adjustable PARAMS ((struct fix *));
/* This arranges for gas/write.c to not apply a relocation if
obj_fix_adjustable() says it is not adjustable. */
-#define TC_FIX_ADJUSTABLE(fixP) obj_fix_adjustable (fixP)
+/* ??? fixups with symbols in SEC_MERGE sections are marked with
+ obj_fix_adjustable and have a non-section symbol, as in
+ "vwxyz"+1 in execute/string-opt-6.c . Maybe the test of
+ (symbol_used_in_reloc_p should be done in the machine-independent code. */
+#define TC_FIX_ADJUSTABLE(fixP) \
+ (! symbol_used_in_reloc_p (fixP->fx_addsy) && obj_fix_adjustable (fixP))
#endif
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)