[parisc-linux] glibc 2.3.2 patches updated, still no working sysdep-cancel
Joel Soete
jsoe0708@tiscali.be
Wed, 26 Mar 2003 12:57:17 +0100
Hi Carlos,
A grab your last patches and original src from ftp.gnu.org and in your patch
glibc23-05b-hppa-sysdep, the second hunk was rejected and so I change it
as follow:
=====
--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h.orig 2002-08-26 23:16:19.000000000
+0200
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-03-26 12:41:50.000000000
+0100
@@ -101,20 +101,27 @@
which means
ENTRY(name)
DO_CALL(...)
- nop
bv 0(2)
nop
*/
#define PSEUDO(name, syscall_name, args) \
ENTRY (name) \
- DO_CALL(syscall_name, args) ASM_LINE_SEP \
- nop
+ DO_CALL(syscall_name, args) ASM_LINE_SEP
#undef PSEUDO_END
#define PSEUDO_END(name) \
END (name)
+#define PSEUDO_NOERRNO(name, syscall_name, args) \
+ ENTRY (name) \
+ DO_CALL_NOERRNO(syscall_name, args) ASM_LINE_SEP
+
+#undef PSEUDO_END_NOERRNO
+#define PSEUDO_END_NOERRNO(name) \
+ END (name)
+
+#undef JUMPTARGET
#define JUMPTARGET(name) name
#define SYSCALL_PIC_SETUP /* Nothing. */
@@ -165,6 +172,13 @@
0: ASM_LINE_SEP \
UNDOARGS_##args
+#undef DO_CALL_NOERRNO
+#define DO_CALL_NOERRNO(syscall_name, args) \
+ DOARGS_##args \
+ ble 0x100(%sr2,%r0) ASM_LINE_SEP \
+ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \
+ UNDOARGS_##args
+
#define DOARGS_0 /* nothing */
#define DOARGS_1 /* nothing */
#define DOARGS_2 /* nothing */
@@ -183,7 +197,7 @@
#define UNDOARGS_5 /* nothing */
#define UNDOARGS_6 /* nothing */
-#else
+#else /* !__ASSEMBLER__ */
#undef INLINE_SYSCALL
#define INLINE_SYSCALL(name, nr, args...) ({ \
@@ -206,6 +220,35 @@
__sys_res; \
})
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+
+#undef INTERNAL_SYSCALL_ERROR_P
+#define INTERNAL_SYSCALL_ERROR_P(val, err) \
+ ((unsigned long) (val) >= -4095L)
+
+#undef INTERNAL_SYSCALL_ERRNO
+#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
+
+/* Similar to INLINE_SYSCALL but we don't set errno */
+#undef INTERNAL_SYSCALL
+#define INTERNAL_SYSCALL(name, err, nr, args...) \
+({ \
+ long __sys_res; \
+ { \
+ register unsigned long __res asm("r28"); \
+ LOAD_ARGS_##nr(args) \
+ asm volatile( \
+ "ble 0x100(%%sr2, %%r0)\n\t" \
+ " ldi %1, %%r20" \
+ : "=r" (__res) \
+ : "i" (SYS_ify(name)) ASM_ARGS_##nr \
+ ); \
+ __sys_res = __res; \
+ } \
+ __sys_res; \
+ })
+
#define LOAD_ARGS_0()
#define LOAD_ARGS_1(r26) \
register unsigned long __r26 __asm__("r26") = (unsigned long)r26; \
=====
Or do I grab bad src?
Joel
---------------------------------
Vous surfez avec une ligne classique ?
Economisez jusqu'à 25% avec Tiscali Complete !
Offre spéciale : première année d'abonnement offerte.
... Plus d'info sur http://complete.tiscali.be