diff options
Diffstat (limited to 'gas/config/tc-i386.c')
-rw-r--r-- | gas/config/tc-i386.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 606d16b..aa2ec54 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4801,9 +4801,13 @@ md_apply_fix3 (fixP, valP, seg) } #endif #if defined (OBJ_COFF) && defined (TE_PE) - /* For some reason, the PE format does not store a section - address offset for a PC relative symbol. */ - if (S_GET_SEGMENT (fixP->fx_addsy) != seg) + /* For some reason, the PE format does not store a + section address offset for a PC relative symbol. */ + if (S_GET_SEGMENT (fixP->fx_addsy) != seg +#if defined(BFD_ASSEMBLER) || defined(S_IS_WEAK) + || S_IS_WEAK (fixP->fx_addsy) +#endif + ) value += md_pcrel_from (fixP); #endif } @@ -5378,11 +5382,6 @@ tc_gen_reloc (section, fixp) rel->address = fixp->fx_frag->fr_address + fixp->fx_where; -#ifdef TE_PE - if (S_IS_WEAK (fixp->fx_addsy)) - rel->addend = rel->address - (*rel->sym_ptr_ptr)->value + 4; - else -#endif if (!use_rela_relocations) { /* HACK: Since i386 ELF uses Rel instead of Rela, encode the |