patches/glibc/2.3.2/glibc-2.3.2-sh4-socket.patch
changeset 330 447b203edc2e
parent 329 419d959441ed
child 331 0c05f9ea3254
     1.1 --- a/patches/glibc/2.3.2/glibc-2.3.2-sh4-socket.patch	Tue Aug 14 19:32:22 2007 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,39 +0,0 @@
     1.4 -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sh/socket.S.diff?r1=1.5&r2=1.6&cvsroot=glibc
     1.5 -
     1.6 -Ankur Sheth said:
     1.7 -"The problem that I ran into was that multi-threaded apps would crash with a
     1.8 -seg fault when they invoked some of the socket calls (sendto() in my case.
     1.9 -This happened only on the sh4.  Turns out that a certain register (PR) was
    1.10 -not being saved and restored properly before and after invoking the system
    1.11 -call.  This patch fixes it.  It applies cleanly on glibc 2.3.2. 
    1.12 -[Thanks to Kaz for helping us find this.]"
    1.13 -
    1.14 -===================================================================
    1.15 -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sh/socket.S,v
    1.16 -retrieving revision 1.5
    1.17 -retrieving revision 1.6
    1.18 -diff -u -r1.5 -r1.6
    1.19 ---- libc/sysdeps/unix/sysv/linux/sh/socket.S	2003/01/05 11:07:44	1.5
    1.20 -+++ libc/sysdeps/unix/sysv/linux/sh/socket.S	2003/07/12 01:25:53	1.6
    1.21 -@@ -94,7 +94,9 @@
    1.22 - #if defined NEED_CANCELLATION && defined CENABLE
    1.23 - .Lsocket_cancel:
    1.24 - 	/* Enable asynchronous cancellation.  */
    1.25 -+	sts.l pr,@-r15
    1.26 - 	CENABLE
    1.27 -+	lds.l @r15+,pr
    1.28 - 
    1.29 - 	/* Do the system call trap.  */
    1.30 - 	mov #+P(SOCKOP_,socket), r4
    1.31 -@@ -102,9 +104,11 @@
    1.32 - 	mov.l .L1,r3
    1.33 - 	trapa #0x12
    1.34 - 
    1.35 -+	sts.l pr,@-r15
    1.36 - 	mov.l r0,@-r15
    1.37 - 	CDISABLE
    1.38 - 	mov.l @r15+,r0
    1.39 -+	lds.l @r15+,pr
    1.40 - 
    1.41 - 	/* Pop args off the stack */
    1.42 - 	P(POPARGS_,NARGS)