This is the mail archive of the binutils@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]

Re: [PATCH]: Add DWARF debugging format support for arm-wince-pe


Nick Clifton wrote:
Hi Pedro,

Updated patch for gas attached.

There are still a few minor problems with this part of the patch:


+#ifdef TE_PE
+static void pe_directive_secrel PARAMS ((int));

There is no need for this declaration, it is redundant. Plus we are not using the PARAMS macro any more.


+static void
+pe_directive_secrel (dummy)
+int dummy ATTRIBUTE_UNUSED;

We are following the ISO-C90 standard now, so the type qualifiers for function arguments should be included in the declaration, ie:


pe_directive_secrel (int dummy ATTRIBUTE_UNUSED)


With these two changes the entire patch is approved.



Thanks.


Attached is the updated gas patch with Nick's requested changes, and also the previous bfd and ld testsuite patches.

Nick, just to be sure, with "entire patch", you mean bfd+gas+ld, or just
gas?

Also, since I don't have commit privileges, could someone else (Nick?)
please commit them?

(Same for:
http://sourceware.org/ml/binutils/2006-08/msg00057.html
http://sourceware.org/ml/binutils/2006-08/msg00056.html)

Cheers,
Pedro Alves



----

bfd/ChangeLog
2006-08-05  Pedro Alves  <pedro_alves@portugalmail.pt>

    * bfd.c (bfd_get_sign_extend_vma): Add cases for pe-arm-little
    and pei-arm-little.
    * coff-arm.c (coff_arm_rtype_to_howto) [COFF_WITH_PE]: Handle
    ARM_SECREL.
    (coff_arm_reloc_type_lookup): Map BFD_RELOC_32_SECREL to
    ARM_SECREL.
    * pe-arm.c [COFF_SECTION_ALIGNMENT_ENTRIES]: Define.
    * pei-arm.c [TARGET_UNDERSCORE]: Define for ARM_WINCE like in
    pe-arm.c.
    [COFF_SECTION_ALIGNMENT_ENTRIES]: Define.

---

gas/ChangeLog
2006-08-05  Pedro Alves  <pedro_alves@portugalmail.pt>

    * config/tc-arm.c: Move "dwarf2dbg.h" inclusion out of OBJ_ELF
    only block.
    (pe_directive_secrel) [TE_PE]: New function.
    (md_pseudo_table) [!OBJ_ELF]: Handle 2byte, 4byte, 8byte, file,
    loc, loc_mark_labels.
    [TE_PE]: Handle secrel32.
    (output_relax_insn): Remove OBJ_ELF around dwarf2_emit_insn
    call.
    (output_inst): Remove OBJ_ELF around dwarf2_emit_insn call.
    (arm_frob_label): Remove OBJ_ELF around dwarf2_emit_label call.
    (md_section_align): Only round section sizes here for AOUT
    targets.
    (tc_arm_regname_to_dw2regnum): Move out for OBJ_ELF only block.
    (tc_pe_dwarf2_emit_offset): New function.
    (md_apply_fix) [TE_PE]: Handle BFD_RELOC_32_SECREL.
    (cons_fix_new_arm): Handle O_secrel.
    * config/tc-arm.h : Move DWARF2_LINE_MIN_INSN_LENGTH,
    DWARF2_DEFAULT_RETURN_COLUMN and DWARF2_CIE_DATA_ALIGNMENT out
    of OBJ_ELF only block.
    [TE_PE]: Define O_secrel, TC_DWARF2_EMIT_OFFSET, and declare
    tc_pe_dwarf2_emit_offset.

---

ld/testsuite
2006-08-05  Pedro Alves  <pedro_alves@portugalmail.pt>

    * ld-pe/pe.exp: Enable tests on arm-wince-pe.
    * ld-pe/secrel.d: Adjust test to work on arm-wince-pe too.

Index: config/tc-arm.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
retrieving revision 1.282
diff -u -p -r1.282 tc-arm.c
--- config/tc-arm.c	3 Aug 2006 15:58:59 -0000	1.282
+++ config/tc-arm.c	6 Aug 2006 14:25:18 -0000
@@ -37,10 +37,11 @@
 
 #ifdef OBJ_ELF
 #include "elf/arm.h"
-#include "dwarf2dbg.h"
 #include "dw2gencfi.h"
 #endif
 
+#include "dwarf2dbg.h"
+
 /* XXX Set this to 1 after the next binutils release.  */
 #define WARN_DEPRECATED 0
 
@@ -3878,6 +3879,30 @@ static void s_arm_arch (int);
 static void s_arm_cpu (int);
 static void s_arm_fpu (int);
 
+#ifdef TE_PE
+
+static void
+pe_directive_secrel (int dummy ATTRIBUTE_UNUSED) 
+{
+  expressionS exp;
+
+  do
+  {
+    expression (&exp);
+    if (exp.X_op == O_symbol)
+      exp.X_op = O_secrel;
+
+    emit_expr (&exp, 4);
+  }
+  while (*input_line_pointer++ == ',');
+
+  input_line_pointer--;
+  demand_empty_rest_of_line ();
+}
+#endif
+
+
+
 /* This table describes all the machine specific pseudo-ops the assembler
    has to support.  The fields are:
      pseudo-op name without dot
@@ -3926,10 +3951,22 @@ const pseudo_typeS md_pseudo_table[] =
   { "eabi_attribute",	s_arm_eabi_attribute,	0 },
 #else
   { "word",	   cons, 4},
+
+  /* These are used for dwarf.  */
+  {"2byte", cons, 2},
+  {"4byte", cons, 4},
+  {"8byte", cons, 8},
+  /* These are used for dwarf2.  */
+  { "file", (void (*) (int)) dwarf2_directive_file, 0 },
+  { "loc",  dwarf2_directive_loc,  0 },
+  { "loc_mark_labels", dwarf2_directive_loc_mark_labels, 0 },
 #endif
   { "extend",	   float_cons, 'x' },
   { "ldouble",	   float_cons, 'x' },
   { "packed",	   float_cons, 'p' },
+#ifdef TE_PE
+  {"secrel32", pe_directive_secrel, 0},
+#endif
   { 0, 0, 0 }
 };
 
@@ -13381,11 +13418,9 @@ output_relax_insn (void)
   symbolS *sym;
   int offset;
 
-#ifdef OBJ_ELF
   /* The size of the instruction is unknown, so tie the debug info to the
      start of the instruction.  */
   dwarf2_emit_insn (0);
-#endif
 
   switch (inst.reloc.exp.X_op)
     {
@@ -13453,9 +13488,7 @@ output_inst (const char * str)
 		 inst.size, & inst.reloc.exp, inst.reloc.pc_rel,
 		 inst.reloc.type);
 
-#ifdef OBJ_ELF
   dwarf2_emit_insn (inst.size);
-#endif
 }
 
 /* Tag values used in struct asm_opcode's tag field.  */
@@ -13906,9 +13939,7 @@ arm_frob_label (symbolS * sym)
       label_is_thumb_function_name = FALSE;
     }
 
-#ifdef OBJ_ELF
   dwarf2_emit_label (sym);
-#endif
 }
 
 int
@@ -16379,12 +16410,22 @@ valueT
 md_section_align (segT	 segment ATTRIBUTE_UNUSED,
 		  valueT size)
 {
-#ifdef OBJ_ELF
-  return size;
-#else
-  /* Round all sects to multiple of 4.	*/
-  return (size + 3) & ~3;
+#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
+  if (OUTPUT_FLAVOR == bfd_target_aout_flavour)
+    {
+      /* For a.out, force the section size to be aligned.  If we don't do
+	 this, BFD will align it for us, but it will not write out the
+	 final bytes of the section.  This may be a bug in BFD, but it is
+	 easier to fix it here since that is how the other a.out targets
+	 work.  */
+      int align;
+
+      align = bfd_get_section_alignment (stdoutput, segment);
+      size = ((size + (1 << align) - 1) & ((valueT) -1 << align));
+    }
 #endif
+
+  return size;
 }
 
 /* This is called from HANDLE_ALIGN in write.c.	 Fill in the contents
@@ -16884,6 +16925,16 @@ create_unwind_entry (int have_data)
   return 0;
 }
 
+
+/* Initialize the DWARF-2 unwind information for this procedure.  */
+
+void
+tc_arm_frame_initial_instructions (void)
+{
+  cfi_add_CFA_def_cfa (REG_SP, 0);
+}
+#endif /* OBJ_ELF */
+
 /* Convert REGNAME to a DWARF-2 register number.  */
 
 int
