From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24043 invoked by alias); 12 Jul 2003 01:06: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 24026 invoked from network); 12 Jul 2003 01:06:18 -0000 Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76) by sources.redhat.com with SMTP; 12 Jul 2003 01:06:18 -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 h6C16Gm24634 for ; Sat, 12 Jul 2003 10:06:16 +0900 (JST) Message-Id: <200307120106.h6C16Gm24634@r-rr.iij4u.or.jp> To: libc-hacker@sources.redhat.com Subject: [PATCH] SH fix for socket syscall wrapper Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Sat, 12 Jul 2003 01:06:00 -0000 From: kaz Kojima X-Dispatcher: imput version 20000228(IM140) X-SW-Source: 2003-07/txt/msg00009.txt.bz2 Hi, SH's __socket syscall wrapper is broken for the cancellation case. Here is a fix. Regards, kaz -- 2003-07-12 Kaz Kojima * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR register across CENABLE and CDISABLE. diff -u3prN ORIG/libc/sysdeps/unix/sysv/linux/sh/socket.S LOCAL/libc/sysdeps/unix/sysv/linux/sh/socket.S --- ORIG/libc/sysdeps/unix/sysv/linux/sh/socket.S Wed Jan 8 08:37:36 2003 +++ LOCAL/libc/sysdeps/unix/sysv/linux/sh/socket.S Thu Jul 10 13:19:45 2003 @@ -94,7 +94,9 @@ ENTRY (__socket) #if defined NEED_CANCELLATION && defined CENABLE .Lsocket_cancel: /* Enable asynchronous cancellation. */ + sts.l pr,@-r15 CENABLE + lds.l @r15+,pr /* Do the system call trap. */ mov #+P(SOCKOP_,socket), r4 @@ -102,9 +104,11 @@ ENTRY (__socket) mov.l .L1,r3 trapa #0x12 + sts.l pr,@-r15 mov.l r0,@-r15 CDISABLE mov.l @r15+,r0 + lds.l @r15+,pr /* Pop args off the stack */ P(POPARGS_,NARGS)