Fix improper handling of R_SPARC_GOTDATA_OP_LOX10 relocation.
authorJames Clarke <jrtc27@jrtc27.com>
Wed, 10 Aug 2016 16:47:45 +0000 (09:47 -0700)
committerCary Coutant <ccoutant@gmail.com>
Wed, 10 Aug 2016 16:48:26 +0000 (09:48 -0700)
commit007801eeb19ed565eb4dc4020831f6d293f46930
tree72645b53290b3cca14e8bb34ebce9a2056d8de21
parent55872e496e89285814d11f03bb543091d6757318
Fix improper handling of R_SPARC_GOTDATA_OP_LOX10 relocation.

The fall-through in Target_sparc::Relocate::relocate for
R_SPARC_GOTDATA_OP_LOX10 is currently R_SPARC_GOT13, but should
clearly be R_SPARC_GOT10. GCC has been seen to emit a sethi/xor
rather than a sethi/or sequence to load a 32-bit immediate, but
if R_SPARC_GOT13 is used then bits 10-12 get zeroed out as both
the sethi and xor immediates contain them.

gold/
PR gold/20442
* sparc.cc (Target_sparc::Relocate::relocate): R_SPARC_GOTDATA_OP_LOX10
should fall back on R_SPARC_GOT10, not R_SPARC_GOT13.
gold/ChangeLog
gold/sparc.cc