This fixes a bootstrapping problem with gcc 4.9 in an x86 PE environment.

The problem was that references to weak function symbols were being
incorrectly biased by definition's offset.

	PR gas/16858
	* config/tc-i386.c (md_apply_fix): Do not adjust value of
	pc-relative fixes against weak symbols.
This commit is contained in:
Nick Clifton 2014-04-28 14:32:59 +01:00
parent 2b577b92f0
commit f01c1a090e
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2014-04-28 Nick Clifton <nickc@redhat.com>
PR gas/16858
* config/tc-i386.c (md_apply_fix): Do not adjust value of
pc-relative fixes against weak symbols.
2014-04-26 Alan Modra <amodra@gmail.com>
* po/POTFILES.in: Regenerate.

View File

@ -9146,7 +9146,10 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
#endif
}
#if defined (OBJ_COFF) && defined (TE_PE)
if (fixP->fx_addsy != NULL && S_IS_WEAK (fixP->fx_addsy))
if (fixP->fx_addsy != NULL
&& S_IS_WEAK (fixP->fx_addsy)
/* PR 16858: Do not modify weak function references. */
&& ! fixP->fx_pcrel)
{
value -= S_GET_VALUE (fixP->fx_addsy);
}