mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
e6213e09ed
When dereferencing a GOT slot with lgrl or lg we rewrite this using larl to get rid of the extra memory access. However, we cannot do this for: - symbols marked for absolute addressing - symbols at odd addresses (larl can handle only even addresses) Fixed with the attached patch. bfd/ChangeLog: 2018-09-17 Andreas Krebbel <krebbel@linux.ibm.com> * elf64-s390.c (elf_s390_relocate_section): Prevent rewriting of GOT accesses with larl for ABS or misaligned symbols. ld/ChangeLog: 2018-09-17 Andreas Krebbel <krebbel@linux.ibm.com> * testsuite/ld-s390/gotreloc-1.s: Add tests for ABS and misaligned symbol. Move variables into data section. Make bar 8 bytes wide. * testsuite/ld-s390/gotreloc-1.ver: Make misaligned_sym resolve locally. * testsuite/ld-s390/gotreloc_31-1.dd: Adjust patterns. * testsuite/ld-s390/gotreloc_64-norelro-1.dd: Likewise. * testsuite/ld-s390/gotreloc_64-relro-1.dd: Likewise.
20 lines
294 B
ArmAsm
20 lines
294 B
ArmAsm
.text
|
|
.globl foo
|
|
foo:
|
|
lgrl %r1,bar@GOTENT
|
|
lg %r1,bar@GOT(%r12)
|
|
lrl %r1,bar@GOTENT
|
|
l %r1,bar@GOT(%r12)
|
|
ly %r1,bar@GOT(%r12)
|
|
lgrl %r1,_GLOBAL_OFFSET_TABLE_@GOTENT
|
|
lgrl %r1,misaligned_sym@GOTENT
|
|
|
|
.data
|
|
.globl bar
|
|
bar: .quad 0x123
|
|
|
|
.globl misaligned_sym
|
|
.byte 1
|
|
misaligned_sym:
|
|
.quad 42
|