gas/
commit0d1ec319642e4ffaf690b45c7956b2f69677f7b1
authorRichard Sandiford <rsandifo@nildram.co.uk>
Thu, 2 Dec 2010 13:25:12 +0000 (2 13:25 +0000)
committerRichard Sandiford <rsandifo@nildram.co.uk>
Thu, 2 Dec 2010 13:25:12 +0000 (2 13:25 +0000)
tree3fa8c9ac99137e5f204d58d45b835ad63f7f8cd0
parentb30a98ba0b3ba0e37e67acf53fcd3da3037dff56
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.
gas/ChangeLog
gas/expr.c
gas/symbols.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/ifunc-2.l [new file with mode: 0644]
gas/testsuite/gas/i386/ifunc-2.s [new file with mode: 0644]
gas/testsuite/gas/i386/ifunc-3.d [new file with mode: 0644]
gas/testsuite/gas/i386/ifunc-3.s [new file with mode: 0644]
gas/write.c