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: