diff options
Diffstat (limited to 'sysdeps/hppa/start.S')
-rw-r--r-- | sysdeps/hppa/start.S | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sysdeps/hppa/start.S b/sysdeps/hppa/start.S index 64d8c3ed6f..cc4f243650 100644 --- a/sysdeps/hppa/start.S +++ b/sysdeps/hppa/start.S @@ -42,7 +42,11 @@ /* 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. */ - .section .rodata +#ifdef SHARED + .section .data.rel.ro,"aw",@progbits +#else + .section .rodata,"a",@progbits +#endif .align 4 .Lpmain: .word P%main @@ -52,6 +56,10 @@ .word P%__libc_csu_fini .Lp__libc_csu_init: .word P%__libc_csu_init +#ifdef SHARED +.Lp__global: + .word $global$ +#endif .text .align 4 @@ -122,10 +130,14 @@ _start: /* void *stack_end (7th argument) */ stw %sp, -60(%sp) +#ifdef SHARED + addil LT'.Lp__global, %r19 + ldw RT'.Lp__global(%r1), %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) */ |