binutils-gdb/ld/testsuite/ld-s390/gotreloc-1.s
Andreas Krebbel e6213e09ed S/390: Prevent GOT access rewrite for certain symbols
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.
2018-09-17 11:01:24 +02:00

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