This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] Eliminate DEPRECATED_REGISTER_BYTES, almost


Hello,

This patch removes DEPRECATED_REGISTER_BYTES from the architecture vector. Unfortunatly there are a few calls remaining (esp one for GNU's Hurd). For those I've changed the code to call a deprecated_register_bytes function that computes the value on the fly.

committed,
Andrew
2004-08-02  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (deprecated_register_bytes): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* regcache.c (deprecated_register_bytes): New function.
	* regcache.h (deprecated_register_bytes): Declare.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init_32082): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* remote.c (init_remote_state): Update.
	* remote-vx.c (vx_prepare_to_store): Update.
	* remote-sds.c (sds_fetch_registers, sds_prepare_to_store): Update.
	* irix5-nat.c (fetch_core_registers): Update.
	* cris-tdep.c (cris_register_bytes_ok): Update.
	* config/nm-gnu.h (CHILD_PREPARE_TO_STORE): Update.

Index: arm-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/arm-tdep.c,v
retrieving revision 1.182
diff -p -u -r1.182 arm-tdep.c
--- arm-tdep.c	2 Aug 2004 19:44:39 -0000	1.182
+++ arm-tdep.c	3 Aug 2004 01:42:11 -0000
@@ -2710,10 +2710,6 @@ arm_gdbarch_init (struct gdbarch_info in
   set_gdbarch_sp_regnum (gdbarch, ARM_SP_REGNUM);
   set_gdbarch_pc_regnum (gdbarch, ARM_PC_REGNUM);
   set_gdbarch_deprecated_register_byte (gdbarch, arm_register_byte);
-  set_gdbarch_deprecated_register_bytes (gdbarch,
-					 (NUM_GREGS * INT_REGISTER_SIZE
-					  + NUM_FREGS * FP_REGISTER_SIZE
-					  + NUM_SREGS * STATUS_REGISTER_SIZE));
   set_gdbarch_num_regs (gdbarch, NUM_GREGS + NUM_FREGS + NUM_SREGS);
   set_gdbarch_register_type (gdbarch, arm_register_type);
 
Index: cris-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/cris-tdep.c,v
retrieving revision 1.113
diff -p -u -r1.113 cris-tdep.c
--- cris-tdep.c	3 Aug 2004 00:57:25 -0000	1.113
+++ cris-tdep.c	3 Aug 2004 01:42:12 -0000
@@ -1320,7 +1320,7 @@ cris_register_name (int regno)
 static int
 cris_register_bytes_ok (long bytes)
 {
-  return (bytes == DEPRECATED_REGISTER_BYTES);
+  return (bytes == deprecated_register_bytes ());
 }
 
 /* Extract from an array regbuf containing the raw register state a function
@@ -3850,8 +3850,6 @@ cris_gdbarch_init (struct gdbarch_info i
       internal_error (__FILE__, __LINE__, "cris_gdbarch_init: unknown CRIS version");
     }
 
-  set_gdbarch_deprecated_register_bytes (gdbarch, register_bytes);
-
   /* Returns the register offset for the first byte of register regno's space 
      in the saved register state.  */
   set_gdbarch_deprecated_register_byte (gdbarch, cris_register_offset);
Index: gdbarch.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.c,v
retrieving revision 1.304
diff -p -u -r1.304 gdbarch.c
--- gdbarch.c	2 Aug 2004 19:44:39 -0000	1.304
+++ gdbarch.c	3 Aug 2004 01:42:13 -0000
@@ -146,7 +146,6 @@ struct gdbarch
   gdbarch_register_name_ftype *register_name;
   gdbarch_register_type_ftype *register_type;
   gdbarch_deprecated_register_virtual_type_ftype *deprecated_register_virtual_type;
-  int deprecated_register_bytes;
   gdbarch_deprecated_register_byte_ftype *deprecated_register_byte;
   gdbarch_deprecated_register_raw_size_ftype *deprecated_register_raw_size;
   gdbarch_deprecated_register_virtual_size_ftype *deprecated_register_virtual_size;
@@ -291,7 +290,6 @@ struct gdbarch startup_gdbarch =
   0,  /* register_name */
   0,  /* register_type */
   0,  /* deprecated_register_virtual_type */
-  0,  /* deprecated_register_bytes */
   generic_register_byte,  /* deprecated_register_byte */
   generic_register_size,  /* deprecated_register_raw_size */
   generic_register_size,  /* deprecated_register_virtual_size */
@@ -1198,14 +1196,6 @@ gdbarch_dump (struct gdbarch *current_gd
   fprintf_unfiltered (file,
                       "gdbarch_dump: deprecated_register_byte = <0x%lx>\n",
                       (long) current_gdbarch->deprecated_register_byte);
-#ifdef DEPRECATED_REGISTER_BYTES
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_REGISTER_BYTES # %s\n",
-                      XSTRING (DEPRECATED_REGISTER_BYTES));
-#endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: deprecated_register_bytes = %s\n",
-                      paddr_d (current_gdbarch->deprecated_register_bytes));
 #ifdef DEPRECATED_REGISTER_RAW_SIZE_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -2621,22 +2611,6 @@ set_gdbarch_deprecated_register_virtual_
 }
 
 int
-gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_register_bytes called\n");
-  return gdbarch->deprecated_register_bytes;
-}
-
-void
-set_gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch,
-                                       int deprecated_register_bytes)
-{
-  gdbarch->deprecated_register_bytes = deprecated_register_bytes;
-}
-
-int
 gdbarch_deprecated_register_byte_p (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
Index: gdbarch.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.h,v
retrieving revision 1.265
diff -p -u -r1.265 gdbarch.h
--- gdbarch.h	2 Aug 2004 19:44:39 -0000	1.265
+++ gdbarch.h	3 Aug 2004 01:42:15 -0000
@@ -481,18 +481,6 @@ extern void set_gdbarch_deprecated_regis
 #define DEPRECATED_REGISTER_VIRTUAL_TYPE(reg_nr) (gdbarch_deprecated_register_virtual_type (current_gdbarch, reg_nr))
 #endif
 
-/* DEPRECATED_REGISTER_BYTES can be deleted.  The value is computed
-   from REGISTER_TYPE. */
-
-extern int gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch);
-extern void set_gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch, int deprecated_register_bytes);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_BYTES)
-#error "Non multi-arch definition of DEPRECATED_REGISTER_BYTES"
-#endif
-#if !defined (DEPRECATED_REGISTER_BYTES)
-#define DEPRECATED_REGISTER_BYTES (gdbarch_deprecated_register_bytes (current_gdbarch))
-#endif
-
 /* If the value returned by DEPRECATED_REGISTER_BYTE agrees with the
    register offsets computed using just REGISTER_TYPE, this can be
    deleted.  See: maint print registers.  NOTE: cagney/2002-05-02: This
Index: gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.338
diff -p -u -r1.338 gdbarch.sh
--- gdbarch.sh	2 Aug 2004 19:44:40 -0000	1.338
+++ gdbarch.sh	3 Aug 2004 01:42:16 -0000
@@ -463,9 +463,6 @@ f:=:const char *:register_name:int regnr
 M::struct type *:register_type:int reg_nr:reg_nr
 # REGISTER_TYPE is a direct replacement for DEPRECATED_REGISTER_VIRTUAL_TYPE.
 F:=:struct type *:deprecated_register_virtual_type:int reg_nr:reg_nr
-# DEPRECATED_REGISTER_BYTES can be deleted.  The value is computed
-# from REGISTER_TYPE.
-v:=:int:deprecated_register_bytes
 # If the value returned by DEPRECATED_REGISTER_BYTE agrees with the
 # register offsets computed using just REGISTER_TYPE, this can be
 # deleted.  See: maint print registers.  NOTE: cagney/2002-05-02: This
Index: irix5-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/irix5-nat.c,v
retrieving revision 1.33
diff -p -u -r1.33 irix5-nat.c
--- irix5-nat.c	3 Aug 2004 00:57:26 -0000	1.33
+++ irix5-nat.c	3 Aug 2004 01:42:16 -0000
@@ -210,7 +210,7 @@ static void
 fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
 		      int which, CORE_ADDR reg_addr)
 {
-  if (core_reg_size == DEPRECATED_REGISTER_BYTES)
+  if (core_reg_size == deprecated_register_bytes ())
     {
       memcpy ((char *) deprecated_registers, core_reg_sect, core_reg_size);
     }
Index: mcore-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mcore-tdep.c,v
retrieving revision 1.93
diff -p -u -r1.93 mcore-tdep.c
--- mcore-tdep.c	26 Jul 2004 14:53:02 -0000	1.93
+++ mcore-tdep.c	3 Aug 2004 01:42:17 -0000
@@ -1041,7 +1041,6 @@ mcore_gdbarch_init (struct gdbarch_info 
   set_gdbarch_deprecated_register_virtual_size (gdbarch, mcore_register_size);
   set_gdbarch_deprecated_register_raw_size (gdbarch, mcore_register_size);
   set_gdbarch_deprecated_register_byte (gdbarch, mcore_register_byte);
-  set_gdbarch_deprecated_register_bytes (gdbarch, MCORE_REG_SIZE * MCORE_NUM_REGS);
   set_gdbarch_num_regs (gdbarch, MCORE_NUM_REGS);
   set_gdbarch_pc_regnum (gdbarch, 64);
   set_gdbarch_sp_regnum (gdbarch, 0);
Index: mn10300-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v
retrieving revision 1.111
diff -p -u -r1.111 mn10300-tdep.c
--- mn10300-tdep.c	3 Aug 2004 00:57:26 -0000	1.111
+++ mn10300-tdep.c	3 Aug 2004 01:42:17 -0000
@@ -1290,7 +1290,6 @@ mn10300_gdbarch_init (struct gdbarch_inf
   set_gdbarch_num_regs (gdbarch, num_regs);
   set_gdbarch_register_name (gdbarch, register_name);
   set_gdbarch_deprecated_register_size (gdbarch, 4);
-  set_gdbarch_deprecated_register_bytes (gdbarch, num_regs * gdbarch_deprecated_register_size (gdbarch));
   set_gdbarch_deprecated_register_raw_size (gdbarch, mn10300_register_raw_size);
   set_gdbarch_deprecated_register_byte (gdbarch, mn10300_register_byte);
   set_gdbarch_deprecated_register_virtual_size (gdbarch, mn10300_register_virtual_size);
Index: ns32k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v
retrieving revision 1.77
diff -p -u -r1.77 ns32k-tdep.c
--- ns32k-tdep.c	13 Jun 2004 13:49:53 -0000	1.77
+++ ns32k-tdep.c	3 Aug 2004 01:42:17 -0000
@@ -475,7 +475,6 @@ ns32k_gdbarch_init_32082 (struct gdbarch
   set_gdbarch_num_regs (gdbarch, NS32K_NUM_REGS_32082);
 
   set_gdbarch_register_name (gdbarch, ns32k_register_name_32082);
-  set_gdbarch_deprecated_register_bytes (gdbarch, NS32K_REGISTER_BYTES_32082);
   set_gdbarch_deprecated_register_byte (gdbarch, ns32k_register_byte_32082);
 }
 
@@ -485,7 +484,6 @@ ns32k_gdbarch_init_32382 (struct gdbarch
   set_gdbarch_num_regs (gdbarch, NS32K_NUM_REGS_32382);
 
   set_gdbarch_register_name (gdbarch, ns32k_register_name_32382);
-  set_gdbarch_deprecated_register_bytes (gdbarch, NS32K_REGISTER_BYTES_32382);
   set_gdbarch_deprecated_register_byte (gdbarch, ns32k_register_byte_32382);
 }
 
Index: regcache.c
===================================================================
RCS file: /cvs/src/src/gdb/regcache.c,v
retrieving revision 1.122
diff -p -u -r1.122 regcache.c
--- regcache.c	3 Aug 2004 00:57:26 -0000	1.122
+++ regcache.c	3 Aug 2004 01:42:17 -0000
@@ -943,6 +943,14 @@ register_offset_hack (struct gdbarch *gd
   return descr->register_offset[regnum];
 }
 
+/* Hack to keep code using register_bytes working.  */
+
+int
+deprecated_register_bytes (void)
+{
+  return current_regcache->descr->sizeof_raw_registers;
+}
+
 /* Return the contents of register REGNUM as an unsigned integer.  */
 
 ULONGEST
