mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 17:40:49 +00:00
Add SPARC ELF PIC support.
* write.c (fixup_segment): Pass fixP to TC_RELOC_RTSYM_LOC_FIXUP, not fixP->fx_r_type. * config/tc-sparc.c (sparc_pic_code): New global variable. (md_apply_fix): If generating PIC, adjust fx_addnumber for any non PC relative reloc. (tc_gen_reloc): If generating PIC, adjust various reloc types. Remove fx_pcrel assert, since it is no longer true. (md_parse_option): Handle -K PIC. * config/tc-sparc.h (sparc_pic_code): Declare if OBJ_ELF. (TC_RELOC_RTSYM_LOC_FIXUP): Define if OBJ_ELF. (tc_fix_adjustable): Don't adjust PC relative relocs if PIC. * config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Take a fixp, not a reloc type. PR 7131.
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
Fri Jul 7 11:17:27 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
Add SPARC ELF PIC support.
|
||||
* write.c (fixup_segment): Pass fixP to TC_RELOC_RTSYM_LOC_FIXUP,
|
||||
not fixP->fx_r_type.
|
||||
* config/tc-sparc.c (sparc_pic_code): New global variable.
|
||||
(md_apply_fix): If generating PIC, adjust fx_addnumber for any non
|
||||
PC relative reloc.
|
||||
(tc_gen_reloc): If generating PIC, adjust various reloc types.
|
||||
Remove fx_pcrel assert, since it is no longer true.
|
||||
(md_parse_option): Handle -K PIC.
|
||||
* config/tc-sparc.h (sparc_pic_code): Declare if OBJ_ELF.
|
||||
(TC_RELOC_RTSYM_LOC_FIXUP): Define if OBJ_ELF.
|
||||
(tc_fix_adjustable): Don't adjust PC relative relocs if PIC.
|
||||
* config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Take a fixp, not a
|
||||
reloc type.
|
||||
|
||||
* Makefile.in (Makefile): Add dependency on conf.in, so that conf
|
||||
is rebuilt when conf.in changes.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* tc-i386.h -- Header file for tc-i386.c
|
||||
Copyright (C) 1989, 1992 Free Software Foundation.
|
||||
Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
@@ -53,10 +53,10 @@
|
||||
checked here. I am not sure if some of the others are ever used with
|
||||
pcrel, but it is easier to be safe than sorry. */
|
||||
|
||||
#define TC_RELOC_RTSYM_LOC_FIXUP(X) \
|
||||
((X) != BFD_RELOC_386_PLT32 && \
|
||||
(X) != BFD_RELOC_386_GOT32 && \
|
||||
(X) != BFD_RELOC_386_GOTPC)
|
||||
#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
|
||||
((FIX)->fx_r_type != BFD_RELOC_386_PLT32 \
|
||||
&& (FIX)->fx_r_type != BFD_RELOC_386_GOT32 \
|
||||
&& (FIX)->fx_r_type != BFD_RELOC_386_GOTPC)
|
||||
|
||||
#define TARGET_ARCH bfd_arch_i386
|
||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* write.c - emit .o file
|
||||
Copyright (C) 1986, 87, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
|
||||
Copyright (C) 1986, 87, 90, 91, 92, 93, 94, 1995
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
@@ -2243,7 +2244,7 @@ fixup_segment (fixP, this_segment_type)
|
||||
if (add_symbolP)
|
||||
{
|
||||
if (add_symbol_segment == this_segment_type && pcrel && !plt
|
||||
&& TC_RELOC_RTSYM_LOC_FIXUP (fixP->fx_r_type))
|
||||
&& TC_RELOC_RTSYM_LOC_FIXUP (fixP))
|
||||
{
|
||||
/*
|
||||
* This fixup was made when the symbol's segment was
|
||||
|
||||
Reference in New Issue
Block a user