mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 02:03:35 +08:00
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.
This commit is contained in:
parent
e4602cba2f
commit
d5bfa34a53
@ -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>.
|
||||
|
@ -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) */
|
||||
|
Loading…
Reference in New Issue
Block a user