diff --git a/gas/ChangeLog b/gas/ChangeLog index 77e26bf1e2..549f446ba1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +1999-06-11 Martin Dorey + + * write.c (fixup_segment): Don't add symbol value for i960 ELF. + * config/tc-i960.c (s_leafproc): Don't call tc_set_bal_of_cal if + OBJ_ELF. + (md_apply_fix): Simplify BFD_ASSEMBLER handling. + 1999-06-11 Ian Lance Taylor * config/tc-i386.c (md_apply_fix3): Add default case to switch. diff --git a/gas/config/tc-i960.c b/gas/config/tc-i960.c index 60ae033091..d8c15c0991 100644 --- a/gas/config/tc-i960.c +++ b/gas/config/tc-i960.c @@ -2638,7 +2638,9 @@ s_leafproc (n_ops, args) } TC_S_FORCE_TO_BALNAME (balP); +#ifndef OBJ_ELF tc_set_bal_of_call (callP, balP); +#endif } /* if only one arg, or the args are the same */ } @@ -2863,34 +2865,13 @@ md_apply_fix (fixP, val) if (!fixP->fx_bit_fixP) { +#ifndef BFD_ASSEMBLER /* For callx, we always want to write out zero, and emit a symbolic relocation. */ if (fixP->fx_bsr) val = 0; -#ifdef OBJ_ELF - /* For ELF, we always emit relocations for external or weak - symbols. */ - if (fixP->fx_addsy != NULL - && (S_IS_EXTERNAL (fixP->fx_addsy) - || S_IS_WEAK (fixP->fx_addsy))) - val = 0; -#endif - fixP->fx_addnumber = val; - -#ifdef BFD_ASSEMBLER - /* HACK: With REL relocations this causes the offset in the code - to be doubled. - - Guess: val is the old offset in the code, addnumber gets - passed back to md_gen_reloc() where it gets assigned to - addend, which the backend then writes back to the code (as - we're using REL, not RELA relocations). COFF must be working - without this hack, but I don't see how or why. - - apeppere and martindo 22-10-1998. */ - fixP->fx_addnumber = 0; #endif md_number_to_imm (place, val, fixP->fx_size, fixP); diff --git a/gas/write.c b/gas/write.c index a8b8046413..cd74c702e9 100644 --- a/gas/write.c +++ b/gas/write.c @@ -2671,11 +2671,13 @@ fixup_segment (fixP, this_segment_type) #if !(defined (TC_V850) && defined (OBJ_ELF)) #if !(defined (TC_M68K) && defined (OBJ_ELF)) #if !(defined (TC_ARM) && defined (OBJ_ELF)) +#if !(defined (TC_I960) && defined (OBJ_ELF)) #if !defined (TC_I386) || !(defined (OBJ_ELF) || defined (OBJ_COFF)) || defined (TE_PE) add_number += S_GET_VALUE (add_symbolP); #endif #endif #endif +#endif #endif } }