Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* RE: [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
@ 2004-11-22 17:31 Randolph Chung
  2004-11-22 19:35 ` Mark Kettenis
  0 siblings, 1 reply; 6+ messages in thread
From: Randolph Chung @ 2004-11-22 17:31 UTC (permalink / raw)
  To: gdb-patches, Mark Kettenis

> 	* hppa-hpux-nat.c: New file.

Mark, is there any particular reason why we can't fix hppah-nat.c
instead of introducing a new file altogether? Is hpux10.20 really so 
different from hpux11i?

if possible I'd like to avoid having so many pa files to maintain :)

randolph
-- 
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
  2004-11-22 17:31 [COMMIT] Cleanup HP-UX 10.20 support such that it builds again Randolph Chung
@ 2004-11-22 19:35 ` Mark Kettenis
  0 siblings, 0 replies; 6+ messages in thread
From: Mark Kettenis @ 2004-11-22 19:35 UTC (permalink / raw)
  To: randolph; +Cc: gdb-patches

   Date: Mon, 22 Nov 2004 09:31:40 -0800
   From: Randolph Chung <randolph@tausq.org>

   > 	* hppa-hpux-nat.c: New file.

   Mark, is there any particular reason why we can't fix hppah-nat.c
   instead of introducing a new file altogether? Is hpux10.20 really so 
   different from hpux11i?

Well, with software, everything is possible.  But to be honest, I
really think fixing hppah-nat.c would really be a lot of work, and I
think the end-result still won't be pretty.  To answer your question:
Yes, HP-UX 10.20 is radically different from HP-UX 11.xx.  If you
strip away all the layers of goo that the HP people have added, you'll
see that HP-UX 10.20 is a rather traditional ptrace(2) target, while
HP-UX 11.xx uses the HP-UX specific ttrace(2) function.  Actually,
most of the contents of hppah-nat.c, infptrace.c, inftarg.c and
infttrace.c is goo to make ttrace(2) look like ptrace(2).  Together
that goo adds up to more lines of code than the new code in
hppa-hpux-nat.c.

   if possible I'd like to avoid having so many pa files to maintain :)

Hopefully my next step can accomplish that.  I'm currently working on
a replacement for infttrace.c.  Actually it's already working pretty
well for 32-bit HP-UX 11.00, although follow-fork/vfork/exec and
"hardware" watchpoints don't work yet.  I'll probably check something
in today or tomorrow.  Then after I've re-implemented the missing
features we can throw the switch and get rid of hppah-nat.c,
infttrace.c and inftarg.c.  The end-result will be significantly less
code that will be much easier to maintain than the current code.

The major benefit of this all (and the emajor goal) is to make HP-UX
considerably less special than it is now.  I think this is essential
for the future of the HP-UX GDB port.  Without major surgery, it just
won't survive the changes being made to the core parts of GDB.

Cheers,

Mark


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
  2004-11-20 18:36   ` Mark Kettenis
@ 2004-11-21  4:49     ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2004-11-21  4:49 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: gdb-patches

> Date: Sat, 20 Nov 2004 19:36:46 +0100 (CET)
> From: Mark Kettenis <mark.kettenis@xs4all.nl>
> CC: gdb-patches@sources.redhat.com
> 
>    This new file required an additional entry in fnchange.lst; see below.
> 
> Sorry about that.  Thanks!

No sweat.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
  2004-11-20 18:14 ` Eli Zaretskii
@ 2004-11-20 18:36   ` Mark Kettenis
  2004-11-21  4:49     ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Kettenis @ 2004-11-20 18:36 UTC (permalink / raw)
  To: eliz; +Cc: gdb-patches

   Date: Sat, 20 Nov 2004 20:11:24 +0200
   From: "Eli Zaretskii" <eliz@gnu.org>

   > Date: Sat, 20 Nov 2004 18:28:25 +0100 (CET)
   > From: Mark Kettenis <kettenis@gnu.org>
   > 
   > Index: ChangeLog
   > from  Mark Kettenis  <kettenis@gnu.org>
   >  
   > 	* hppa-hpux-nat.c: New file.

   This new file required an additional entry in fnchange.lst; see below.

Sorry about that.  Thanks!

Mark


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
  2004-11-20 17:28 Mark Kettenis
@ 2004-11-20 18:14 ` Eli Zaretskii
  2004-11-20 18:36   ` Mark Kettenis
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2004-11-20 18:14 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: gdb-patches

> Date: Sat, 20 Nov 2004 18:28:25 +0100 (CET)
> From: Mark Kettenis <kettenis@gnu.org>
> 
> Index: ChangeLog
> from  Mark Kettenis  <kettenis@gnu.org>
>  
> 	* hppa-hpux-nat.c: New file.

This new file required an additional entry in fnchange.lst; see below.

Committed.

2004-11-20  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Resolve file-name clash between
	hppa-hpux-tdep.c and the new hppa-hpux-nat.c.


Index: config/djgpp/fnchange.lst
===================================================================
RCS file: /cvs/src/src/gdb/config/djgpp/fnchange.lst,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- config/djgpp/fnchange.lst   13 Nov 2004 13:36:52 -0000      1.84
+++ config/djgpp/fnchange.lst   20 Nov 2004 18:08:32 -0000      1.85
@@ -241,6 +241,8 @@
 @V@/gdb/amd64-linux-nat.c @V@/gdb/amd64-lnat.c
 @V@/gdb/hppa-linux-tdep.c @V@/gdb/palnxtdep.c
 @V@/gdb/hppa-linux-nat.c @V@/gdb/palnxnat.c
+@V@/gdb/hppa-hpux-nat.c @V@/gdb/pahpuxnat.c
+@V@/gdb/hppa-hpux-tdep.c @V@/gdb/pahpuxtdep.c
 @V@/include/ChangeLog-9103 @V@/include/ChangeLog.9103
 @V@/include/coff/ChangeLog-9103 @V@/include/coff/ChangeLog.9103
 @V@/include/elf/ChangeLog-9103 @V@/include/elf/ChangeLog.9103


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [COMMIT] Cleanup HP-UX 10.20 support such that it builds again
@ 2004-11-20 17:28 Mark Kettenis
  2004-11-20 18:14 ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Kettenis @ 2004-11-20 17:28 UTC (permalink / raw)
  To: gdb-patches

Since no one object to slimming down the HP-UX support, this adds a
new simplified HP-UX 10.20 host configuration based on inf-ptrace.c.
Its test results are comparable to a testsuite run I did a couple of
weeks ago on an HP-UX 10.20 machine.  Most of the fancy HP-UX features
that are no longer part of the new configuration were already broken.

I've grabbed all oldish HP-UX variants into a single hppa*-*-hpux*
entry in configure.host.  I wouldn't be surprised if GDB builds on
HP-UX 9.  HP-UX 11(i) still has its own hppa*-*-hpux11*.  But I think
that one will disappear completely once we've autoconfiscated ptrace
vs. ttrace, and merged HP-UX 11(i) support into this new
configuration.

HP-UX 11(i) is still broken; it really needs a clean new inf-ttrace.c.
You might get away with configuring GDB with --host=hppa-hp-hpux10.20
on HP-UX 11(i) if you don't care about threads support.

Mark


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>
 
	* hppa-hpux-nat.c: New file.
	* config/pa/hpux.mh (NATDEPFILES): New file.
	* Makefile.in (ALLDEPFILES): Add hppa-hpux-nat.c.
	(hppa-hpux-nat.o): New dependency.
	* configure.host: Remove hppa*-*-hpux10.20.
	(hppa*-*-hpux*, hppa*-*-hiux*): Set gdb_host to hpux.mh.

 
Index: hppa-hpux-nat.c
===================================================================
RCS file: hppa-hpux-nat.c
diff -N hppa-hpux-nat.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hppa-hpux-nat.c 20 Nov 2004 17:14:03 -0000
@@ -0,0 +1,290 @@
+/* Native-dependent code for PA-RISC HP-UX.
+
+   Copyright 2004 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "defs.h"
+#include "inferior.h"
+#include "regcache.h"
+#include "target.h"
+
+#include "gdb_assert.h"
+#include <sys/ptrace.h>
+#include <machine/save_state.h>
+
+#include "hppa-tdep.h"
+#include "inf-ptrace.h"
+
+static int hppa_hpux_save_state_offset[] =
+{
+  ssoff(ss_flags),
+  ssoff(ss_narrow.ss_gr1),
+  ssoff(ss_narrow.ss_rp),
+  ssoff(ss_narrow.ss_gr3),
+  ssoff(ss_narrow.ss_gr4),
+  ssoff(ss_narrow.ss_gr5),
+  ssoff(ss_narrow.ss_gr6),
+  ssoff(ss_narrow.ss_gr7),
+  ssoff(ss_narrow.ss_gr8),
+  ssoff(ss_narrow.ss_gr9),
+  ssoff(ss_narrow.ss_gr10),
+  ssoff(ss_narrow.ss_gr11),
+  ssoff(ss_narrow.ss_gr12),
+  ssoff(ss_narrow.ss_gr13),
+  ssoff(ss_narrow.ss_gr14),
+  ssoff(ss_narrow.ss_gr15),
+  ssoff(ss_narrow.ss_gr16),
+  ssoff(ss_narrow.ss_gr17),
+  ssoff(ss_narrow.ss_gr18),
+  ssoff(ss_narrow.ss_gr19),
+  ssoff(ss_narrow.ss_gr20),
+  ssoff(ss_narrow.ss_gr21),
+  ssoff(ss_narrow.ss_gr22),
+  ssoff(ss_narrow.ss_arg3),
+  ssoff(ss_narrow.ss_arg2),
+  ssoff(ss_narrow.ss_arg1),
+  ssoff(ss_narrow.ss_arg0),
+  ssoff(ss_narrow.ss_dp),
+  ssoff(ss_narrow.ss_ret0),
+  ssoff(ss_narrow.ss_ret1),
+  ssoff(ss_narrow.ss_sp),
+  ssoff(ss_narrow.ss_gr31),
+  ssoff(ss_narrow.ss_cr11),
+  ssoff(ss_narrow.ss_pcoq_head),
+  ssoff(ss_narrow.ss_pcsq_head),
+  ssoff(ss_narrow.ss_pcoq_tail),
+  ssoff(ss_narrow.ss_pcsq_tail),
+  ssoff(ss_narrow.ss_cr15),
+  ssoff(ss_narrow.ss_cr19),
+  ssoff(ss_narrow.ss_cr20),
+  ssoff(ss_narrow.ss_cr21),
+  ssoff(ss_narrow.ss_cr22),
+  ssoff(ss_narrow.ss_cpustate),
+  ssoff(ss_narrow.ss_sr4),
+  ssoff(ss_narrow.ss_sr0),
+  ssoff(ss_narrow.ss_sr1),
+  ssoff(ss_narrow.ss_sr2),
+  ssoff(ss_narrow.ss_sr3),
+  ssoff(ss_narrow.ss_sr5),
+  ssoff(ss_narrow.ss_sr6),
+  ssoff(ss_narrow.ss_sr7),
+  ssoff(ss_narrow.ss_cr0),
+  ssoff(ss_narrow.ss_cr8),
+  ssoff(ss_narrow.ss_cr9),
+  ssoff(ss_narrow.ss_cr10),
+  ssoff(ss_narrow.ss_cr12),
+  ssoff(ss_narrow.ss_cr13),
+  ssoff(ss_narrow.ss_cr24),
+  ssoff(ss_narrow.ss_cr25),
+  ssoff(ss_narrow.ss_cr26),
+  ssoff(ss_narrow.ss_mpsfu_high),
+  ssoff(ss_narrow.ss_mpsfu_low),
+  ssoff(ss_narrow.ss_mpsfu_ovflo),
+  ssoff(ss_pad),
+  ssoff(ss_frstat),
+  ssoff(ss_frexcp1),
+  ssoff(ss_frexcp2),
+  ssoff(ss_frexcp3),
+  ssoff(ss_frexcp4),
+  ssoff(ss_frexcp5),
+  ssoff(ss_frexcp6),
+  ssoff(ss_frexcp7),
+  ssoff(ss_fr4_hi),
+  ssoff(ss_fr4_lo),
+  ssoff(ss_fr5_hi),
+  ssoff(ss_fr5_lo),
+  ssoff(ss_fr6_hi),
+  ssoff(ss_fr6_lo),
+  ssoff(ss_fr7_hi),
+  ssoff(ss_fr7_lo),
+  ssoff(ss_fr8_hi),
+  ssoff(ss_fr8_lo),
+  ssoff(ss_fr9_hi),
+  ssoff(ss_fr9_lo),
+  ssoff(ss_fr10_hi),
+  ssoff(ss_fr10_lo),
+  ssoff(ss_fr11_hi),
+  ssoff(ss_fr11_lo),
+  ssoff(ss_fr12_hi),
+  ssoff(ss_fr12_lo),
+  ssoff(ss_fr13_hi),
+  ssoff(ss_fr13_lo),
+  ssoff(ss_fr14_hi),
+  ssoff(ss_fr14_lo),
+  ssoff(ss_fr15_hi),
+  ssoff(ss_fr15_lo),
+  ssoff(ss_fr16_hi),
+  ssoff(ss_fr16_lo),
+  ssoff(ss_fr17_hi),
+  ssoff(ss_fr17_lo),
+  ssoff(ss_fr18_hi),
+  ssoff(ss_fr18_lo),
+  ssoff(ss_fr19_hi),
+  ssoff(ss_fr19_lo),
+  ssoff(ss_fr20_hi),
+  ssoff(ss_fr20_lo),
+  ssoff(ss_fr21_hi),
+  ssoff(ss_fr21_lo),
+  ssoff(ss_fr22_hi),
+  ssoff(ss_fr22_lo),
+  ssoff(ss_fr23_hi),
+  ssoff(ss_fr23_lo),
+  ssoff(ss_fr24_hi),
+  ssoff(ss_fr24_lo),
+  ssoff(ss_fr25_hi),
+  ssoff(ss_fr25_lo),
+  ssoff(ss_fr26_hi),
+  ssoff(ss_fr26_lo),
+  ssoff(ss_fr27_hi),
+  ssoff(ss_fr27_lo),
+  ssoff(ss_fr28_hi),
+  ssoff(ss_fr28_lo),
+  ssoff(ss_fr29_hi),
+  ssoff(ss_fr29_lo),
+  ssoff(ss_fr30_hi),
+  ssoff(ss_fr30_lo),
+  ssoff(ss_fr31_hi),
+  ssoff(ss_fr31_lo)
+};
+
+static int
+hppa_hpux_cannot_fetch_register (int regnum)
+{
+  gdb_assert (regnum >= 0 && regnum < NUM_REGS);
+  return (regnum >= ARRAY_SIZE(hppa_hpux_save_state_offset));
+}
+
+static int
+hppa_hpux_cannot_store_register (int regnum)
+{
+  return hppa_hpux_cannot_fetch_register (regnum);
+}
+
+static void
+hppa_hpux_fetch_register (int regnum)
+{
+  CORE_ADDR addr;
+  size_t size;
+  PTRACE_TYPE_RET *buf;
+  pid_t pid;
+  int i;
+
+  if (hppa_hpux_cannot_fetch_register (regnum))
+    {
+      regcache_raw_supply (current_regcache, regnum, NULL);
+      return;
+    }
+
+  pid = PIDGET (inferior_ptid);
+
+  /* This isn't really an address.  But ptrace thinks of it as one.  */
+  addr = hppa_hpux_save_state_offset[regnum];
+  size = register_size (current_gdbarch, regnum);
+
+  gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
+  buf = alloca (size);
+
+  /* Read the register contents from the inferior a chuck at the time.  */
+  for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++)
+    {
+      errno = 0;
+      buf[i] = ptrace (PT_RUREGS, pid, (PTRACE_TYPE_ARG3) addr, 0, 0);
+      if (errno != 0)
+	error ("Couldn't read register %s (#%d): %s.", REGISTER_NAME (regnum),
+	       regnum, safe_strerror (errno));
+
+      addr += sizeof (PTRACE_TYPE_RET);
+    }
+  regcache_raw_supply (current_regcache, regnum, buf);
+}
+
+static void
+hppa_hpux_fetch_inferior_registers (int regnum)
+{
+  if (regnum == -1)
+    for (regnum = 0; regnum < NUM_REGS; regnum++)
+      hppa_hpux_fetch_register (regnum);
+  else
+    hppa_hpux_fetch_register (regnum);
+}
+
+/* Store register REGNUM into the inferior.  */
+
+static void
+hppa_hpux_store_register (int regnum)
+{
+  CORE_ADDR addr;
+  size_t size;
+  PTRACE_TYPE_RET *buf;
+  pid_t pid;
+  int i;
+
+  if (hppa_hpux_cannot_store_register (regnum))
+    return;
+
+  pid = PIDGET (inferior_ptid);
+
+  /* This isn't really an address.  But ptrace thinks of it as one.  */
+  addr = hppa_hpux_save_state_offset[regnum];
+  size = register_size (current_gdbarch, regnum);
+
+  gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
+  buf = alloca (size);
+
+  /* Write the register contents into the inferior a chunk at the time.  */
+  regcache_raw_collect (current_regcache, regnum, buf);
+  for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++)
+    {
+      errno = 0;
+      ptrace (PT_WUREGS, pid, (PTRACE_TYPE_ARG3) addr, buf[i], 0);
+      if (errno != 0)
+	error ("Couldn't write register %s (#%d): %s.", REGISTER_NAME (regnum),
+	       regnum, safe_strerror (errno));
+
+      addr += sizeof (PTRACE_TYPE_RET);
+    }
+}
+
+/* Store register REGNUM back into the inferior.  If REGNUM is -1, do
+   this for all registers (including the floating point registers).  */
+
+static void
+hppa_hpux_store_inferior_registers (int regnum)
+{
+  if (regnum == -1)
+    for (regnum = 0; regnum < NUM_REGS; regnum++)
+      hppa_hpux_store_register (regnum);
+  else
+    hppa_hpux_store_register (regnum);
+}
+\f
+
+/* Prevent warning from -Wmissing-prototypes.  */
+void _initialize_hppa_hpux_nat (void);
+
+void
+_initialize_hppa_hpux_nat (void)
+{
+  struct target_ops *t;
+
+  t = inf_ptrace_target ();
+  t->to_fetch_registers = hppa_hpux_fetch_inferior_registers;
+  t->to_store_registers = hppa_hpux_store_inferior_registers;
+  add_target (t);
+}
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.670
diff -u -p -r1.670 Makefile.in
--- Makefile.in 20 Nov 2004 10:20:33 -0000 1.670
+++ Makefile.in 20 Nov 2004 17:14:06 -0000
@@ -1370,7 +1370,7 @@ ALLDEPFILES = \
 	fork-child.c \
 	glibc-tdep.c \
 	go32-nat.c h8300-tdep.c \
-	hppa-tdep.c hppa-hpux-tdep.c \
+	hppa-tdep.c hppa-hpux-tdep.c hppa-hpux-nat.c \
 	hppah-nat.c hpread.c \
 	hppa-linux-tdep.c hppa-linux-nat.c \
 	hppabsd-nat.c hppabsd-tdep.c \
@@ -1969,6 +1969,8 @@ hppabsd-tdep.o: hppabsd-tdep.c $(defs_h)
 hppah-nat.o: hppah-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
 	$(gdb_wait_h) $(regcache_h) $(gdb_string_h) $(infttrace_h) \
 	$(hppa_tdep_h)
+hppa-hpux-nat.o: hppa-hpux-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
+	$(target_h) $(gdb_assert_h) $(hppa_tdep_h) $(inf_ptrace_h)
 hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
 	$(osabi_h) $(gdb_string_h) $(frame_h) $(frame_unwind_h) \
 	$(trad_frame_h) $(symtab_h) $(objfiles_h) $(inferior_h) $(infcall_h) \
Index: configure.host
===================================================================
RCS file: /cvs/src/src/gdb/configure.host,v
retrieving revision 1.87
diff -u -p -r1.87 configure.host
--- configure.host 14 Nov 2004 00:10:52 -0000 1.87
+++ configure.host 20 Nov 2004 17:14:06 -0000
@@ -50,11 +50,10 @@ arm*-*-netbsdelf* | arm*-*-knetbsd*-gnu)
 			gdb_host=nbsdelf ;;
 arm*-*-netbsd*)		gdb_host=nbsdaout ;;
 
-hppa*-*-hiux*)		gdb_host=hppahpux ;;
-hppa*-*-hpux10.20)	gdb_host=hpux1020 ;;
 hppa*64*-*-hpux11*)	gdb_host=hpux11w ;;
 hppa*-*-hpux11*)	gdb_host=hpux11 ;;
-hppa*-*-hpux*)		gdb_host=hppahpux ;;
+hppa*-*-hpux* | hppa*-*-hiux*)
+			gdb_host=hpux ;;
 hppa*-*-linux*)		gdb_host=linux ;;
 hppa*-*-openbsd*)	gdb_host=obsd ;;
 
Index: config/pa/hpux.mh
===================================================================
RCS file: config/pa/hpux.mh
diff -N config/pa/hpux.mh
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ config/pa/hpux.mh 20 Nov 2004 17:14:06 -0000
@@ -0,0 +1,3 @@
+# Host: PA-RISC HP-UX
+NATDEPFILES= fork-child.o inf-ptrace.o \
+	hppa-hpux-nat.o hpread.o somread.o somsolib.o


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-11-22 19:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-22 17:31 [COMMIT] Cleanup HP-UX 10.20 support such that it builds again Randolph Chung
2004-11-22 19:35 ` Mark Kettenis
  -- strict thread matches above, loose matches on Subject: below --
2004-11-20 17:28 Mark Kettenis
2004-11-20 18:14 ` Eli Zaretskii
2004-11-20 18:36   ` Mark Kettenis
2004-11-21  4:49     ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox