This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils 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]

[binutils-gdb] MIPS/BFD: Fix the size of `.reginfo' and `.MIPS.abiflags' sections


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6798f8bfa617c72240036571cb12313fef353090

commit 6798f8bfa617c72240036571cb12313fef353090
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Feb 19 18:38:41 2018 +0000

    MIPS/BFD: Fix the size of `.reginfo' and `.MIPS.abiflags' sections
    
    Use the SEC_FIXED_SIZE flag to actually fix the size of `.reginfo' and
    `.MIPS.abiflags' sections in `_bfd_mips_elf_always_size_sections', as
    originally intended, removing link failures such as:
    
    ld: final link failed: Section has no contents
    
    or:
    
    ld: final link failed: Bad value
    
    or:
    
    ld: foo: .reginfo section size should be 24 bytes, actual size is 32
    
    and assertion failures like:
    
    ld: BFD (GNU Binutils) 2.30.51.20180131 assertion fail .../bfd/elfxx-mips.c:14322
    
    in link scenarios involving a linker script that either creates an
    output `.reginfo' or `.MIPS.abiflags' section from scratch or produces
    either section from different sections.  If such an output section's
    size turns out to be incorrect according to the psABI, then the section
    is either truncated or padded out to the correct size, as relevant.
    
    This allows people to handle these sections in a link in an unusual way,
    while still addressing the issue covered by commit 58807c48a5a3
    ("_bfd_mips_elf_final_link: Notify user about wrong .reginfo size").
    
    The original arrangement, coming from an unindentified change made to
    what was called `mips_elf_always_size_sections' back then, between
    commit 02650bd0a97e ("This adds ABI flags to MIPS/ELF object files.")
    and commit 252b5132c753 ("19990502 sourceware import"), also missing
    from BFD ChangeLog files, assumed that the output section size is not
    going to change after return from `bfd_elf_size_dynamic_sections', the
    caller of that function, called in turn from `ldemul_before_allocation'
    via `gld${EMULATION_NAME}_before_allocation' in ld/emultempl/elf32.em,
    and ultimately from `lang_process'.  This is because later on in
    `lang_process' processing `lang_size_sections' is called , happily
    recalculating the section size, and it has actually already been the
    case at the time of commit 252b5132c753 ("19990502 sourceware import"),
    so the assumption was clearly incorrect right from the beginning.
    
    	bfd/
    	* elfxx-mips.c (_bfd_mips_elf_always_size_sections): Set
    	SEC_FIXED_SIZE and SEC_HAS_CONTENTS flags for `.reginfo' and
    	`.MIPS.abiflags' sections.
    	(_bfd_mips_elf_final_link): Avoid reading beyond `.reginfo'
    	section's end.
    
    	ld/
    	* testsuite/ld-mips-elf/reginfo-0.d: New test.
    	* testsuite/ld-mips-elf/reginfo-0r.d: New test.
    	* testsuite/ld-mips-elf/reginfo-1.d: New test.
    	* testsuite/ld-mips-elf/reginfo-1r.d: New test.
    	* testsuite/ld-mips-elf/reginfo-2.d: New test.
    	* testsuite/ld-mips-elf/reginfo-2r.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-0.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-0r.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-1.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-1r.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-2.d: New test.
    	* testsuite/ld-mips-elf/mips-abiflags-2r.d: New test.
    	* testsuite/ld-mips-elf/reginfo-0.ld: New test linker script.
    	* testsuite/ld-mips-elf/reginfo-1.ld: New test linker script.
    	* testsuite/ld-mips-elf/mips-abiflags-0.ld: New test linker
    	script.
    	* testsuite/ld-mips-elf/mips-abiflags-1.ld: New test linker
    	script.
    	* testsuite/ld-mips-elf/reginfo-1.s: New test source.
    	* testsuite/ld-mips-elf/reginfo-2.s: New test source.
    	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.

Diff:
---
 bfd/ChangeLog                               |  8 ++++++++
 bfd/elfxx-mips.c                            | 17 ++++++++++++++---
 ld/ChangeLog                                | 24 ++++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-0.d  |  9 +++++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-0.ld |  5 +++++
 ld/testsuite/ld-mips-elf/mips-abiflags-0r.d |  6 ++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-1.d  |  6 ++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-1.ld |  5 +++++
 ld/testsuite/ld-mips-elf/mips-abiflags-1r.d |  6 ++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-2.d  |  6 ++++++
 ld/testsuite/ld-mips-elf/mips-abiflags-2r.d |  6 ++++++
 ld/testsuite/ld-mips-elf/mips-elf.exp       | 17 +++++++++++++++++
 ld/testsuite/ld-mips-elf/reginfo-0.d        |  9 +++++++++
 ld/testsuite/ld-mips-elf/reginfo-0.ld       |  5 +++++
 ld/testsuite/ld-mips-elf/reginfo-0r.d       |  9 +++++++++
 ld/testsuite/ld-mips-elf/reginfo-1.d        |  9 +++++++++
 ld/testsuite/ld-mips-elf/reginfo-1.ld       |  5 +++++
 ld/testsuite/ld-mips-elf/reginfo-1.s        | 10 ++++++++++
 ld/testsuite/ld-mips-elf/reginfo-1r.d       |  9 +++++++++
 ld/testsuite/ld-mips-elf/reginfo-2.d        |  9 +++++++++
 ld/testsuite/ld-mips-elf/reginfo-2.s        | 10 ++++++++++
 ld/testsuite/ld-mips-elf/reginfo-2r.d       |  9 +++++++++
 22 files changed, 196 insertions(+), 3 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b84a3d1..6820732 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,13 @@
 2018-02-19  Maciej W. Rozycki  <macro@mips.com>
 
+	* elfxx-mips.c (_bfd_mips_elf_always_size_sections): Set
+	SEC_FIXED_SIZE and SEC_HAS_CONTENTS flags for `.reginfo' and
+	`.MIPS.abiflags' sections.
+	(_bfd_mips_elf_final_link): Avoid reading beyond `.reginfo'
+	section's end.
+
+2018-02-19  Maciej W. Rozycki  <macro@mips.com>
+
 	* section.c (SEC_FIXED_SIZE): New macro.
 	* bfd-in2.h: Regenerate.
 
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 211f6f9..1b24f66 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -9294,12 +9294,19 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
   /* The .reginfo section has a fixed size.  */
   sect = bfd_get_section_by_name (output_bfd, ".reginfo");
   if (sect != NULL)
