Module Name:    src
Committed By:   phx
Date:           Sat Oct  3 22:28:33 UTC 2009

Modified Files:
        src/lib/libc/arch/m68k/sys: cerror.S

Log Message:
SystemV-R4 ABI for M68k returns pointers in %a0, so we have to make sure
that CERROR returns -1 in %a0 in addition to %d0 and %d1, to make functions
like mmap(2), mremap(2), shmat(2) or sbrk(2) return -1 in case of an error.
A side effect of this bug was a segfault caused by jemalloc, when mmap()
failed.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/lib/libc/arch/m68k/sys/cerror.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/arch/m68k/sys/cerror.S
diff -u src/lib/libc/arch/m68k/sys/cerror.S:1.14 src/lib/libc/arch/m68k/sys/cerror.S:1.15
--- src/lib/libc/arch/m68k/sys/cerror.S:1.14	Thu Aug  7 16:42:14 2003
+++ src/lib/libc/arch/m68k/sys/cerror.S	Sat Oct  3 22:28:33 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cerror.S,v 1.14 2003/08/07 16:42:14 agc Exp $	*/
+/*	$NetBSD: cerror.S,v 1.15 2009/10/03 22:28:33 phx Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -39,7 +39,7 @@
 #if 0
 	RCSID("from: @(#)cerror.s	5.1 (Berkeley) 5/12/90")
 #else
-	RCSID("$NetBSD: cerror.S,v 1.14 2003/08/07 16:42:14 agc Exp $")
+	RCSID("$NetBSD: cerror.S,v 1.15 2009/10/03 22:28:33 phx Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -80,4 +80,7 @@
 #endif	/* _REENTRANT */
 	movl	#-1,%d0
 	movl	#-1,%d1
+#ifdef	__SVR4_ABI__
+	movl	%d0,%a0
+#endif
 	rts

Reply via email to