Index: regcache.h
===================================================================
RCS file: /cvs/src/src/gdb/regcache.h,v
retrieving revision 1.43
diff -p -u -r1.43 regcache.h
--- regcache.h	2 Aug 2004 21:58:44 -0000	1.43
+++ regcache.h	3 Aug 2004 01:42:19 -0000
@@ -113,6 +113,10 @@ extern void regcache_raw_collect (const 
 
 extern int register_offset_hack (struct gdbarch *gdbarch, int regnum);
 
+/* Similar.  The total number of bytes occupied by a regcache.  */
+
+extern int deprecated_register_bytes (void );
+
 
 /* The type of a register.  This function is slightly more efficient
    then its gdbarch vector counterpart since it returns a precomputed
Index: remote-sds.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-sds.c,v
retrieving revision 1.31
diff -p -u -r1.31 remote-sds.c
--- remote-sds.c	26 Jul 2004 14:53:04 -0000	1.31
+++ remote-sds.c	3 Aug 2004 01:42:19 -0000
@@ -456,10 +456,10 @@ sds_fetch_registers (int regno)
 {
   unsigned char buf[PBUFSIZ];
   int i, retlen;
-  char *regs = alloca (DEPRECATED_REGISTER_BYTES);
+  char *regs = alloca (deprecated_register_bytes ());
 
   /* Unimplemented registers read as all bits zero.  */
-  memset (regs, 0, DEPRECATED_REGISTER_BYTES);
+  memset (regs, 0, deprecated_register_bytes ());
 
   buf[0] = 18;
   buf[1] = 1;
@@ -493,7 +493,7 @@ static void
 sds_prepare_to_store (void)
 {
   /* Make sure the entire registers array is valid.  */
-  deprecated_read_register_bytes (0, (char *) NULL, DEPRECATED_REGISTER_BYTES);
+  deprecated_read_register_bytes (0, (char *) NULL, deprecated_register_bytes ());
 }
 
 /* Store register REGNO, or all registers if REGNO == -1, from the contents
Index: remote-vx.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-vx.c,v
retrieving revision 1.33
diff -p -u -r1.33 remote-vx.c
--- remote-vx.c	26 Jul 2004 14:53:04 -0000	1.33
+++ remote-vx.c	3 Aug 2004 01:42:20 -0000
@@ -466,7 +466,7 @@ static void
 vx_prepare_to_store (void)
 {
   /* Fetch all registers, if any of them are not yet fetched.  */
-  deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES);
+  deprecated_read_register_bytes (0, NULL, deprecated_register_bytes ());
 }
 
 /* Copy LEN bytes to or from remote inferior's memory starting at MEMADDR
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.144
diff -p -u -r1.144 remote.c
--- remote.c	3 Aug 2004 00:57:26 -0000	1.144
+++ remote.c	3 Aug 2004 01:42:24 -0000
@@ -250,8 +250,8 @@ init_remote_state (struct gdbarch *gdbar
   int regnum;
   struct remote_state *rs = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct remote_state);
 
-  if (DEPRECATED_REGISTER_BYTES != 0)
-    rs->sizeof_g_packet = DEPRECATED_REGISTER_BYTES;
+  if (deprecated_register_bytes () != 0)
+    rs->sizeof_g_packet = deprecated_register_bytes ();
   else
     rs->sizeof_g_packet = 0;
 
@@ -268,7 +268,7 @@ init_remote_state (struct gdbarch *gdbar
       /* ...name = REGISTER_NAME (regnum); */
 
       /* Compute packet size by accumulating the size of all registers. */
