diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-04-10 19:21:13 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2008-04-10 19:21:13 +0000 |
commit | b0c50524f1fb93adbd52e9950f92650e020b0d59 (patch) | |
tree | fd9af5238c7ebb9bb27ffafb3e47be9ed5ca2680 /sysdeps/unix | |
parent | 3a2e541ba348de2bbab7b65328694403e61e5dff (diff) | |
download | glibc-b0c50524f1fb93adbd52e9950f92650e020b0d59.zip glibc-b0c50524f1fb93adbd52e9950f92650e020b0d59.tar.gz glibc-b0c50524f1fb93adbd52e9950f92650e020b0d59.tar.bz2 |
Updated to fedora-glibc-20080410T1907
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/vfork.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/makecontext.c | 26 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/vfork.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/syscalls.list | 2 |
4 files changed, 22 insertions, 12 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/vfork.S b/sysdeps/unix/sysv/linux/i386/vfork.S index eefd4b4..2494d9b 100644 --- a/sysdeps/unix/sysv/linux/i386/vfork.S +++ b/sysdeps/unix/sysv/linux/i386/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2002, 2004, 2005 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2002, 2004, 2005, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab <schwab@gnu.org>. @@ -34,6 +34,7 @@ ENTRY (__vfork) /* Pop the return PC value into ECX. */ popl %ecx cfi_adjust_cfa_offset (-4) + cfi_register (%eip, %ecx) #ifdef SAVE_PID SAVE_PID diff --git a/sysdeps/unix/sysv/linux/x86_64/makecontext.c b/sysdeps/unix/sysv/linux/x86_64/makecontext.c index 5deea7d..615dede 100644 --- a/sysdeps/unix/sysv/linux/x86_64/makecontext.c +++ b/sysdeps/unix/sysv/linux/x86_64/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>, 2002. @@ -78,31 +78,39 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) sp[idx_uc_link] = (unsigned long int) ucp->uc_link; va_start (ap, argc); - /* Handle arguments. */ + /* Handle arguments. + + The standard says the parameters must all be int values. This is + an historic accident and would be done differently today. For + x86-64 all integer values are passed as 64-bit values and + therefore extending the API to copy 64-bit values instead of + 32-bit ints makes sense. It does not break existing + functionality and it does not violate the standard which says + that passing non-int values means undefined behavior. */ for (i = 0; i < argc; ++i) switch (i) { case 0: - ucp->uc_mcontext.gregs [REG_RDI] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_RDI] = va_arg (ap, long int); break; case 1: - ucp->uc_mcontext.gregs [REG_RSI] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_RSI] = va_arg (ap, long int); break; case 2: - ucp->uc_mcontext.gregs [REG_RDX] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_RDX] = va_arg (ap, long int); break; case 3: - ucp->uc_mcontext.gregs [REG_RCX] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_RCX] = va_arg (ap, long int); break; case 4: - ucp->uc_mcontext.gregs [REG_R8] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_R8] = va_arg (ap, long int); break; case 5: - ucp->uc_mcontext.gregs [REG_R9] = va_arg (ap, int); + ucp->uc_mcontext.gregs[REG_R9] = va_arg (ap, long int); break; default: /* Put value on stack. */ - sp[(i - 5)] = va_arg (ap, int); + sp[i - 5] = va_arg (ap, unsigned long int); break; } va_end (ap); diff --git a/sysdeps/unix/sysv/linux/x86_64/vfork.S b/sysdeps/unix/sysv/linux/x86_64/vfork.S index 4bad388..e289656 100644 --- a/sysdeps/unix/sysv/linux/x86_64/vfork.S +++ b/sysdeps/unix/sysv/linux/x86_64/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002, 2004, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -31,6 +31,7 @@ ENTRY (__vfork) is preserved by the syscall and that we're allowed to destroy. */ popq %rdi cfi_adjust_cfa_offset(-8) + cfi_register(%rip, %rdi) #ifdef SAVE_PID SAVE_PID diff --git a/sysdeps/unix/sysv/syscalls.list b/sysdeps/unix/sysv/syscalls.list index 436d05e..f65ed79 100644 --- a/sysdeps/unix/sysv/syscalls.list +++ b/sysdeps/unix/sysv/syscalls.list @@ -11,6 +11,6 @@ settimeofday - settimeofday i:PP __settimeofday settimeofday signal - signal i:ii signal stime - stime i:p stime time - time Ei:P time -times - times i:p __times times +times - times Ei:p __times times ulimit - ulimit i:ii ulimit utime - utime i:sP utime |