From: Nick Clifton Date: Mon, 19 May 2014 13:29:31 +0000 (+0100) Subject: Extend the fix already created for PR 16858 so that it works with x86 PE targets... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=296a868924f2c47865676a04515135b03c024bcc;p=binutils-gdb.git Extend the fix already created for PR 16858 so that it works with x86 PE targets as well. PR gas/16858 * config/tc-i386.c (md_apply_fix): Improve the detection of code symbols for 32-bit PE targets. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 22435700091..26cef7ff9dd 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2014-05-19 Nick Clifton + + PR gas/16858 + * config/tc-i386.c (md_apply_fix): Improve the detection of code + symbols for 32-bit PE targets. + 2014-05-18 Richard Sandiford * config/tc-mips.c (md_obj_begin): Delete. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 707ce59bc57..341d10068e9 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9151,6 +9151,16 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) /* PR 16858: Do not modify weak function references. */ && ! fixP->fx_pcrel) { +#if !defined (TE_PEP) + /* For x86 PE weak function symbols are neither PC-relative + nor do they set S_IS_FUNCTION. So the only reliable way + to detect them is to check the flags of their containing + section. */ + if (S_GET_SEGMENT (fixP->fx_addsy) != NULL + && S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_CODE) + ; + else +#endif value -= S_GET_VALUE (fixP->fx_addsy); } #endif