[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#218660: [hppa][patch] fix syscalls for hppa



Package: glibc
Version: 2.3.2.ds1-8
Severity: important
Tags: patch

There are some missing paranethses in the hppa syscall code, so some
syscalls don't have their arguments loaded correctly (e.g. 
INLINE_SYSCALL(..., x<<31, ...) doesn't work for pread).
This patch fixes it.

thanks
randolph
-- 
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/
#! /bin/sh -e

# DP: Description: Make sure syscall arguments are loaded properly
# DP: Author: Randolph Chung <tausq@debian.org>
# DP: Upstream status: Pending
# DP: Date: Sat, 01 Nov 2003 15:36:04 -0800

if [ $# -ne 2 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch) patch -d "$2" -f --no-backup-if-mismatch -p0 < $0;;
    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p0 < $0;;
    *)
	echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
	exit 1
esac
exit 0

2003-11-01  Randolph Chung  <tausq@debian.org>

	* sysdeps/unix/sysv/linux/hppa/sysdep.h elf/Makefile (LOAD_ARGS): 
	Ensure arguments are loaded correctly

--- sysdeps/unix/sysv/linux/hppa/sysdep.h.orig	2003-11-01 14:16:40.000000000 -0800
+++ sysdeps/unix/sysv/linux/hppa/sysdep.h	2003-11-01 14:17:36.000000000 -0800
@@ -387,22 +387,22 @@
 
 #define LOAD_ARGS_0()
 #define LOAD_ARGS_1(r26)					\
-	register unsigned long __r26 __asm__("r26") = (unsigned long)r26;	\
+	register unsigned long __r26 __asm__("r26") = (unsigned long)(r26);	\
 	LOAD_ARGS_0()
 #define LOAD_ARGS_2(r26,r25)					\
-	register unsigned long __r25 __asm__("r25") = (unsigned long)r25;	\
+	register unsigned long __r25 __asm__("r25") = (unsigned long)(r25);	\
 	LOAD_ARGS_1(r26)
 #define LOAD_ARGS_3(r26,r25,r24)				\
-	register unsigned long __r24 __asm__("r24") = (unsigned long)r24;	\
+	register unsigned long __r24 __asm__("r24") = (unsigned long)(r24);	\
 	LOAD_ARGS_2(r26,r25)
 #define LOAD_ARGS_4(r26,r25,r24,r23)				\
-	register unsigned long __r23 __asm__("r23") = (unsigned long)r23;	\
+	register unsigned long __r23 __asm__("r23") = (unsigned long)(r23);	\
 	LOAD_ARGS_3(r26,r25,r24)
 #define LOAD_ARGS_5(r26,r25,r24,r23,r22)			\
-	register unsigned long __r22 __asm__("r22") = (unsigned long)r22;	\
+	register unsigned long __r22 __asm__("r22") = (unsigned long)(r22);	\
 	LOAD_ARGS_4(r26,r25,r24,r23)
 #define LOAD_ARGS_6(r26,r25,r24,r23,r22,r21)			\
-	register unsigned long __r21 __asm__("r21") = (unsigned long)r21;	\
+	register unsigned long __r21 __asm__("r21") = (unsigned long)(r21);	\
 	LOAD_ARGS_5(r26,r25,r24,r23,r22)
 
 /* Even with zero args we use r20 for the syscall number */

Reply to: