bug-glibc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PA initfini fixes


From: Matthew Wilcox
Subject: PA initfini fixes
Date: Thu, 19 Apr 2001 23:09:21 -0600
User-agent: Mutt/1.2.5i

2001-04-19  Alan Modra  <address@hidden>

        * sysdeps/hppa/elf/initfini.c: Change dlt reg save to r3 and
        generate unwind info by hand.

Index: sysdeps/hppa/elf/initfini.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/hppa/elf/initfini.c,v
retrieving revision 1.1
diff -u -p -r1.1 initfini.c
--- sysdeps/hppa/elf/initfini.c 2000/10/15 03:33:24     1.1
+++ sysdeps/hppa/elf/initfini.c 2001/04/20 05:01:47
@@ -59,8 +59,6 @@ __asm__ ("
        .align 4
        .globl _init
        .type _init,@function
-       .proc
-       .callinfo
 _init:
        stw     %rp,-20(%sp)
        stwm    %r4,64(%sp)
@@ -68,25 +66,38 @@ _init:
        bl      __gmon_start__,%rp
        copy    %r19,%r4        /* delay slot */
        copy    %r4,%r19
-       .align 4
-       .procend
 /address@hidden/
 
 /address@hidden/
-       .section .init
-       copy    %r4,%r19
-       ldw     -84(%sp),%rp
-       bv      %r0(%rp)
-       ldwm    -64(%sp),%r4
         .text
         .align 4
         .weak   __gmon_start__
         .type    __gmon_start__,@function
+__gmon_start__:
        .proc
        .callinfo
-__gmon_start__:
+       .entry
         bv,n %r0(%r2)
+       .exit
        .procend
+
+/* Here is the tail end of _init.  We put __gmon_start before this so
+   that the assembler creates the .PARISC.unwind section for us, ie.
+   with the right attributes.  */
+       .section .init
+       ldw     -84(%sp),%rp
+       copy    %r4,%r19
+       bv      %r0(%rp)
+_end_init:
+       ldwm    -64(%sp),%r4
+
+/* Our very own unwind info, because the assembler can't handle
+   functions split into two or more pieces.  */
+       .section .PARISC.unwind
+       .extern _init
+       .word   _init, _end_init
+       .byte   0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
+
 /address@hidden/
 
 /address@hidden/
@@ -94,23 +105,26 @@ __gmon_start__:
        .align 4
        .globl _fini
        .type _fini,@function
-       .proc
-       .callinfo
 _fini:
        stw     %rp,-20(%sp)
        stwm    %r4,64(%sp)
        stw     %r19,-32(%sp)
        copy    %r19,%r4
-       .align 4
-       .procend
 /address@hidden/
 
 /address@hidden/
        .section .fini
-       copy    %r4,%r19
        ldw     -84(%sp),%rp
+       copy    %r4,%r19
        bv      %r0(%rp)
+_end_fini:
        ldwm    -64(%sp),%r4
+
+       .section .PARISC.unwind
+       .extern _fini
+       .word   _fini, _end_fini
+       .byte   0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
+
 /address@hidden/
 
 /address@hidden/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]