diff options
author | Alan Modra <amodra@gmail.com> | 2000-09-18 12:36:03 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2000-09-18 12:36:03 +0000 |
commit | 9e75421134a05366b5d987f1b6921d7afcf9325d (patch) | |
tree | 5b1a9307de5f4cf72a7990eab2d217c6788dc689 /gas | |
parent | 25f7275229d72c4a5449a1dbb49c3a3de2a92536 (diff) | |
download | ppe42-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/ChangeLog | 9 | ||||
-rw-r--r-- | gas/config/tc-hppa.c | 8 | ||||
-rw-r--r-- | gas/config/tc-hppa.h | 4 |
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. */ |