-      if (DEPRECATED_REGISTER_BYTES == 0)
+      if (deprecated_register_bytes () == 0)
         rs->sizeof_g_packet += register_size (current_gdbarch, regnum);
     }
 
Index: sh64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh64-tdep.c,v
retrieving revision 1.30
diff -p -u -r1.30 sh64-tdep.c
--- sh64-tdep.c	2 Aug 2004 19:44:40 -0000	1.30
+++ sh64-tdep.c	3 Aug 2004 01:42:25 -0000
@@ -2850,9 +2850,6 @@ sh64_gdbarch_init (struct gdbarch_info i
   /* The number of real registers is the same whether we are in 
      ISA16(compact) or ISA32(media).  */
   set_gdbarch_num_regs (gdbarch, SIM_SH64_NR_REGS);
-  set_gdbarch_deprecated_register_bytes (gdbarch,
-					 ((SIM_SH64_NR_FP_REGS + 1) * 4)
-					 + (SIM_SH64_NR_REGS - SIM_SH64_NR_FP_REGS -1) * 8);
 
   set_gdbarch_register_name (gdbarch, sh64_register_name);
   set_gdbarch_register_type (gdbarch, sh64_register_type);
Index: v850-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/v850-tdep.c,v
retrieving revision 1.90
diff -p -u -r1.90 v850-tdep.c
--- v850-tdep.c	3 Aug 2004 00:57:27 -0000	1.90
+++ v850-tdep.c	3 Aug 2004 01:42:25 -0000
@@ -1191,7 +1191,6 @@ v850_gdbarch_init (struct gdbarch_info i
   set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM);
   set_gdbarch_register_name (gdbarch, v850_register_name);
   set_gdbarch_deprecated_register_size (gdbarch, v850_reg_size);
-  set_gdbarch_deprecated_register_bytes (gdbarch, E_ALL_REGS_SIZE);
   set_gdbarch_deprecated_register_byte (gdbarch, v850_register_byte);
   set_gdbarch_deprecated_register_raw_size (current_gdbarch, gdbarch, v850_register_raw_size);
   set_gdbarch_deprecated_register_virtual_size (gdbarch, v850_register_raw_size);
Index: xstormy16-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v
retrieving revision 1.80
diff -p -u -r1.80 xstormy16-tdep.c
--- xstormy16-tdep.c	3 Aug 2004 00:57:27 -0000	1.80
+++ xstormy16-tdep.c	3 Aug 2004 01:42:25 -0000
@@ -1127,7 +1127,6 @@ xstormy16_gdbarch_init (struct gdbarch_i
   set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM);
   set_gdbarch_register_name (gdbarch, xstormy16_register_name);
   set_gdbarch_deprecated_register_size (gdbarch, xstormy16_reg_size);
-  set_gdbarch_deprecated_register_bytes (gdbarch, E_ALL_REGS_SIZE);
   set_gdbarch_deprecated_register_byte (gdbarch, xstormy16_register_byte);
   set_gdbarch_deprecated_register_raw_size (gdbarch, xstormy16_register_raw_size);
   set_gdbarch_deprecated_register_virtual_size (gdbarch, xstormy16_register_raw_size);
Index: config/nm-gnu.h
===================================================================
RCS file: /cvs/src/src/gdb/config/nm-gnu.h,v
retrieving revision 1.6
diff -p -u -r1.6 nm-gnu.h
--- config/nm-gnu.h	1 Aug 2004 14:37:01 -0000	1.6
+++ config/nm-gnu.h	3 Aug 2004 01:42:25 -0000
@@ -30,7 +30,7 @@
 extern char *gnu_target_pid_to_str (int pid);
 
 /* Before storing, we need to read all the registers.  */
-#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES)
+#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, deprecated_register_bytes ())
 
 /* Don't do wait_for_inferior on attach.  */
 #define ATTACH_NO_WAIT
Index: doc/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/doc/ChangeLog,v
retrieving revision 1.434
diff -p -u -r1.434 ChangeLog
--- doc/ChangeLog	30 Jul 2004 19:23:54 -0000	1.434
+++ doc/ChangeLog	3 Aug 2004 01:42:26 -0000
@@ -1,3 +1,8 @@
+2004-08-02  Andrew Cagney  <cagney@gnu.org>
+
+	* gdbint.texinfo (Target Architecture Definition): Delete
+	description of DEPRECATED_REGISTER_BYTES.
+
 2004-07-30  Baurjan Ismagulov  <ibr@ata.cs.hun.edu.tr>
 
 	* gdb.texinfo (Source Path): Document the new behavior of
Index: doc/gdbint.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v
retrieving revision 1.214
diff -p -u -r1.214 gdbint.texinfo
--- doc/gdbint.texinfo	1 Jul 2004 20:25:54 -0000	1.214
+++ doc/gdbint.texinfo	3 Aug 2004 01:42:28 -0000
@@ -3626,14 +3626,6 @@ reserved for that breakpoint, and @var{r
 This method replaces @code{CALL_DUMMY_LOCATION},
 @code{DEPRECATED_REGISTER_SIZE}.
 
-@item DEPRECATED_REGISTER_BYTES
-@findex DEPRECATED_REGISTER_BYTES
-The total amount of space needed to store @value{GDBN}'s copy of the
-machine's register state.
-
-This is no longer needed.  @value{GDBN} instead computes the size of the
-register buffer at run-time.
-
 @item REGISTER_NAME(@var{i})
 @findex REGISTER_NAME
 Return the name of register @var{i} as a string.  May return @code{NULL}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]