* write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use

obj_fix_adjustable() and tc_fix_adjustable() to tell whether to
add a symbol's address.  Removed all target-specific #ifdefs that
used to accomplished the same.
* config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
This commit is contained in:
Alexandre Oliva 2000-08-18 18:45:05 +00:00
parent 2ac374c471
commit 021986386e
7 changed files with 41 additions and 9 deletions

View file

@ -1,3 +1,15 @@
2000-08-18 Alexandre Oliva <aoliva@redhat.com>
* write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use
obj_fix_adjustable() and tc_fix_adjustable() to tell whether to
add a symbol's address. Removed all target-specific #ifdefs that
used to accomplished the same.
* config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
* config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
2000-08-17 Kazu Hirata <kazu@hxi.com> 2000-08-17 Kazu Hirata <kazu@hxi.com>
* dwarf2dbg.c: Fix formatting. * dwarf2dbg.c: Fix formatting.

View file

@ -116,6 +116,10 @@
#define TC_FIX_TYPE PTR #define TC_FIX_TYPE PTR
#define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL) #define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL)
/* This arranges for gas/write.c to not apply a relocation if
obj_fix_adjustable() says it is not adjustable. */
#define TC_DONT_FIX_NON_ADJUSTABLE 1
#ifdef OBJ_ELF #ifdef OBJ_ELF
#include "write.h" /* For definition of fixS */ #include "write.h" /* For definition of fixS */
#define obj_fix_adjustable(fixP) arm_fix_adjustable (fixP) #define obj_fix_adjustable(fixP) arm_fix_adjustable (fixP)

View file

@ -38,6 +38,10 @@ struct fix;
type. The idea is that if the original type is already some kind of PIC type. The idea is that if the original type is already some kind of PIC
relocation, we leave it alone, otherwise we give it the desired type */ relocation, we leave it alone, otherwise we give it the desired type */
/* This arranges for gas/write.c to not apply a relocation if
tc_fix_adjustable() says it is not adjustable. */
#define TC_DONT_FIX_NON_ADJUSTABLE 1
#define tc_fix_adjustable(X) tc_i386_fix_adjustable(X) #define tc_fix_adjustable(X) tc_i386_fix_adjustable(X)
extern int tc_i386_fix_adjustable PARAMS ((struct fix *)); extern int tc_i386_fix_adjustable PARAMS ((struct fix *));

View file

@ -153,6 +153,10 @@ extern int i960_validate_fix PARAMS ((struct fix *, segT, symbolS **));
&& ! S_IS_COMMON ((FIX)->fx_addsy))) && ! S_IS_COMMON ((FIX)->fx_addsy)))
#endif #endif
/* This arranges for gas/write.c to not apply a relocation if
tc_fix_adjustable() says it is not adjustable. */
#define TC_DONT_FIX_NON_ADJUSTABLE 1
#ifndef OBJ_ELF #ifndef OBJ_ELF
#define tc_fix_adjustable(FIXP) ((FIXP)->fx_bsr == 0) #define tc_fix_adjustable(FIXP) ((FIXP)->fx_bsr == 0)
#else #else

View file

@ -173,6 +173,10 @@ while (0)
&& S_IS_DEFINED ((FIX)->fx_addsy) \ && S_IS_DEFINED ((FIX)->fx_addsy) \
&& ! S_IS_COMMON ((FIX)->fx_addsy))) && ! S_IS_COMMON ((FIX)->fx_addsy)))
/* This arranges for gas/write.c to not apply a relocation if
tc_fix_adjustable() says it is not adjustable. */
#define TC_DONT_FIX_NON_ADJUSTABLE 1
#define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X) #define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X)
extern int tc_m68k_fix_adjustable PARAMS ((struct fix *)); extern int tc_m68k_fix_adjustable PARAMS ((struct fix *));
#define elf_tc_final_processing m68k_elf_final_processing #define elf_tc_final_processing m68k_elf_final_processing

View file

@ -1,5 +1,5 @@
/* tc-v850.h -- Header file for tc-v850.c. /* tc-v850.h -- Header file for tc-v850.c.
Copyright (C) 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler. This file is part of GAS, the GNU Assembler.
@ -37,6 +37,10 @@
#define MD_APPLY_FIX3 #define MD_APPLY_FIX3
#define md_operand(x) #define md_operand(x)
/* This arranges for gas/write.c to not apply a relocation if
obj_fix_adjustable() says it is not adjustable. */
#define TC_DONT_FIX_NON_ADJUSTABLE 1
#define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP) #define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP)
#define TC_FORCE_RELOCATION(fixp) v850_force_relocation(fixp) #define TC_FORCE_RELOCATION(fixp) v850_force_relocation(fixp)
extern int v850_force_relocation PARAMS ((struct fix *)); extern int v850_force_relocation PARAMS ((struct fix *));

View file

@ -2706,17 +2706,17 @@ fixup_segment (fixP, this_segment_type)
else else
{ {
seg_reloc_count++; seg_reloc_count++;
#if !(defined (TC_V850) && defined (OBJ_ELF)) #ifdef TC_DONT_FIX_NON_ADJUSTABLE
#if !(defined (TC_M68K) && defined (OBJ_ELF)) if (1
#if !(defined (TC_ARM) && defined (OBJ_ELF)) #ifdef obj_fix_adjustable
#if !(defined (TC_I960) && defined (OBJ_ELF)) && obj_fix_adjustable (fixP)
#if !defined (TC_I386) || !(defined (OBJ_ELF) || defined (OBJ_COFF)) || defined (TE_PE) #endif
#ifdef tc_fix_adjustable
&& tc_fix_adjustable (fixP)
#endif
)
#endif
add_number += S_GET_VALUE (add_symbolP); add_number += S_GET_VALUE (add_symbolP);
#endif
#endif
#endif
#endif
#endif
} }
} }
} }