-    bfd_set_section_size (output_bfd, sect, sizeof (Elf32_External_RegInfo));
+    {
+      bfd_set_section_size (output_bfd, sect, sizeof (Elf32_External_RegInfo));
+      sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
+    }
 
   /* The .MIPS.abiflags section has a fixed size.  */
   sect = bfd_get_section_by_name (output_bfd, ".MIPS.abiflags");
   if (sect != NULL)
-    bfd_set_section_size (output_bfd, sect, sizeof (Elf_External_ABIFlags_v0));
+    {
+      bfd_set_section_size (output_bfd, sect,
+			    sizeof (Elf_External_ABIFlags_v0));
+      sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
+    }
 
   hti.info = info;
   hti.output_bfd = output_bfd;
@@ -14368,6 +14375,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 	      bfd *input_bfd;
 	      Elf32_External_RegInfo ext;
 	      Elf32_RegInfo sub;
+	      bfd_size_type sz;
 
 	      if (p->type != bfd_indirect_link_order)
 		{
@@ -14379,8 +14387,11 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 	      input_section = p->u.indirect.section;
 	      input_bfd = input_section->owner;
 
+	      sz = (input_section->size < sizeof (ext)
+		    ? input_section->size : sizeof (ext));
+	      memset (&ext, 0, sizeof (ext));
 	      if (! bfd_get_section_contents (input_bfd, input_section,
-					      &ext, 0, sizeof ext))
+					      &ext, 0, sz))
 		return FALSE;
 
 	      bfd_mips_elf32_swap_reginfo_in (input_bfd, &ext, &sub);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4f5cd5f..f2cc005 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,29 @@
 2018-02-19  Maciej W. Rozycki  <macro@mips.com>
 
+	* testsuite/ld-mips-elf/reginfo-0.d: New test.
+	* testsuite/ld-mips-elf/reginfo-0r.d: New test.
+	* testsuite/ld-mips-elf/reginfo-1.d: New test.
+	* testsuite/ld-mips-elf/reginfo-1r.d: New test.
+	* testsuite/ld-mips-elf/reginfo-2.d: New test.
+	* testsuite/ld-mips-elf/reginfo-2r.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-0.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-0r.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-1.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-1r.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-2.d: New test.
+	* testsuite/ld-mips-elf/mips-abiflags-2r.d: New test.
+	* testsuite/ld-mips-elf/reginfo-0.ld: New test linker script.
+	* testsuite/ld-mips-elf/reginfo-1.ld: New test linker script.
+	* testsuite/ld-mips-elf/mips-abiflags-0.ld: New test linker
+	script.
+	* testsuite/ld-mips-elf/mips-abiflags-1.ld: New test linker
+	script.
+	* testsuite/ld-mips-elf/reginfo-1.s: New test source.
+	* testsuite/ld-mips-elf/reginfo-2.s: New test source.
+	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
+
+2018-02-19  Maciej W. Rozycki  <macro@mips.com>
+
 	* ldlang.c (insert_pad): Do not change output section's size if
 	SEC_FIXED_SIZE is set in the flags.
 	(size_input_section): Likewise.
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0.d b/ld/testsuite/ld-mips-elf/mips-abiflags-0.d
new file mode 100644
index 0000000..8d243f4
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0.d
@@ -0,0 +1,9 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 0
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-0.ld
+
+Hex dump of section '\.MIPS\.abiflags':
+  0x00000000 ........ ........ ........ ........ .*
+  0x00000010 ........ ........                   .*
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld b/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld
new file mode 100644
index 0000000..419756e
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+  .MIPS.abiflags : { foo = .; }
+  /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d
new file mode 100644
index 0000000..0118e07
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 0 (relocatable)
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-0.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1.d b/ld/testsuite/ld-mips-elf/mips-abiflags-1.d
new file mode 100644
index 0000000..d28b3da
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 1
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld b/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld
new file mode 100644
index 0000000..7287a1e
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+  .MIPS.abiflags : { *(.foo) }
+  /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d
new file mode 100644
index 0000000..821a5b2
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 1 (relocatable)
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-2.d b/ld/testsuite/ld-mips-elf/mips-abiflags-2.d
new file mode 100644
index 0000000..796a8c2
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-2.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 2
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d
new file mode 100644
index 0000000..596e0eb
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 2 (relocatable)
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index 13dbbc6..144b007 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -57,6 +57,7 @@ set has_newabi [expr [istarget *-*-irix6*] \
 		     || [istarget mips*-sde-elf*] \
 		     || [istarget mips*-mti-elf*] \
 		     || [istarget mips*-img-elf*]]
