]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix gmon static test failures.
authorJohn David Anglin <danglin@gcc.gnu.org>
Wed, 29 Nov 2017 01:01:05 +0000 (20:01 -0500)
committerJohn David Anglin <danglin@gcc.gnu.org>
Wed, 29 Nov 2017 01:01:05 +0000 (20:01 -0500)
* sysdeps/hppa/start.S (_start): Check PIC instead of SHARED.  Load
address of $global$ into %dp register earlier.  Use pc-relative
instruction sequence for PIC case.

ChangeLog
sysdeps/hppa/start.S

index ea124d40df279efea51e001f6ac9f1d8b12fbf59..bffaf21f51a46821d1315078dc981504075d7501 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-11-28  John David Anglin  <danglin@gcc.gnu.org>
+
+       * sysdeps/hppa/start.S (_start): Check PIC instead of SHARED.  Load
+       address of $global$ into %dp register earlier.  Use pc-relative
+       instruction sequence for PIC case.
+
 2017-11-28  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/i386/fpu/s_asinhf.S: Include <libm-alias-float.h>.
index 5db1ba960beb941a2aef730e847440203bf64c3c..1d69ae8a4b9e3e41b7fdbb4576360ff67a96a2ad 100644 (file)
@@ -42,7 +42,7 @@
        /* Have the linker create plabel words so we get PLABEL32
           relocs and not 21/14.  The use of 21/14 relocs is only
           supported in the latest dynamic linker.  */
-#ifdef SHARED
+#ifdef PIC
        .section        .data.rel.ro,"aw",@progbits
 #else
        .section        .rodata,"a",@progbits
        .word P%__libc_csu_fini
 .Lp__libc_csu_init:
        .word P%__libc_csu_init
-#ifdef SHARED
-.Lp__global:
-       .word $global$
-#endif
 
        .text
        .align 4
@@ -99,9 +95,15 @@ _start:
        /* argc and argv should be in 25 and 24 (2nd and 3rd argument) */
        /* void (*rtld_fini) (void) (6th argument) */
        stw     %r23, -56(%sp)
+
        /* Need to setup 1, 4, 5, and 7th arguments */
 
-#ifdef SHARED
+#ifdef PIC
+       /* Load $global$ address into %dp */
+       bl      .+8, %dp
+       addil   L'$global$-$PIC_pcrel$0+1, %dp
+       ldo     R'$global$-$PIC_pcrel$0+5(%r1), %dp
+
        /* load main (1st argument) */
        addil   LT'.Lpmain, %r19
        ldw     RT'.Lpmain(%r1), %r26
@@ -115,6 +117,10 @@ _start:
        ldw     RT'.Lp__libc_csu_fini(%r1), %r22
        ldw     0(%r22), %r22
 #else
+       /* Load $global$ address into %dp */
+       ldil    L%$global$, %dp
+       ldo     R%$global$(%dp), %dp
+
        /* load main (1st argument) */
        ldil    LR'.Lpmain, %r26
        ldw     RR'.Lpmain(%r26), %r26
@@ -129,17 +135,6 @@ _start:
        stw     %r22, -52(%sp)
        /* void *stack_end (7th argument) */
        stw     %sp, -60(%sp)
-
-#ifdef SHARED
-       /* load global */
-       addil   LT'.Lp__global, %r19
-       ldw     RT'.Lp__global(%r1), %dp
-       ldw     0(%dp), %dp
-#else
-       /* load global */
-       ldil    L%$global$, %dp
-       ldo     R%$global$(%dp), %dp
-#endif
        bl      __libc_start_main,%r2
        nop
        /* die horribly if it returned (it shouldn't) */