@@ -16897,15 +16948,18 @@ tc_arm_regname_to_dw2regnum (char *regna
   return reg;
 }
 
-/* Initialize the DWARF-2 unwind information for this procedure.  */
-
+#ifdef TE_PE
 void
-tc_arm_frame_initial_instructions (void)
+tc_pe_dwarf2_emit_offset (symbolS *symbol, unsigned int size)
 {
-  cfi_add_CFA_def_cfa (REG_SP, 0);
-}
-#endif /* OBJ_ELF */
+  expressionS expr;
 
+  expr.X_op = O_secrel;
+  expr.X_add_symbol = symbol;
+  expr.X_add_number = 0;
+  emit_expr (&expr, size);
+}
+#endif
 
 /* MD interface: Symbol and relocation handling.  */
 
@@ -17897,8 +17951,11 @@ md_apply_fix (fixS *	fixP,
     case BFD_RELOC_ARM_ROSEGREL32:
     case BFD_RELOC_ARM_SBREL32:
     case BFD_RELOC_32_PCREL:
-      if (fixP->fx_done || !seg->use_rela_p)
-#ifdef TE_WINCE
+#ifdef TE_PE
+    case BFD_RELOC_32_SECREL:
+#endif
+      if (fixP->fx_done || !seg->use_rela_p)
+#ifdef TE_WINCE
 	/* For WinCE we only do this for pcrel fixups.  */
 	if (fixP->fx_done || fixP->fx_pcrel)
 #endif
@@ -18435,6 +18492,9 @@ tc_gen_reloc (asection *section, fixS *f
     case BFD_RELOC_THUMB_PCREL_BLX:
     case BFD_RELOC_VTABLE_ENTRY:
     case BFD_RELOC_VTABLE_INHERIT:
+#ifdef TE_PE
+    case BFD_RELOC_32_SECREL:
+#endif
       code = fixp->fx_r_type;
       break;
 
@@ -18617,6 +18677,14 @@ cons_fix_new_arm (fragS *	frag,
       break;
     }
 
+#ifdef TE_PE
+  if (exp->X_op == O_secrel)
+  {
+    exp->X_op = O_symbol;
+    type = BFD_RELOC_32_SECREL;
+  }
+#endif
+
   fix_new_exp (frag, where, (int) size, exp, pcrel, type);
 }
 
Index: config/tc-arm.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-arm.h,v
retrieving revision 1.38
diff -u -p -r1.38 tc-arm.h
--- config/tc-arm.h	19 May 2006 11:26:11 -0000	1.38
+++ config/tc-arm.h	6 Aug 2006 14:25:23 -0000
@@ -175,8 +175,15 @@ extern void arm_md_end (void);
       goto LABEL;								\
     }
 
+#define DWARF2_LINE_MIN_INSN_LENGTH 	2
+
+/* The lr register is r14.  */
+#define DWARF2_DEFAULT_RETURN_COLUMN  14
+
+/* Registers are generally saved at negative offsets to the CFA.  */
+#define DWARF2_CIE_DATA_ALIGNMENT     -4
+
 #ifdef OBJ_ELF
-# define DWARF2_LINE_MIN_INSN_LENGTH 	2
 # define obj_frob_symbol(sym, punt)	armelf_frob_symbol ((sym), & (punt))
 # define md_elf_section_change_hook()	arm_elf_change_section ()
 # define md_elf_section_type(str, len)	arm_elf_section_type (str, len)
@@ -200,12 +207,6 @@ struct arm_segment_info_type
 /* We want .cfi_* pseudo-ops for generating unwind info.  */
 #define TARGET_USE_CFIPOP              1
 
