+2016-06-07 Ulrich Weigand <ulrich.weigand@de.ibm.com>
+
+ * elf64-s390.c (elf_s390_finish_dynamic_sections): Subtract plt
+ section offset when calculation the larl operand in the first PLT
+ entry.
+
2016-06-07 Alan Modra <amodra@gmail.com>
* cpu-powerpc.c (powerpc_compatible): Allow bfd_mach_ppc_vle entry
PLT_FIRST_ENTRY_SIZE);
/* Fixup relative address to start of GOT */
bfd_put_32 (output_bfd,
- (htab->elf.sgotplt->output_section->vma +
- htab->elf.sgotplt->output_offset
- - htab->elf.splt->output_section->vma - 6)/2,
+ (htab->elf.sgotplt->output_section->vma
+ + htab->elf.sgotplt->output_offset
+ - htab->elf.splt->output_section->vma
+ - htab->elf.splt->output_offset - 6)/2,
htab->elf.splt->contents + 8);
}
if (elf_section_data (htab->elf.splt->output_section) != NULL)
+2016-06-07 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * testsuite/ld-s390/pltoffset-1.dd: New test.
+ * testsuite/ld-s390/pltoffset-1.ld: New test.
+ * testsuite/ld-s390/pltoffset-1.s: New test.
+ * testsuite/ld-s390/s390.exp: Run new test.
+
2016-06-07 Alan Modra <amodra@gmail.com>
* testsuite/ld-powerpc/apuinfo1.s: Delete nop.
--- /dev/null
+tmpdir/pltoffset-1: file format elf64-s390
+
+Disassembly of section .text:
+
+.* <.text>:
+.*: 00 00 00 00 [ ]*.long 0x00000000
+.*: e3 10 f0 38 00 24 [ ]*stg %r1,56\(%r15\)
+.*: c0 10 00 00 00 27 [ ]*larl %r1,58 <_GLOBAL_OFFSET_TABLE_>
--- /dev/null
+SECTIONS
+{
+ .text : {
+ . = . + 4;
+ *(.plt)
+ }
+ .test : {
+ *(.text)
+ *(.got)
+ *(.got.plt)
+ *(.rodata)
+ *(.eh_frame)
+ *(.interp)
+ *(.data)
+ *(.bss)
+ }
+
+ /* For old binutils which otherwise complain about nonrepresentable
+ sections. */
+ .dynsym : { *(.dynsym) }
+ .gnu.version : { *(.gnu.version) }
+
+ /DISCARD/ : {
+ *(.rela.text)
+ *(.rela.plt)
+ *(.rela.got.plt)
+ *(.rela.data)
+ *(.rela.rodata)
+ *(.rela.bss)
+ *(.rela.text)
+ *(.comment*)
+ *(.note*)
+ }
+}
--- /dev/null
+ .file "hello.c"
+.text
+ .align 8
+.globl main
+ .type main, @function
+main:
+ brasl %r5,foo@PLT
+ br %r4
+ .size main, .-main
+
+.globl foo
+foo: .long 123
"-m64" {gotreloc-1.s}
{{objdump -dzrj.text gotreloc_64-1.dd}}
"gotreloc_64-1"}
+ {"PLT: offset test"
+ "-shared -m elf64_s390 -dT pltoffset-1.ld" ""
+ "-m64" {pltoffset-1.s}
+ {{objdump "-dzrj.text --stop-address=16" pltoffset-1.dd}}
+ "pltoffset-1"}
}
if [istarget "s390-*-*"] {