From: David Mosberger <davidm@napali.hpl.hp.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: davidm@hpl.hp.com, libc-hacker@sources.redhat.com
Subject: Re: new syscall stub support for ia64 libc
Date: Thu, 30 Oct 2003 08:04:00 -0000 [thread overview]
Message-ID: <16288.50694.36460.339805@napali.hpl.hp.com> (raw)
In-Reply-To: <20031029074436.GR12344@sunsite.ms.mff.cuni.cz>
Hi Jakub,
>>>>> On Wed, 29 Oct 2003 08:44:36 +0100, Jakub Jelinek <jakub@redhat.com> said:
Jakub> Yes, please post a forward ported complete tested patch (the last
Jakub> version of the patch I and Ulrich saw was incomplete (but lead to
Jakub> discovery of a linker bug)).
Jakub> NPTL is now in sources CVS, so things are way easier for diffing...
OK, here is a preliminary patch. Some comments:
- The "assert (ph->p_vaddr == GL(dl_sysinfo_dso)" check in elf/rtld.c
is too strict. On ia64, we have two LOAD segments, so the check
can't possibly succeed:
$ readelf -l arch/ia64/kernel/gate.so |grep LOAD
LOAD 0x0000000000000000 0xa000000000010000 0xa000000000010000
LOAD 0x0000000000000000 0xa000000000020000 0xa000000000020000
The patch below simply #if's out the code, but perhaps a better
fix would be to check ph->p_vaddr only for the first LOAD segment?
- The changes to linuxthreads/{manager,pthread}.c are almost certainly
wrong, but I'm not sure I understand how you want things set up to
ensure that single-threaded apps use the new stub but linuxthread
apps use the old one.
- The ia64-specific vfork.S for now are done via old-style stub. I'm
not sure whether this is still necessary and will look into it.
- The libc-start.c change is also "wrong" but since DL_SYSDEP_OSCHECK()
may do syscalls, it is necessary to do __pthread_initialize_minimal()
first, as otherwise the minimal thread descriptor isn't setup.
The rest should be good. With the patch applied, "make check" gets
through all the tests except the linuxthread ones. I wasn't sure
whether it's worth tracking those down, since the linuxthreads part is
likely to change anyhow.
--david
Index: elf/rtld.c
===================================================================
RCS file: /cvs/glibc/libc/elf/rtld.c,v
retrieving revision 1.299
diff -u -r1.299 rtld.c
--- elf/rtld.c 27 Oct 2003 20:08:32 -0000 1.299
+++ elf/rtld.c 30 Oct 2003 07:55:02 -0000
@@ -1169,8 +1169,10 @@
l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
break;
}
+#if 0
if (ph->p_type == PT_LOAD)
assert ((void *) ph->p_vaddr == GL(dl_sysinfo_dso));
+#endif
}
elf_get_dynamic_info (l, dyn_temp);
_dl_setup_hash (l);
Index: linuxthreads/descr.h
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/descr.h,v
retrieving revision 1.14
diff -u -r1.14 descr.h
--- linuxthreads/descr.h 17 Sep 2003 09:39:00 -0000 1.14
+++ linuxthreads/descr.h 30 Oct 2003 07:55:02 -0000
@@ -189,7 +189,23 @@
#endif
size_t p_alloca_cutoff; /* Maximum size which should be allocated
using alloca() instead of malloc(). */
+#if TLS_TCB_AT_TP
/* New elements must be added at the end. */
+#else
+ union {
+ struct {
+ void *reserved[11]; /* reserve for future use */
+ void *tcb; /* XXX do we really need this? */
+ union dtv *dtvp; /* XXX do we really need this? */
+ pthread_descr self; /* XXX do we really need this? */
+ int multiple_threads;
+#ifdef NEED_DL_SYSINFO
+ uintptr_t sysinfo;
+#endif
+ } data;
+ void *__padding[16];
+ } p_header __attribute__ ((aligned(32)));
+#endif
} __attribute__ ((aligned(32))); /* We need to align the structure so that
doubles are aligned properly. This is 8
bytes on MIPS and 16 bytes on MIPS64.
Index: linuxthreads/manager.c
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/manager.c,v
retrieving revision 1.96
diff -u -r1.96 manager.c
--- linuxthreads/manager.c 15 Oct 2003 05:53:06 -0000 1.96
+++ linuxthreads/manager.c 30 Oct 2003 07:55:02 -0000
@@ -650,6 +650,10 @@
#if !defined USE_TLS || !TLS_DTV_AT_TP
new_thread->p_header.data.tcb = new_thread;
new_thread->p_header.data.self = new_thread;
+# if 1
+ /* XXX why isn't this done already??? */
+ new_thread->p_header.data.sysinfo = GL(dl_sysinfo);
+# endif
#endif
#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
new_thread->p_multiple_threads = 1;
Index: linuxthreads/pthread.c
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/pthread.c,v
retrieving revision 1.132
diff -u -r1.132 pthread.c
--- linuxthreads/pthread.c 15 Oct 2003 05:53:44 -0000 1.132
+++ linuxthreads/pthread.c 30 Oct 2003 07:55:02 -0000
@@ -357,6 +357,11 @@
self = THREAD_SELF;
+#if 1
+ /* XXX why isn't this done already??? */
+ self->p_header.data.sysinfo = GL(dl_sysinfo);
+#endif
+
/* The memory for the thread descriptor was allocated elsewhere as
part of the TLS allocation. We have to initialize the data
structure by hand. This initialization must mirror the struct
@@ -676,6 +681,10 @@
mgr->p_header.data.tcb = tcbp;
mgr->p_header.data.self = mgr;
mgr->p_header.data.multiple_threads = 1;
+# if 1
+ /* XXX why isn't this done already??? */
+ mgr->p_header.data.sysinfo = GL(dl_sysinfo);
+# endif
#elif TLS_MULTIPLE_THREADS_IN_TCB
mgr->p_multiple_threads = 1;
#endif
Index: linuxthreads/sysdeps/ia64/tcb-offsets.sym
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/ia64/tcb-offsets.sym,v
retrieving revision 1.6
diff -u -r1.6 tcb-offsets.sym
--- linuxthreads/sysdeps/ia64/tcb-offsets.sym 25 Apr 2003 22:04:27 -0000 1.6
+++ linuxthreads/sysdeps/ia64/tcb-offsets.sym 30 Oct 2003 07:55:02 -0000
@@ -4,6 +4,7 @@
--
#ifdef USE_TLS
MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
+SYSINFO_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.sysinfo) - sizeof (struct _pthread_descr_struct)
#else
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
#endif
Index: linuxthreads/sysdeps/ia64/tls.h
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/ia64/tls.h,v
retrieving revision 1.6
diff -u -r1.6 tls.h
--- linuxthreads/sysdeps/ia64/tls.h 31 Jul 2003 19:16:34 -0000 1.6
+++ linuxthreads/sysdeps/ia64/tls.h 30 Oct 2003 07:55:02 -0000
@@ -20,10 +20,13 @@
#ifndef _TLS_H
#define _TLS_H
+#include <dl-sysdep.h>
+
#ifndef __ASSEMBLER__
# include <pt-machine.h>
# include <stddef.h>
+# include <stdint.h>
/* Type for the dtv. */
typedef union dtv
@@ -83,8 +86,10 @@
/* Code to initially initialize the thread pointer. This might need
special attention since 'errno' is not yet available and if the
operation can cause a failure 'errno' must not be touched. */
-# define TLS_INIT_TP(tcbp, secondcall) \
- (__thread_self = (__typeof (__thread_self)) (tcbp), NULL)
+# define TLS_INIT_TP(tcbp, secondcall) \
+ (__thread_self = (__typeof (__thread_self)) (tcbp), \
+ THREAD_SELF->p_header.data.sysinfo = GL(dl_sysinfo), \
+ NULL)
/* Return the address of the dtv for the current thread. */
# define THREAD_DTV() \
Index: linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S,v
retrieving revision 1.4
diff -u -r1.4 vfork.S
--- linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 11 Feb 2003 06:27:53 -0000 1.4
+++ linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 30 Oct 2003 07:55:02 -0000
@@ -43,9 +43,13 @@
mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
mov out1=0 /* Standard sp value. */
;;
+#if 0
DO_CALL (SYS_ify (clone))
+#else
+ mov r15=SYS_ify(clone)
+ break __BREAK_SYSCALL
+#endif
cmp.eq p6,p0=-1,r10
- ;;
(p6) br.cond.spnt.few __syscall_error
ret
PSEUDO_END(__vfork)
Index: sysdeps/generic/libc-start.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/generic/libc-start.c,v
retrieving revision 1.46
diff -u -r1.46 libc-start.c
--- sysdeps/generic/libc-start.c 31 Jul 2003 19:20:39 -0000 1.46
+++ sysdeps/generic/libc-start.c 30 Oct 2003 07:55:04 -0000
@@ -123,14 +123,6 @@
# endif
_dl_aux_init (auxvec);
# endif
-# ifdef DL_SYSDEP_OSCHECK
- if (!__libc_multiple_libcs)
- {
- /* This needs to run to initiliaze _dl_osversion before TLS
- setup might check it. */
- DL_SYSDEP_OSCHECK (__libc_fatal);
- }
-# endif
/* Initialize the thread library at least a bit since the libgcc
functions are using thread functions if these are available and
@@ -142,6 +134,15 @@
# endif
__pthread_initialize_minimal ();
#endif
+
+# ifdef DL_SYSDEP_OSCHECK
+ if (!__libc_multiple_libcs)
+ {
+ /* This needs to run to initiliaze _dl_osversion before TLS
+ setup might check it. */
+ DL_SYSDEP_OSCHECK (__libc_fatal);
+ }
+# endif
/* Register the destructor of the dynamic linker if there is any. */
if (__builtin_expect (rtld_fini != NULL, 1))
Index: sysdeps/unix/sysv/linux/ia64/clone2.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/clone2.S,v
retrieving revision 1.7
diff -u -r1.7 clone2.S
--- sysdeps/unix/sysv/linux/ia64/clone2.S 13 Mar 2003 04:36:59 -0000 1.7
+++ sysdeps/unix/sysv/linux/ia64/clone2.S 30 Oct 2003 07:55:07 -0000
@@ -25,49 +25,56 @@
/* size_t child_stack_size, int flags, void *arg, */
/* pid_t *parent_tid, void *tls, pid_t *child_tid) */
+#define CHILD p8
+#define PARENT p9
+
ENTRY(__clone2)
- alloc r2=ar.pfs,8,2,6,0
+ .prologue
+ alloc r2=ar.pfs,8,0,6,0
cmp.eq p6,p0=0,in0
mov r8=EINVAL
-(p6) br.cond.spnt.few __syscall_error
- ;;
- flushrs /* This is necessary, since the child */
- /* will be running with the same */
- /* register backing store for a few */
- /* instructions. We need to ensure */
- /* that it will not read or write the */
- /* backing store. */
- mov loc0=in0 /* save fn */
- mov loc1=in4 /* save arg */
mov out0=in3 /* Flags are first syscall argument. */
mov out1=in1 /* Stack address. */
+(p6) br.cond.spnt.many __syscall_error
+ ;;
mov out2=in2 /* Stack size. */
mov out3=in5 /* Parent TID Pointer */
mov out4=in7 /* Child TID Pointer */
mov out5=in6 /* TLS pointer */
- DO_CALL (SYS_ify (clone2))
+ /*
+ * clone2() is special: the child cannot execute br.ret right
+ * after the system call returns, because it starts out
+ * executing on an empty stack. Because of this, we can't use
+ * the new (lightweight) syscall convention here. Instead, we
+ * just fall back on always using "break".
+ *
+ * Furthermore, since the child starts with an empty stack, we
+ * need to avoid unwinding past invalid memory. To that end,
+ * we'll pretend now that __clone2() is the end of the
+ * call-chain. This is wrong for the parent, but only until
+ * it returns from clone2() but it's better than the
+ * alternative.
+ */
+ mov r15=SYS_ify (clone2)
+ .save rp, r0
+ break __BREAK_SYSCALL
+ .body
cmp.eq p6,p0=-1,r10
+ cmp.eq CHILD,PARENT=0,r8 /* Are we the child? */
+(p6) br.cond.spnt.many __syscall_error
;;
-(p6) br.cond.spnt.few __syscall_error
-
-# define CHILD p6
-# define PARENT p7
- cmp.eq CHILD,PARENT=0,r8 /* Are we the child? */
- ;;
-(CHILD) ld8 out1=[loc0],8 /* Retrieve code pointer. */
-(CHILD) mov out0=loc1 /* Pass proper argument to fn */
+(CHILD) ld8 out1=[in0],8 /* Retrieve code pointer. */
+(CHILD) mov out0=in4 /* Pass proper argument to fn */
(PARENT) ret
;;
- ld8 gp=[loc0] /* Load function gp. */
+ ld8 gp=[in0] /* Load function gp. */
mov b6=out1
- ;;
- br.call.dptk.few rp=b6 /* Call fn(arg) in the child */
+ br.call.dptk.many rp=b6 /* Call fn(arg) in the child */
;;
mov out0=r8 /* Argument to _exit */
.globl _exit
- br.call.dpnt.few rp=_exit /* call _exit with result from fn. */
+ br.call.dpnt.many rp=_exit /* call _exit with result from fn. */
ret /* Not reached. */
-
PSEUDO_END(__clone2)
/* For now we leave __clone undefined. This is unlikely to be a */
Index: sysdeps/unix/sysv/linux/ia64/sysdep.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/sysdep.h,v
retrieving revision 1.17
diff -u -r1.17 sysdep.h
--- sysdeps/unix/sysv/linux/ia64/sysdep.h 16 Aug 2003 08:00:24 -0000 1.17
+++ sysdeps/unix/sysv/linux/ia64/sysdep.h 30 Oct 2003 07:55:08 -0000
@@ -23,6 +23,7 @@
#include <sysdeps/unix/sysdep.h>
#include <sysdeps/ia64/sysdep.h>
+#include <tls.h>
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
@@ -95,9 +96,32 @@
cmp.eq p6,p0=-1,r10; \
(p6) br.cond.spnt.few __syscall_error;
-#define DO_CALL(num) \
+#define DO_CALL_VIA_BREAK(num) \
mov r15=num; \
- break __BREAK_SYSCALL;
+ break __BREAK_SYSCALL
+
+#if defined HAVE_TLS_SUPPORT && (!defined NOT_IN_libc || defined IS_IN_libpthread)
+
+/* Use the lightweight stub only if (a) we have a suitably modern
+ thread-control block (HAVE_TLS_SUPPORT) and (b) we're not compiling
+ the runtime loader (which might do syscalls before being fully
+ relocated). */
+
+#define DO_CALL(num) \
+ .prologue; \
+ adds r2 = SYSINFO_OFFSET, r13;; \
+ ld8 r2 = [r2]; \
+ .save ar.pfs, r11; \
+ mov r11 = ar.pfs;; \
+ .body; \
+ mov r15 = num; \
+ mov b7 = r2; \
+ br.call.sptk.many b6 = b7;; \
+ .restore sp; \
+ mov ar.pfs = r11
+#else
+#define DO_CALL(num) DO_CALL_VIA_BREAK(num)
+#endif
#undef PSEUDO_END
#define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
@@ -144,6 +168,47 @@
(non-negative) errno on error or the return value on success.
*/
#undef INLINE_SYSCALL
+#undef INTERNAL_SYSCALL
+#if defined HAVE_TLS_SUPPORT && (!defined NOT_IN_libc || defined IS_IN_libpthread)
+
+#define DO_INLINE_SYSCALL(name, nr, args...) \
+ register long _r8 __asm ("r8"); \
+ register long _r10 __asm ("r10"); \
+ register long _r15 __asm ("r15") = __NR_##name; \
+ long _retval; \
+ LOAD_ARGS_##nr (args); \
+ /* \
+ * Don't specify any unwind info here. We mark ar.pfs as clobbered. This will force \
+ * the compiler to save ar.pfs somewhere and emit appropriate unwind info for that \
+ * save. \
+ */ \
+ __asm __volatile ("adds r2 = -8, r13;;\n" \
+ "ld8 r2 = [r2];;\n" \
+ "mov b7=r2;\n" \
+ "br.call.sptk.many b6=b7;;\n" \
+ : "=r" (_r8), "=r" (_r10), "=r" (_r15) ASM_OUTARGS_##nr \
+ : "2" (_r15) ASM_ARGS_##nr \
+ : "memory", "ar.pfs" ASM_CLOBBERS_##nr); \
+ _retval = _r8;
+
+#define INLINE_SYSCALL(name, nr, args...) \
+ ({ \
+ DO_INLINE_SYSCALL(name, nr, args) \
+ if (_r10 == -1) \
+ { \
+ __set_errno (_retval); \
+ _retval = -1; \
+ } \
+ _retval; })
+
+#define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+ DO_INLINE_SYSCALL(name, nr, args) \
+ err = _r10; \
+ _retval; })
+
+#else /* !new syscall-stub */
+
#define INLINE_SYSCALL(name, nr, args...) \
({ \
register long _r8 asm ("r8"); \
@@ -164,10 +229,6 @@
} \
_retval; })
-#undef INTERNAL_SYSCALL_DECL
-#define INTERNAL_SYSCALL_DECL(err) long int err
-
-#undef INTERNAL_SYSCALL
#define INTERNAL_SYSCALL(name, err, nr, args...) \
({ \
register long _r8 asm ("r8"); \
@@ -183,6 +244,11 @@
_retval = _r8; \
err = _r10; \
_retval; })
+
+#endif /* !new syscall-stub */
+
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) long int err
#undef INTERNAL_SYSCALL_ERROR_P
#define INTERNAL_SYSCALL_ERROR_P(val, err) (err == -1)
Index: sysdeps/unix/sysv/linux/ia64/vfork.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/vfork.S,v
retrieving revision 1.4
diff -u -r1.4 vfork.S
--- sysdeps/unix/sysv/linux/ia64/vfork.S 31 Dec 2002 20:37:30 -0000 1.4
+++ sysdeps/unix/sysv/linux/ia64/vfork.S 30 Oct 2003 07:55:08 -0000
@@ -34,9 +34,13 @@
mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
mov out1=0 /* Standard sp value. */
;;
+#if 0
DO_CALL (SYS_ify (clone))
+#else
+ mov r15=SYS_ify(clone)
+ break __BREAK_SYSCALL
+#endif
cmp.eq p6,p0=-1,r10
- ;;
(p6) br.cond.spnt.few __syscall_error
ret
PSEUDO_END(__vfork)
next prev parent reply other threads:[~2003-10-30 8:04 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-29 4:26 David Mosberger
2003-10-29 9:51 ` Jakub Jelinek
2003-10-30 8:04 ` David Mosberger [this message]
2003-10-30 9:09 ` Jakub Jelinek
2003-10-30 19:38 ` Roland McGrath
2003-10-30 19:59 ` David Mosberger
2003-10-30 20:23 ` Jakub Jelinek
2003-10-30 22:35 ` David Mosberger
2003-10-31 8:45 ` Richard Henderson
2003-10-31 9:07 ` Jakub Jelinek
2003-10-31 16:45 ` David Mosberger
2003-10-31 16:54 ` Jakub Jelinek
2003-10-31 18:29 ` David Mosberger
2003-11-03 21:46 ` David Mosberger
2003-11-12 22:53 ` David Mosberger
2003-11-12 23:10 ` Ulrich Drepper
2003-11-12 23:47 ` David Mosberger
2003-11-12 23:57 ` Jakub Jelinek
2003-11-13 2:38 ` David Mosberger
2003-11-13 3:46 ` Ulrich Drepper
2003-11-13 3:53 ` David Mosberger
2003-11-13 8:23 ` Jakub Jelinek
2003-11-13 7:32 ` David Mosberger
2003-11-13 9:24 ` Ulrich Drepper
2003-11-13 17:30 ` David Mosberger
2003-11-13 17:56 ` Ulrich Drepper
2003-11-13 18:47 ` David Mosberger
2003-11-13 20:16 ` Ulrich Drepper
2003-11-13 21:34 ` David Mosberger
2003-11-13 21:44 ` Jakub Jelinek
2003-11-13 21:58 ` David Mosberger
2003-11-13 23:45 ` David Mosberger
2003-11-14 1:44 ` Ulrich Drepper
2003-11-14 1:54 ` David Mosberger
2003-11-14 2:18 ` David Mosberger
2003-11-14 2:57 ` Ulrich Drepper
2003-11-14 3:22 ` David Mosberger
2003-11-14 3:39 ` Ulrich Drepper
2003-11-14 5:29 ` Ulrich Drepper
2003-11-14 5:49 ` David Mosberger
2003-11-14 6:04 ` Ulrich Drepper
2003-11-14 6:43 ` David Mosberger
2003-11-14 19:53 ` Ulrich Drepper
2003-11-14 19:56 ` David Mosberger
2003-11-14 20:36 ` Ulrich Drepper
2003-11-15 0:51 ` David Mosberger
2003-11-15 9:38 ` David Mosberger
2003-11-17 18:21 ` Ulrich Drepper
2003-11-17 18:35 ` David Mosberger
2003-11-18 7:54 ` David Mosberger
2003-11-18 8:22 ` Ulrich Drepper
2003-11-18 16:45 ` David Mosberger
2003-11-19 23:37 ` unwind failures due to __pthread_initialize_minimal David Mosberger
2003-11-19 23:54 ` Ulrich Drepper
2003-11-20 0:30 ` Roland McGrath
2003-11-20 2:35 ` David Mosberger
2003-11-20 4:01 ` Ulrich Drepper
2003-11-20 21:20 ` David Mosberger
2003-12-07 1:46 ` Ulrich Drepper
2003-12-08 17:40 ` David Mosberger
2003-12-08 19:27 ` Ulrich Drepper
2003-12-08 22:22 ` David Mosberger
2003-11-26 9:40 ` new syscall stub support for ia64 libc David Mosberger
2003-12-03 7:25 ` David Mosberger
2003-12-08 18:16 ` Jakub Jelinek
2003-12-08 19:23 ` David Mosberger
2003-12-08 21:17 ` Jakub Jelinek
2003-12-08 22:10 ` David Mosberger
2003-12-09 4:41 ` David Mosberger
2003-12-08 22:17 ` David Mosberger
2003-12-08 22:46 ` Jakub Jelinek
2003-12-08 23:03 ` David Mosberger
2003-12-10 23:22 ` Ulrich Drepper
2003-12-11 0:37 ` David Mosberger
2003-12-11 21:00 ` Ulrich Drepper
2003-11-17 22:15 ` David Mosberger
2003-11-15 19:05 ` David Mosberger
2003-11-17 18:14 ` Ulrich Drepper
2003-11-18 0:47 ` David Mosberger
2003-11-18 1:02 ` Ulrich Drepper
2003-11-18 1:22 ` David Mosberger
2003-11-18 1:37 ` Ulrich Drepper
2003-11-18 1:46 ` David Mosberger
2003-11-18 2:17 ` Ulrich Drepper
2003-11-18 5:44 ` David Mosberger
2003-11-18 19:18 ` David Mosberger
2003-11-18 19:35 ` Ulrich Drepper
2003-11-18 20:08 ` David Mosberger
2003-11-14 20:13 ` patch to fix unwind info for ia64 David Mosberger
2003-11-14 20:21 ` David Mosberger
2003-11-14 20:24 ` Roland McGrath
2003-11-14 21:12 ` David Mosberger
2003-11-15 17:42 ` Andreas Schwab
2003-11-15 18:52 ` David Mosberger
2003-11-19 6:19 ` David Mosberger
2003-11-19 15:25 ` Ulrich Drepper
2003-10-31 16:43 ` new syscall stub support for ia64 libc David Mosberger
2003-10-29 17:54 ` Ulrich Drepper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16288.50694.36460.339805@napali.hpl.hp.com \
--to=davidm@napali.hpl.hp.com \
--cc=davidm@hpl.hp.com \
--cc=jakub@redhat.com \
--cc=libc-hacker@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).