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:
Alan Modra 2009-07-29 06:22:13 +00:00
parent 9384511500
commit af65af87c0
4 changed files with 10 additions and 12 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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