diff options
author | Nick Clifton <nickc@redhat.com> | 2014-05-19 14:29:31 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2014-05-19 14:29:31 +0100 |
commit | 296a868924f2c47865676a04515135b03c024bcc (patch) | |
tree | 212bae25953eaf21a3e8d5a12cd14dfc5073fd82 /gas/config | |
parent | fb2c6e43b8699da2057e9e33fda09007f112393a (diff) | |
download | gdb-296a868924f2c47865676a04515135b03c024bcc.zip gdb-296a868924f2c47865676a04515135b03c024bcc.tar.gz gdb-296a868924f2c47865676a04515135b03c024bcc.tar.bz2 |
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.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 707ce59..341d100 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 |