This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] SH linuxthreads: Fix cancellation for librt


Hi,

The appended patch defines missing stuff for cancellation in librt.
Without it, librt.so fails to build with 2.6.7 kernel headers.

Regards,
	kaz
--
2004-07-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
	(__local_multiple_threads): Define for librt.
	(SINGLE_THREAD_P): Likewise.

diff -u3prN ORIG/libc/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h LOCAL/libc/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
--- ORIG/libc/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h	Mon Jul  5 11:14:03 2004
+++ LOCAL/libc/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h	Wed Jul 14 18:54:01 2004
@@ -99,6 +99,7 @@
 # else
 #  define __local_enable_asynccancel	__librt_enable_asynccancel
 #  define __local_disable_asynccancel	__librt_disable_asynccancel
+#  define __local_multiple_threads	__librt_multiple_threads
 # endif
 
 # if defined IS_IN_librt && defined PIC
@@ -183,7 +184,8 @@ extern int __local_multiple_threads attr
      1:
 
 #  else
-#   define SINGLE_THREAD_P \
+#   if !defined NOT_IN_libc || defined IS_IN_libpthread
+#    define SINGLE_THREAD_P \
 	mov r12,r2; \
 	mov.l 0f,r12; \
 	mova 0f,r0; \
@@ -197,6 +199,23 @@ extern int __local_multiple_threads attr
      0: .long _GLOBAL_OFFSET_TABLE_; \
      1: .long __local_multiple_threads@GOTOFF; \
      2:
+#   else
+#    define SINGLE_THREAD_P \
+	mov r12,r2; \
+	mov.l 0f,r12; \
+	mova 0f,r0; \
+	add r0,r12; \
+	mov.l 1f,r0; \
+	mov.l @(r0,r12),r0; \
+	mov.l @r0,r0; \
+	mov r2,r12; \
+	bra 2f; \
+	 tst r0,r0; \
+	.align 2; \
+     0: .long _GLOBAL_OFFSET_TABLE_; \
+     1: .long __local_multiple_threads@GOT; \
+     2:
+#   endif
 #  endif
 # endif
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]