-/* The lr register is r14.  */
-#define DWARF2_DEFAULT_RETURN_COLUMN  14
-
-/* Registers are generally saved at negative offsets to the CFA.  */
-#define DWARF2_CIE_DATA_ALIGNMENT     -4
-
 /* CFI hooks.  */
 #define tc_regname_to_dw2regnum            tc_arm_regname_to_dw2regnum
 #define tc_cfi_frame_initial_instructions  tc_arm_frame_initial_instructions
@@ -246,3 +247,12 @@ extern bfd_boolean arm_fix_adjustable (s
 extern int arm_elf_section_type (const char *, size_t);
 extern int tc_arm_regname_to_dw2regnum (char *regname);
 extern void tc_arm_frame_initial_instructions (void);
+
+#ifdef TE_PE
+
+#define O_secrel O_md1
+
+#define TC_DWARF2_EMIT_OFFSET  tc_pe_dwarf2_emit_offset
+void tc_pe_dwarf2_emit_offset (symbolS *, unsigned int);
+
+#endif /* TE_PE */
Index: bfd.c
===================================================================
RCS file: /cvs/src/src/bfd/bfd.c,v
retrieving revision 1.85
diff -u -p -r1.85 bfd.c
--- bfd.c	20 Jun 2006 09:58:36 -0000	1.85
+++ bfd.c	4 Aug 2006 23:17:55 -0000
@@ -883,7 +883,9 @@ bfd_get_sign_extend_vma (bfd *abfd)
      a place will have to be found.  Until then, this hack will do.  */
   if (strncmp (name, "coff-go32", sizeof ("coff-go32") - 1) == 0
       || strcmp (name, "pe-i386") == 0
-      || strcmp (name, "pei-i386") == 0)
+      || strcmp (name, "pei-i386") == 0
+      || strcmp (name, "pe-arm-little") == 0
+      || strcmp (name, "pei-arm-little") == 0)
     return 1;
 
   bfd_set_error (bfd_error_wrong_format);
Index: coff-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/coff-arm.c,v
retrieving revision 1.65
diff -u -p -r1.65 coff-arm.c
--- coff-arm.c	1 Jun 2006 03:45:58 -0000	1.65
+++ coff-arm.c	4 Aug 2006 23:17:58 -0000
@@ -539,6 +539,32 @@ coff_arm_rtype_to_howto (bfd *abfd ATTRI
   if (rel->r_type == ARM_RVA32)
     *addendp -= pe_data (sec->output_section->owner)->pe_opthdr.ImageBase;
 
+#ifdef COFF_WITH_PE
+  if (rel->r_type == ARM_SECREL)
+    {
+      bfd_vma osect_vma;
+
+      if (h && (h->type == bfd_link_hash_defined
+		|| h->type == bfd_link_hash_defweak))
+	osect_vma = h->root.u.def.section->output_section->vma;
+      else
+	{
+	  asection *sec;
+	  int i;
+
+	  /* Sigh, the only way to get the section to offset against
+	     is to find it the hard way.  */
+
+	  for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++)
+	    sec = sec->next;
+
+	  osect_vma = sec->output_section->vma;
+	}
+
+      *addendp -= osect_vma;
+    }
+#endif
+
   return howto;
 }
 
