summaryrefslogtreecommitdiffstats
path: root/gas
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2000-09-18 12:36:03 +0000
committerAlan Modra <amodra@gmail.com>2000-09-18 12:36:03 +0000
commit9e75421134a05366b5d987f1b6921d7afcf9325d (patch)
tree5b1a9307de5f4cf72a7990eab2d217c6788dc689 /gas
parent25f7275229d72c4a5449a1dbb49c3a3de2a92536 (diff)
downloadppe42-binutils-9e75421134a05366b5d987f1b6921d7afcf9325d.tar.gz
ppe42-binutils-9e75421134a05366b5d987f1b6921d7afcf9325d.zip
* config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): For ELF, allow
subtraction of two syms without emitting a relocation. * config/tc-hppa.c (hppa_force_relocation): Force relocations for global or weak symbols.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/config/tc-hppa.c8
-rw-r--r--gas/config/tc-hppa.h4
3 files changed, 20 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 486f9b2fe1..9494d8870e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2000-09-18 Alan Modra <alan@linuxcare.com.au>
+
+ * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow
+ subtraction of two syms without emitting a relocation.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * config/tc-hppa.c (hppa_force_relocation): Force relocations for
+ global or weak symbols.
+
2000-09-15 Kazu Hirata <kazu@hxi.com>
* config/tc-h8300.h: Fix formatting.
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index c78d913255..dcaae9bdad 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -8416,9 +8416,15 @@ hppa_force_relocation (fixp)
return 1;
#endif
+ /* Ensure we emit a relocation for global symbols so that dynamic
+ linking works. */
+ if (fixp->fx_addsy && (S_IS_EXTERNAL (fixp->fx_addsy)
+ || S_IS_WEAK (fixp->fx_addsy)))
+ return 1;
+
/* It is necessary to force PC-relative calls/jumps to have a relocation
entry if they're going to need either a argument relocation or long
- call stub. FIXME. Can't we need the same for absolute calls? */
+ call stub. */
if (fixp->fx_pcrel && fixp->fx_addsy
&& (arg_reloc_stub_needed (symbol_arg_reloc_info (fixp->fx_addsy),
hppa_fixp->fx_arg_reloc)))
diff --git a/gas/config/tc-hppa.h b/gas/config/tc-hppa.h
index f8f9001f66..5a54f161a8 100644
--- a/gas/config/tc-hppa.h
+++ b/gas/config/tc-hppa.h
@@ -145,6 +145,10 @@ int hppa_fix_adjustable PARAMS((struct fix *));
#endif
#ifdef OBJ_ELF
+/* It's OK to subtract two symbols in the same section without
+ emitting a relocation. */
+#define TC_FORCE_RELOCATION_SECTION(FIXP, SEC) 0
+
/* Handle .type psuedo. Given a type string of `millicode', set the
internal elf symbol type to STT_PARISC_MILLI, and return
BSF_FUNCTION for the BFD symbol type. */
OpenPOWER on IntegriCloud