From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21151 invoked by alias); 14 Jul 2004 13:54:19 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 20825 invoked from network); 14 Jul 2004 13:54:17 -0000 Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76) by sourceware.org with SMTP; 14 Jul 2004 13:54:17 -0000 Received: from localhost (frgw.3in.ne.jp [210.251.121.226]) by r-rr.iij4u.or.jp (8.11.6+IIJ/8.11.6) with ESMTP id i6EDsES16910 for ; Wed, 14 Jul 2004 22:54:14 +0900 (JST) Date: Wed, 14 Jul 2004 13:54:00 -0000 Message-Id: <20040714.225400.98861576.kkojima@rr.iij4u.or.jp> To: libc-hacker@sources.redhat.com Subject: [PATCH] SH linuxthreads: Fix cancellation for librt From: Kaz Kojima Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2004-07/txt/msg00026.txt.bz2 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 * 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