From d5bfa34a53fe67e9e86edc7f5d8277dcd687d064 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Tue, 28 Nov 2017 20:01:05 -0500 Subject: Fix gmon static test failures. * 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. --- sysdeps/hppa/start.S | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/hppa/start.S b/sysdeps/hppa/start.S index 5db1ba960b..1d69ae8a4b 100644 --- a/sysdeps/hppa/start.S +++ b/sysdeps/hppa/start.S @@ -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 @@ -56,10 +56,6 @@ .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) */ -- cgit v1.2.3