@@ -808,6 +834,7 @@ coff_arm_reloc_type_lookup (bfd * abfd, 
       ASTD (BFD_RELOC_RVA,                  ARM_RVA32);
       ASTD (BFD_RELOC_ARM_PCREL_BRANCH,     ARM_26);
       ASTD (BFD_RELOC_THUMB_PCREL_BRANCH12, ARM_THUMB12);
+      ASTD (BFD_RELOC_32_SECREL,            ARM_SECREL);
 #else
       ASTD (BFD_RELOC_8,                    ARM_8);
       ASTD (BFD_RELOC_16,                   ARM_16);
Index: pe-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/pe-arm.c,v
retrieving revision 1.9
diff -u -p -r1.9 pe-arm.c
--- pe-arm.c	4 May 2005 15:53:37 -0000	1.9
+++ pe-arm.c	4 Aug 2006 23:17:59 -0000
@@ -44,4 +44,22 @@ Foundation, Inc., 51 Franklin Street - F
 #define TARGET_UNDERSCORE 0
 #endif
 
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
 #include "coff-arm.c"
Index: pei-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/pei-arm.c,v
retrieving revision 1.9
diff -u -p -r1.9 pei-arm.c
--- pei-arm.c	4 May 2005 15:53:37 -0000	1.9
+++ pei-arm.c	4 Aug 2006 23:17:59 -0000
@@ -32,4 +32,26 @@ Foundation, Inc., 51 Franklin Street - F
 #define PCRELOFFSET        TRUE
 #define COFF_LONG_SECTION_NAMES
 
+#ifdef ARM_WINCE
+# define TARGET_UNDERSCORE 0
+#endif
+
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
 #include "coff-arm.c"
Index: testsuite/ld-pe/pe.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-pe/pe.exp,v
retrieving revision 1.2
diff -u -p -r1.2 pe.exp
--- testsuite/ld-pe/pe.exp	12 May 2005 07:32:07 -0000	1.2
+++ testsuite/ld-pe/pe.exp	4 Aug 2006 23:25:44 -0000
@@ -17,9 +17,9 @@
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 #
  
-# This test can only be run on i386 PE/COFF platforms.
+# This test can only be run on PE/COFF platforms that support .secrel32.
 if { ![istarget i*86-*-cygwin*] && ![istarget i*86-*-pe]
-     && ![istarget i*86-*-mingw*] } {
+     && ![istarget i*86-*-mingw*] && ![istarget arm-wince-pe] } {
     return
 }
 
Index: testsuite/ld-pe/secrel.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-pe/secrel.d,v
retrieving revision 1.2
diff -u -p -r1.2 secrel.d
--- testsuite/ld-pe/secrel.d	29 Sep 2004 13:36:22 -0000	1.2
+++ testsuite/ld-pe/secrel.d	4 Aug 2006 23:25:45 -0000
@@ -1,27 +1,27 @@
 
-tmpdir/secrel\.x:     file format pei-i386
+tmpdir/secrel\.x: +file format pei-.*
 
 Contents of section \.text:
- 401000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
- 401010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
- 401020 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
- 401030 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
- 401040 ........ ........ ........ ........  ................
+ .*1000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
+ .*1010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
+ .*1020 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
+ .*1030 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
+ .*1040 ........ ........ ........ ........  ................
 Contents of section \.data:
- 402000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
- 402010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
- 402020 3e3e3e3e 04000000 110d0000 00111600  >>>>............
- 402030 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
- 402040 3e3e3e3e 04000000 110d0000 00111600  >>>>............
- 402050 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
- 402060 3e3e3e3e 04000000 110d0000 00111600  >>>>............
- 402070 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
- 402080 3e3e3e3e 24000000 112d0000 00113600  >>>>\$....-....6.
- 402090 0000113f 00000011 3c3c3c3c 3c3c3c3c  ...\?....<<<<<<<<
+ .*2000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
+ .*2010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
+ .*2020 3e3e3e3e 04000000 110d0000 00111600  >>>>............
+ .*2030 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
+ .*2040 3e3e3e3e 04000000 110d0000 00111600  >>>>............
+ .*2050 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
+ .*2060 3e3e3e3e 04000000 110d0000 00111600  >>>>............
+ .*2070 0000111f 00000011 3c3c3c3c 3c3c3c3c  ........<<<<<<<<
+ .*2080 3e3e3e3e 24000000 112d0000 00113600  >>>>\$....-....6.
+ .*2090 0000113f 00000011 3c3c3c3c 3c3c3c3c  ...\?....<<<<<<<<
 Contents of section \.rdata:
- 403000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
- 403010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
- 403020 3e3e3e3e 00000000 00000000 00000000  >>>>............
+ .*3000 3e3e3e3e 3c3c3c3c 3e3e3e3e 3e3c3c3c  >>>><<<<>>>>><<<
+ .*3010 3e3e3e3e 3e3e3c3c 3e3e3e3e 3e3e3e3c  >>>>>><<>>>>>>><
+ .*3020 3e3e3e3e 00000000 00000000 00000000  >>>>............
 Contents of section \.idata:
- 404000 00000000 00000000 00000000 00000000  ................
- 404010 00000000                             ....            
+ .*4000 00000000 00000000 00000000 00000000  ................
+ .*4010 00000000                             ....            

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