PR ld/10269
* symbols.c (S_FORCE_RELOC): True for BSF_GNU_INDIRECT_FUNCTION. * config/tc-i386.c: Revert 2009-06-13 change. * config/tc-i386.h: Likewise.
This commit is contained in:
parent
9384511500
commit
af65af87c0
@ -1,3 +1,10 @@
|
||||
2009-07-29 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR ld/10269
|
||||
* symbols.c (S_FORCE_RELOC): True for BSF_GNU_INDIRECT_FUNCTION.
|
||||
* config/tc-i386.c: Revert 2009-06-13 change.
|
||||
* config/tc-i386.h: Likewise.
|
||||
|
||||
2009-07-28 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
* expr.c (op_rank): Specify size. Remove O_md* initializers.
|
||||
|
@ -2566,10 +2566,6 @@ tc_i386_fix_adjustable (fixS *fixP ATTRIBUTE_UNUSED)
|
||||
|| fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|
||||
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
||||
return 0;
|
||||
|
||||
if (fixP->fx_addsy != NULL
|
||||
&& symbol_get_bfdsym (fixP->fx_addsy)->flags & BSF_GNU_INDIRECT_FUNCTION)
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@ -7368,7 +7364,7 @@ md_apply_fix (fixP, valP, seg)
|
||||
if ((sym_seg == seg
|
||||
|| (symbol_section_p (fixP->fx_addsy)
|
||||
&& sym_seg != absolute_section))
|
||||
&& !TC_FORCE_RELOCATION (fixP))
|
||||
&& !generic_force_reloc (fixP))
|
||||
{
|
||||
/* Yes, we add the values in twice. This is because
|
||||
bfd_install_relocation subtracts them out again. I think
|
||||
|
@ -143,12 +143,6 @@ extern int tc_i386_fix_adjustable (struct fix *);
|
||||
(OUTPUT_FLAVOR == bfd_target_elf_flavour)
|
||||
#endif
|
||||
|
||||
/* BSF_GNU_INDIRECT_FUNCTION symbols always need relocatoon. */
|
||||
#define TC_FORCE_RELOCATION(FIX) \
|
||||
((symbol_get_bfdsym ((FIX)->fx_addsy)->flags \
|
||||
& BSF_GNU_INDIRECT_FUNCTION) \
|
||||
|| generic_force_reloc (FIX))
|
||||
|
||||
/* This expression evaluates to true if the relocation is for a local
|
||||
object for which we still want to do the relocation at runtime.
|
||||
False if we are willing to perform this relocation while building
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* symbols.c -symbol table-
|
||||
Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
@ -2053,6 +2053,7 @@ S_FORCE_RELOC (symbolS *s, int strict)
|
||||
|
||||
return ((strict
|
||||
&& ((s->bsym->flags & BSF_WEAK) != 0
|
||||
|| (s->bsym->flags & BSF_GNU_INDIRECT_FUNCTION) != 0
|
||||
|| (EXTERN_FORCE_RELOC
|
||||
&& (s->bsym->flags & BSF_GLOBAL) != 0)))
|
||||
|| s->bsym->section == undefined_section
|
||||
|
Loading…
Reference in New Issue
Block a user