From 9e75421134a05366b5d987f1b6921d7afcf9325d Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 18 Sep 2000 12:36:03 +0000 Subject: [PATCH] * 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. --- gas/ChangeLog | 9 +++++++++ gas/config/tc-hppa.c | 8 +++++++- gas/config/tc-hppa.h | 4 ++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 486f9b2fe14..9494d8870e2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2000-09-18 Alan Modra + + * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow + subtraction of two syms without emitting a relocation. + + From David Huggins-Daines + * config/tc-hppa.c (hppa_force_relocation): Force relocations for + global or weak symbols. + 2000-09-15 Kazu Hirata * config/tc-h8300.h: Fix formatting. diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index c78d9132559..dcaae9bdad2 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 f8f9001f661..5a54f161a83 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. */ -- 2.30.2