summaryrefslogtreecommitdiff
path: root/gas/symbols.c
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@nildram.co.uk>2010-12-02 13:25:12 +0000
committerRichard Sandiford <rsandifo@nildram.co.uk>2010-12-02 13:25:12 +0000
commit0d1ec319642e4ffaf690b45c7956b2f69677f7b1 (patch)
tree3fa8c9ac99137e5f204d58d45b835ad63f7f8cd0 /gas/symbols.c
parentb30a98ba0b3ba0e37e67acf53fcd3da3037dff56 (diff)
downloadbinutils-redhat-0d1ec319642e4ffaf690b45c7956b2f69677f7b1.tar.gz
gas/
* symbols.c (S_FORCE_RELOC): Return true for indirect functions even if !strict. * expr.c (operand): Don't convert absolute symbols to constants if S_FORCE_RELOC is true. (expr): Only reduce subtractions between different symbols if S_FORCE_RELOC is false for both of them. * write.c (fixup_segment): Don't remove symbols if S_FORCE_RELOC is true for them, regardless of their segment. gas/testsuite/ * gas/i386/ifunc-2.s, gas/i386/ifunc-2.l: New test. * gas/i386/ifunc-3.s, gas/i386/ifunc-3.d: Likeise. * gas/i386/i386.exp: Run them.
Diffstat (limited to 'gas/symbols.c')
-rw-r--r--gas/symbols.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gas/symbols.c b/gas/symbols.c
index 5fae5471b1..4e4ad775b3 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -2065,9 +2065,9 @@ 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->flags & BSF_GNU_INDIRECT_FUNCTION) != 0
|| s->bsym->section == undefined_section
|| bfd_is_com_section (s->bsym->section));
}