about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-01-07 00:42:43 +0000
committerUlrich Drepper <drepper@redhat.com>2003-01-07 00:42:43 +0000
commit52f3d213311e34285c4809f043a5cf3a5876b897 (patch)
treeb785902a0af0ab92aabf9e3f155ca1728a607fac /nptl
parenta841816e175f7f7faeb5a019578b6b536ea336b6 (diff)
downloadglibc-52f3d213311e34285c4809f043a5cf3a5876b897.tar.gz
glibc-52f3d213311e34285c4809f043a5cf3a5876b897.tar.xz
glibc-52f3d213311e34285c4809f043a5cf3a5876b897.zip
Update.
2003-01-06  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_RET): Add branch hint.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Add cancellation
	support.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Remove
	ftruncate64, truncate64, pread64 and pwrite64 entries.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
	(INLINE_SYSCALL): Add __builtin_expect.
	(LOADARGS_n): Add argument size safety checks.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: New file.

2003-01-06  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_HANDLED): Define.
	* sysdeps/generic/creat.c: Include sysdep-cancel.h.
	(LIBC_CANCEL_HANDLED): Add.

	* sysdeps/unix/sysv/linux/alpha/sysdep.h
	(inline_syscall_r0_constraint): Rename to...
	(inline_syscall_r0_out_constraint): ... this.  Add =.
	(inline_syscall[0-6]): Use inline_syscall_r0_out_constraint.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/pt-system.c5
-rw-r--r--nptl/pthreadP.h7
-rw-r--r--nptl/tst-cancel-wrappers.sh3
3 files changed, 12 insertions, 3 deletions
diff --git a/nptl/pt-system.c b/nptl/pt-system.c
index f638a6ae32..b3b45ab938 100644
--- a/nptl/pt-system.c
+++ b/nptl/pt-system.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -28,3 +28,6 @@ system (const char *line)
 {
   return __libc_system (line);
 }
+
+/* __libc_system in libc.so handles cancellation.  */
+LIBC_CANCEL_HANDLED ();
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index e4851288fb..b298524245 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -92,12 +92,19 @@ extern int __pthread_debug attribute_hidden;
 /* Same as CANCEL_RESET, but for use in libc.so.  */
 # define LIBC_CANCEL_RESET(oldtype) \
   __libc_disable_asynccancel (oldtype)
+# define LIBC_CANCEL_HANDLED() \
+  __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \
+  __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel")
 #elif defined NOT_IN_libc && defined IS_IN_libpthread
 # define LIBC_CANCEL_ASYNC() CANCEL_ASYNC ()
 # define LIBC_CANCEL_RESET(val) CANCEL_RESET (val)
+# define LIBC_CANCEL_HANDLED() \
+  __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \
+  __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel")
 #else
 # define LIBC_CANCEL_ASYNC()	0 /* Just a dummy value.  */
 # define LIBC_CANCEL_RESET(val)	((void)(val)) /* Nothing, but evaluate it.  */
+# define LIBC_CANCEL_HANDLED()	/* Nothing.  */
 #endif
 
 
diff --git a/nptl/tst-cancel-wrappers.sh b/nptl/tst-cancel-wrappers.sh
index 5b3944bab7..4561c02ae8 100644
--- a/nptl/tst-cancel-wrappers.sh
+++ b/nptl/tst-cancel-wrappers.sh
@@ -67,8 +67,7 @@ C["__xpg_sigpause"]=1
 /:$/ {
   if (seen)
     {
-      # pt-system.o* in NPTL calls __libc_system directly.
-      if ((!seen_enable || !seen_disable) && !(object ~ /^pt-system.o/))
+      if (!seen_enable || !seen_disable)
 	{
 	  printf "in '$1'(%s) %s'\''s cancellation missing\n", object, seen
 	  ret = 1