From fdb3408e128813c85c87be37200e930ae5300781 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 4 Feb 1994 02:32:54 +0000 Subject: [PATCH] * config/tc-mips.c (md_apply_fix): If this is an undefined symbol, subtract the value from fx_addnumber to since bfd_perform_relocation is going to add it in. --- gas/ChangeLog | 6 ++++++ gas/config/tc-mips.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index 322fafa7bcd..305b19a259f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +Thu Feb 3 21:29:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * config/tc-mips.c (md_apply_fix): If this is an undefined symbol, + subtract the value from fx_addnumber to since + bfd_perform_relocation is going to add it in. + Wed Feb 2 13:55:08 1994 Jeffrey A. Law (law@snake.cs.utah.edu) * Makefile.in: Avoid bug in losing hpux sed. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index d99f2a11dea..1305857a380 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -4750,6 +4750,14 @@ md_apply_fix (fixP, valueP) value = *valueP; fixP->fx_addnumber = value; /* Remember value for tc_gen_reloc */ + /* bfd_perform_relocation is going to add in the symbol value. If + this is an external symbol, it will have a non-zero value, but we + do not want to add in. Therefore, we subtract it out of + fx_addnumber. FIXME: relocations in gas are very confusing. */ + if (fixP->fx_addsy != (symbolS *) NULL + && fixP->fx_addsy->ecoff_undefined) + fixP->fx_addnumber -= S_GET_VALUE (fixP->fx_addsy); + switch (fixP->fx_r_type) { case BFD_RELOC_32: -- 2.30.2