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 */