S/390: Fix highgprs check in startup code

This commit is contained in:
Andreas Krebbel 2010-09-29 11:31:42 -04:00 committed by Ulrich Drepper
parent 724da3d7f4
commit 87a97932bd
2 changed files with 11 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2010-09-29 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
[BZ #12067]
* sysdeps/s390/s390-32/elf/start.S: Fix address calculation when
trying to locate the ELF header.
2010-09-27 Andreas Schwab <schwab@redhat.com> 2010-09-27 Andreas Schwab <schwab@redhat.com>
[BZ #11611] [BZ #11611]

View File

@ -108,7 +108,7 @@ _start:
jne .L20 jne .L20
cl %r8,4(%r4) /* p_offset == 0? */ cl %r8,4(%r4) /* p_offset == 0? */
jne .L20 jne .L20
l %r9,8(%r4) /* r9 = p_vaddr <- ELF header address */ l %r9,8(%r4) /* r9 = PT_LOAD.p_vaddr <- ELF header address */
j .L24 j .L24
.L20: alr %r4,%r0 /* r4 += AT_PHENT value */ .L20: alr %r4,%r0 /* r4 += AT_PHENT value */
brct %r12,.L19 brct %r12,.L19
@ -124,16 +124,12 @@ _start:
.L22: alr %r4,%r0 /* r4 += AT_PHENT value */ .L22: alr %r4,%r0 /* r4 += AT_PHENT value */
brct %r12,.L23 brct %r12,.L23
ltr %r9,%r9 /* Load address == 0? */ j .L14 /* No PT_PHDR found - skip checking. */
jz .L14 /* No checking for PIE without PT_PHDR. */
j .L21
.L25: clr %r3,%r11 /* PT_PHDR p_vaddr == AT_PHDR? */ .L25: slr %r11,%r3 /* AT_PHDR - PT_PHDR.p_vaddr (relocation offset)*/
je .L21 alr %r9,%r11 /* PT_LOAD.p_vaddr += relocation offset */
lr %r9,%r11
slr %r9,%r3 /* elf_header_addr = AT_PHDR - PT_PHDR.p_vaddr */
.L21: l %r5,36(%r9) /* Load the e_flags field. */ l %r5,36(%r9) /* Load the e_flags field. */
tml %r5,1 tml %r5,1
jz .L14 /* Binary does not require highgprs facility. */ jz .L14 /* Binary does not require highgprs facility. */