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 <[EMAIL PROTECTED]>
# 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  <[EMAIL PROTECTED]>

        * 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 via email to