* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use and...
authorRichard Henderson <rth@redhat.com>
Fri, 6 Jun 2003 05:51:03 +0000 (05:51 +0000)
committerRichard Henderson <rth@redhat.com>
Fri, 6 Jun 2003 05:51:03 +0000 (05:51 +0000)
2003-06-05  Richard Henderson  <rth@redhat.com>

* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use
and require CFI assembler directives.
* sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.

linuxthreads/ChangeLog
linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S

index 1d05b4fd4ce8924c7cb93ff196e7a4a5c46f11dc..9dee60ff23099b872ca5e1a14358390bfd4189bd 100644 (file)
@@ -1,3 +1,9 @@
+2003-06-05  Richard Henderson  <rth@redhat.com>
+
+       * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use
+       and require CFI assembler directives.
+       * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.
+
 2003-05-30  Andreas Jaeger  <aj@suse.de>
 
        * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
index 083db2f39a297782e6479cfb97ddab9659caf615..9ea779e0d55de750af6833f6749e49837caddf5b 100644 (file)
 # define PSEUDO(name, syscall_name, args)                      \
        .globl name;                                            \
        .align 4;                                               \
-       .ent name, 0;                                           \
+       .type name, @function;                                  \
+       .usepv name, std;                                       \
+       cfi_startproc;                                          \
 __LABEL(name)                                                  \
        ldgp    gp, 0(pv);                                      \
-       .prologue 1;                                            \
        PSEUDO_PROF;                                            \
        PSEUDO_PREPARE_ARGS                                     \
        SINGLE_THREAD_P(t0);                                    \
@@ -55,7 +56,9 @@ __LABEL($pseudo_ret)                                          \
        .subsection 2;                                          \
 __LABEL($pseudo_cancel)                                                \
        subq    sp, 64, sp;                                     \
+       cfi_def_cfa_offset(64);                                 \
        stq     ra, 0(sp);                                      \
+       cfi_offset(ra, -64);                                    \
        SAVE_ARGS_##args;                                       \
        CENABLE;                                                \
        LOAD_ARGS_##args;                                       \
@@ -67,19 +70,27 @@ __LABEL($pseudo_cancel)                                             \
        ldq     ra, 0(sp);                                      \
        ldq     v0, 8(sp);                                      \
        addq    sp, 64, sp;                                     \
+       cfi_remember_state;                                     \
+       cfi_restore(ra);                                        \
+       cfi_def_cfa_offset(0);                                  \
        ret;                                                    \
+       cfi_restore_state;                                      \
 __LABEL($multi_error)                                          \
        CDISABLE;                                               \
        ldq     ra, 0(sp);                                      \
        ldq     v0, 8(sp);                                      \
        addq    sp, 64, sp;                                     \
+       cfi_restore(ra);                                        \
+       cfi_def_cfa_offset(0);                                  \
 __LABEL($syscall_error)                                                \
        SYSCALL_ERROR_HANDLER;                                  \
-       END(name);                                              \
        .previous
 
 # undef PSEUDO_END
-# define PSEUDO_END(sym)
+# define PSEUDO_END(sym)                                       \
+       .subsection 2;                                          \
+       cfi_endproc;                                            \
+       .size sym, .-sym
 
 # define SAVE_ARGS_0   /* Nothing.  */
 # define SAVE_ARGS_1   SAVE_ARGS_0; stq a0, 8(sp)
index b4f35e1a675618e00c1d52d84c42f3ba6902ae06..cfaae106068deca745685d8eb83c25db20ad881c 100644 (file)
 
 #include <sysdep-cancel.h>
 
-       .globl __vfork
         .align 4
-        .ent __vfork,0
-__LABEL(__vfork)
+       .globl  __vfork
+       .type   __vfork, @function
+       .usepv  __vfork, std
+       cfi_startproc
+__vfork:
        ldgp    gp, 0(pv)
-       .prologue 1
        PSEUDO_PROF
 
 #ifdef SHARED
@@ -46,18 +47,24 @@ __LABEL(__vfork)
           fork and vfork object files.  */
 $do_fork:
        subq    sp, 16, sp
+       cfi_adjust_cfa_offset(16)
        stq     ra, 0(sp)
+       cfi_offset(ra, -16)
        jsr     ra, HIDDEN_JUMPTARGET (__fork)
        ldgp    gp, 0(ra)
        ldq     ra, 0(sp)
        addq    sp, 16, sp
+       cfi_restore(ra)
+       cfi_adjust_cfa_offset(-16)
        ret
 
 $syscall_error:
        SYSCALL_ERROR_HANDLER
 #endif
 
-PSEUDO_END(__vfork)
+       cfi_endproc
+       .size __vfork, .-__vfork
+
 libc_hidden_def (__vfork)
 
 weak_alias (__vfork, vfork)