* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use and require CFI assembler directives. * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.
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.
This commit is contained in:
parent
6f1e513dbb
commit
63e1f70d4d
@ -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
|
||||
|
@ -40,10 +40,11 @@
|
||||
# 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)
|
||||
|
@ -19,12 +19,13 @@
|
||||
|
||||
#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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user