From 0f0b799489b3b4df2c69c9a6844be6a8f294778d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 17 Jan 2003 19:57:05 +0000 Subject: Update. 2003-01-17 Richard Henderson * sysdeps/alpha/dl-machine.h (elf_machine_type_class): Add TLS relocs for class PLT. * sysdeps/alpha/libc-tls.c: New file. * sysdeps/unix/alpha/sysdep.S (EPILOGUE, GPSAVEREG): New. (LOADGP) [!PIC]: Rewrite to preserve caller's gp. 2003-01-17 Jakub Jelinek * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Use __libc_lock_{,un}lock_recursive instead of __libc_lock_{,un}lock on _dl_static_lock. --- linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'linuxthreads/sysdeps/unix') diff --git a/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S index 2481de9a12..e7507245e7 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S +++ b/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S @@ -26,26 +26,35 @@ __LABEL(__vfork) ldgp gp, 0(pv) .prologue 1 PSEUDO_PROF + SINGLE_THREAD_P(t0) #ifdef SHARED bne t0, HIDDEN_JUMPTARGET (__fork) !samegp #else - bne t0, $hidden_fork + bne t0, $do_fork #endif + lda v0, SYS_ify(vfork) call_pal PAL_callsys -#ifdef SHARED - bne a3, __syscall_error !samegp -#else - bne a3, $syscall_error -#endif + bne a3, SYSCALL_ERROR_LABEL ret + #ifndef SHARED -$hidden_fork: - jmp zero, HIDDEN_JUMPTARGET (__fork) + /* Can't tail-call due to possible mismatch between GP in + fork and vfork object files. */ +$do_fork: + subq sp, 16, sp + stq ra, 0(sp) + jsr ra, HIDDEN_JUMPTARGET (__fork) + ldgp gp, 0(ra) + ldq ra, 0(sp) + addq sp, 16, sp + ret + $syscall_error: - jmp zero, __syscall_error + SYSCALL_ERROR_HANDLER #endif + PSEUDO_END(__vfork) libc_hidden_def (__vfork) -- cgit v1.2.3