+set has_elf32 [expr ![istarget *-*-openbsd*]]
 set linux_gnu [expr [istarget mips*-*-linux*]]
 set embedded_elf [expr [istarget mips*-*-elf]]
 
@@ -1237,3 +1238,19 @@ rename mips_old_prune_warnings prune_warnings
 
 # Verify that we can link ELF input into the `binary' output format.
 run_dump_test "binary"
+
+# Verify special section processing.
+if $has_elf32 {
+    run_dump_test "reginfo-0"
+    run_dump_test "reginfo-0r"
+    run_dump_test "reginfo-1"
+    run_dump_test "reginfo-1r"
+    run_dump_test "reginfo-2"
+    run_dump_test "reginfo-2r"
+}
+run_dump_test "mips-abiflags-0"
+run_dump_test "mips-abiflags-0r"
+run_dump_test "mips-abiflags-1"
+run_dump_test "mips-abiflags-1r"
+run_dump_test "mips-abiflags-2"
+run_dump_test "mips-abiflags-2r"
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0.d b/ld/testsuite/ld-mips-elf/reginfo-0.d
new file mode 100644
index 0000000..ee731eb
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 0
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-0.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 00000000 00000000 00000000 00000000 .*
+  0x00000010 00000000 00000000                   .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0.ld b/ld/testsuite/ld-mips-elf/reginfo-0.ld
new file mode 100644
index 0000000..d37eb0a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+  .reginfo : { foo = .; }
+  /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0r.d b/ld/testsuite/ld-mips-elf/reginfo-0r.d
new file mode 100644
index 0000000..f37ff80
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 0 (relocatable)
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-0.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 00000000 00000000 00000000 00000000 .*
+  0x00000010 00000000 ........                   .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.d b/ld/testsuite/ld-mips-elf/reginfo-1.d
new file mode 100644
index 0000000..dc98549
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 1
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+  0x00000010 00000000 00000000                   .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.ld b/ld/testsuite/ld-mips-elf/reginfo-1.ld
new file mode 100644
index 0000000..151d19a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+  .reginfo : { *(.foo) }
+  /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.s b/ld/testsuite/ld-mips-elf/reginfo-1.s
new file mode 100644
index 0000000..2aad272
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.s
@@ -0,0 +1,10 @@
+	.section .foo, "aw", @progbits
+	.globl	foo
+	.type	foo, @object
+foo:
+	.set	.Li, 0
+	.rept	16
+	.set	.Li, .Li + 1
+	.byte	.Li
+	.endr
+	.size	foo, . - foo
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1r.d b/ld/testsuite/ld-mips-elf/reginfo-1r.d
new file mode 100644
index 0000000..ca262fd
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 1 (relocatable)
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+  0x00000010 00000000 ........                   .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2.d b/ld/testsuite/ld-mips-elf/reginfo-2.d
new file mode 100644
index 0000000..11b7360
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 2
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+  0x00000010 11121314 00000000                   .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2.s b/ld/testsuite/ld-mips-elf/reginfo-2.s
new file mode 100644
index 0000000..fdc6e6a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2.s
@@ -0,0 +1,10 @@
+	.section .foo, "aw", @progbits
+	.globl	foo
+	.type	foo, @object
+foo:
+	.set	.Li, 0
+	.rept	32
+	.set	.Li, .Li + 1
+	.byte	.Li
+	.endr
+	.size	foo, . - foo
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2r.d b/ld/testsuite/ld-mips-elf/reginfo-2r.d
new file mode 100644
index 0000000..f133337
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 2 (relocatable)
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+  0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+  0x00000010 11121314 ........                   .*


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