PATCH: Dump machine register in readelf debug output

H.J. Lu hjl.tools@gmail.com
Tue Jan 29 02:08:00 GMT 2008


On Sat, Jan 26, 2008 at 04:36:11PM -0800, H.J. Lu wrote:
> On Sat, Jan 26, 2008 at 06:07:58PM -0500, Daniel Jacobowitz wrote:
> > On Sat, Jan 26, 2008 at 02:30:51PM -0800, H.J. Lu wrote:
> > > It is often very useful to display machine register instead of
> > > dwarf register in readelf debug output. This patch add new
> > > options -wM/--debug-dump=register to readelf for i386 and x86-64.
> > 
> > How about doing this without a new option?  e.g.
> > 
> >   DW_CFA_offset: r3 (%ebx) at cfa-8
> > 
> > or
> > 
> >   DW_CFA_offset: %ebx (r3) at cfa-8
> 
> I prefer 
> 
>   DW_CFA_offset: r3 (ebx) at cfa-8
> 
> without %. Is that OK with everyone?
> 
> 

Here is the updated patch.

H.J.
---
binutils/

2008-01-26  H.J. Lu  <hongjiu.lu@intel.com>

	* dwarf.c: Include "elf/common.h".
	(dwarf_regnames_i386): New.
	(dwarf_regnames_x86_64): Likewise.
	(dwarf_regnames): Likewise.
	(dwarf_regnames_count): Likewise.
	(init_dwarf_regnames): Likewise.
	(regname): Likewise.
	(display_debug_frames): Call regname to get register name.
	Display DW_CFA_def_cfa_register as DW_CFA_def_cfa_register
	instead of DW_CFA_def_cfa_reg.

	* dwarf.h (init_dwarf_regnames): New.

	* objdump.c: Include "elf-bfd.h".
	(dump_dwarf): Call init_dwarf_regnames on ELF input.

	* readelf.c (guess_is_rela): Change argument to int.
	(parse_args): Remove the undocumented upper case options for
	-wX.
	(process_file_header): Call init_dwarf_regnames if
	do_dwarf_register is true.

gas/testsuite/

2008-01-26  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/cfi/cfi-alpha-1.d: Replace DW_CFA_def_cfa_reg with
	DW_CFA_def_cfa_register.
	* gas/cfi/cfi-alpha-3.d: Likewise.
	* gas/cfi/cfi-hppa-1.d: Likewise.
	* gas/cfi/cfi-i386.d: Likewise.
	* gas/cfi/cfi-m68k.d: Likewise.
	* gas/cfi/cfi-mips-1.d: Likewise.
	* gas/cfi/cfi-sh-1.d: Likewise.
	* gas/cfi/cfi-sparc-1.d: Likewise.
	* gas/cfi/cfi-sparc64-1.d: Likewise.
	* gas/cfi/cfi-x86_64.d: Likewise.

	* gas/cfi/cfi-common-1.d: Updated for i386/x86-64 register
	names.
	* gas/cfi/cfi-common-2.d: Likewise.
	* gas/cfi/cfi-common-5.d: Likewise.
	* gas/cfi/cfi-i386.d: Likewise.
	* gas/cfi/cfi-x86_64.d: Likewise.

ld/testsuite/

2008-01-26  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-elf/eh1.d: Replace DW_CFA_def_cfa_reg with
	DW_CFA_def_cfa_register. Updated for i386/x86-64 register
	names.
	* ld-elf/eh2.d: Likewise.
	* ld-elf/eh3.d: Likewise.
	* ld-elf/eh4.d: Likewise.
	* ld-elf/eh5.d: Likewise.

--- binutils/binutils/dwarf.c.dw	2008-01-25 09:01:03.000000000 -0800
+++ binutils/binutils/dwarf.c	2008-01-26 18:39:08.000000000 -0800
@@ -23,6 +23,7 @@
 #include "libiberty.h"
 #include "bfd.h"
 #include "bucomm.h"
+#include "elf/common.h"
 #include "elf/dwarf2.h"
 #include "dwarf.h"
 
@@ -3118,6 +3119,86 @@ frame_need_space (Frame_Chunk *fc, int r
     }
 }
 
+static const char *const dwarf_regnames_i386[] =
+{
+  "eax", "ecx", "edx", "ebx",
+  "esp", "ebp", "esi", "edi",
+  "eip", "eflags", NULL,
+  "st0", "st1", "st2", "st3",
+  "st4", "st5", "st6", "st7",
+  NULL, NULL,
+  "xmm0", "xmm1", "xmm2", "xmm3",
+  "xmm4", "xmm5", "xmm6", "xmm7",
+  "mm0", "mm1", "mm2", "mm3",
+  "mm4", "mm5", "mm6", "mm7",
+  "fcw", "fsw", "mxcsr",
+  "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
+  "tr", "ldtr"
+};
+
+static const char *const dwarf_regnames_x86_64[] =
+{
+  "rax", "rdx", "rcx", "rbx",
+  "rsi", "rdi", "rbp", "rsp",
+  "r8",  "r9",  "r10", "r11",
+  "r12", "r13", "r14", "r15",
+  "rip",
+  "xmm0",  "xmm1",  "xmm2",  "xmm3",
+  "xmm4",  "xmm5",  "xmm6",  "xmm7",
+  "xmm8",  "xmm9",  "xmm10", "xmm11",
+  "xmm12", "xmm13", "xmm14", "xmm15",
+  "st0", "st1", "st2", "st3",
+  "st4", "st5", "st6", "st7",
+  "mm0", "mm1", "mm2", "mm3",
+  "mm4", "mm5", "mm6", "mm7",
+  "rflags",
+  "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
+  "fs.base", "gs.base", NULL, NULL,
+  "tr", "ldtr",
+  "mxcsr", "fcw", "fsw"
+};
+
+static const char *const *dwarf_regnames;
+static unsigned int dwarf_regnames_count;
+
+int
+init_dwarf_regnames (unsigned int e_machine)
+{
+  switch (e_machine)
+    {
+    case EM_386:
+    case EM_486:
+      dwarf_regnames = dwarf_regnames_i386;
+      dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_i386);
+      return 1;
+      break;
+
+    case EM_X86_64:
+      dwarf_regnames = dwarf_regnames_x86_64;
+      dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_x86_64);
+      return 1;
+      break;
+
+    default:
+      return 0;
+      break;
+    }
+}
+
+static const char *
+regname (unsigned int regno)
+{
+  static char reg[64];
+  if (dwarf_regnames
+      && regno < dwarf_regnames_count
+      && dwarf_regnames [regno] != NULL)
+    snprintf (reg, sizeof (reg), "r%d (%s)", regno,
+	      dwarf_regnames [regno]);
+  else
+    snprintf (reg, sizeof (reg), "r%d", regno);
+  return reg;
+}
+
 static void
 frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs)
 {
@@ -3631,15 +3712,15 @@ display_debug_frames (struct dwarf_secti
 	    case DW_CFA_offset:
 	      roffs = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_offset: r%d at cfa%+ld\n",
-			opa, roffs * fc->data_factor);
+		printf ("  DW_CFA_offset: %s at cfa%+ld\n",
+			regname (opa), roffs * fc->data_factor);
 	      fc->col_type[opa] = DW_CFA_offset;
 	      fc->col_offset[opa] = roffs * fc->data_factor;
 	      break;
 
 	    case DW_CFA_restore:
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_restore: r%d\n", opa);
+		printf ("  DW_CFA_restore: %s\n", regname (opa));
 	      fc->col_type[opa] = cie->col_type[opa];
 	      fc->col_offset[opa] = cie->col_offset[opa];
 	      break;
@@ -3693,8 +3774,8 @@ display_debug_frames (struct dwarf_secti
 	      reg = LEB ();
 	      roffs = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_offset_extended: r%ld at cfa%+ld\n",
-			reg, roffs * fc->data_factor);
+		printf ("  DW_CFA_offset_extended: %s at cfa%+ld\n",
+			regname (reg), roffs * fc->data_factor);
 	      fc->col_type[reg] = DW_CFA_offset;
 	      fc->col_offset[reg] = roffs * fc->data_factor;
 	      break;
@@ -3703,8 +3784,8 @@ display_debug_frames (struct dwarf_secti
 	      reg = LEB ();
 	      roffs = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_val_offset: r%ld at cfa%+ld\n",
-			reg, roffs * fc->data_factor);
+		printf ("  DW_CFA_val_offset: %s at cfa%+ld\n",
+			regname (reg), roffs * fc->data_factor);
 	      fc->col_type[reg] = DW_CFA_val_offset;
 	      fc->col_offset[reg] = roffs * fc->data_factor;
 	      break;
@@ -3712,7 +3793,7 @@ display_debug_frames (struct dwarf_secti
 	    case DW_CFA_restore_extended:
 	      reg = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_restore_extended: r%ld\n", reg);
+		printf ("  DW_CFA_restore_extended: %s\n", regname (reg));
 	      fc->col_type[reg] = cie->col_type[reg];
 	      fc->col_offset[reg] = cie->col_offset[reg];
 	      break;
@@ -3720,7 +3801,7 @@ display_debug_frames (struct dwarf_secti
 	    case DW_CFA_undefined:
 	      reg = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_undefined: r%ld\n", reg);
+		printf ("  DW_CFA_undefined: %s\n", regname (reg));
 	      fc->col_type[reg] = DW_CFA_undefined;
 	      fc->col_offset[reg] = 0;
 	      break;
@@ -3728,7 +3809,7 @@ display_debug_frames (struct dwarf_secti
 	    case DW_CFA_same_value:
 	      reg = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_same_value: r%ld\n", reg);
+		printf ("  DW_CFA_same_value: %s\n", regname (reg));
 	      fc->col_type[reg] = DW_CFA_same_value;
 	      fc->col_offset[reg] = 0;
 	      break;
@@ -3737,7 +3818,10 @@ display_debug_frames (struct dwarf_secti
 	      reg = LEB ();
 	      roffs = LEB ();
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_register: r%ld in r%ld\n", reg, roffs);
+		{
+		  printf ("  DW_CFA_register: %s in ", regname (reg));
+		  puts (regname (roffs));
+		}
 	      fc->col_type[reg] = DW_CFA_register;
 	      fc->col_offset[reg] = roffs;
 	      break;
@@ -3779,15 +3863,16 @@ display_debug_frames (struct dwarf_secti
 	      fc->cfa_offset = LEB ();
 	      fc->cfa_exp = 0;
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_def_cfa: r%d ofs %d\n",
-			fc->cfa_reg, fc->cfa_offset);
+		printf ("  DW_CFA_def_cfa: %s ofs %d\n",
+			regname (fc->cfa_reg), fc->cfa_offset);
 	      break;
 
 	    case DW_CFA_def_cfa_register:
 	      fc->cfa_reg = LEB ();
 	      fc->cfa_exp = 0;
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_def_cfa_reg: r%d\n", fc->cfa_reg);
+		printf ("  DW_CFA_def_cfa_register: %s\n",
+			regname (fc->cfa_reg));
 	      break;
 
 	    case DW_CFA_def_cfa_offset:
@@ -3818,7 +3903,7 @@ display_debug_frames (struct dwarf_secti
 	      ul = LEB ();
 	      if (! do_debug_frames_interp)
 		{
-		  printf ("  DW_CFA_expression: r%ld (", reg);
+		  printf ("  DW_CFA_expression: %s (", regname (reg));
 		  decode_location_expression (start, eh_addr_size, ul, 0);
 		  printf (")\n");
 		}
@@ -3831,7 +3916,7 @@ display_debug_frames (struct dwarf_secti
 	      ul = LEB ();
 	      if (! do_debug_frames_interp)
 		{
-		  printf ("  DW_CFA_val_expression: r%ld (", reg);
+		  printf ("  DW_CFA_val_expression: %s (", regname (reg));
 		  decode_location_expression (start, eh_addr_size, ul, 0);
 		  printf (")\n");
 		}
@@ -3844,8 +3929,8 @@ display_debug_frames (struct dwarf_secti
 	      l = SLEB ();
 	      frame_need_space (fc, reg);
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_offset_extended_sf: r%ld at cfa%+ld\n",
-			reg, l * fc->data_factor);
+		printf ("  DW_CFA_offset_extended_sf: %s at cfa%+ld\n",
+			regname (reg), l * fc->data_factor);
 	      fc->col_type[reg] = DW_CFA_offset;
 	      fc->col_offset[reg] = l * fc->data_factor;
 	      break;
@@ -3855,8 +3940,8 @@ display_debug_frames (struct dwarf_secti
 	      l = SLEB ();
 	      frame_need_space (fc, reg);
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_val_offset_sf: r%ld at cfa%+ld\n",
-			reg, l * fc->data_factor);
+		printf ("  DW_CFA_val_offset_sf: %s at cfa%+ld\n",
+			regname (reg), l * fc->data_factor);
 	      fc->col_type[reg] = DW_CFA_val_offset;
 	      fc->col_offset[reg] = l * fc->data_factor;
 	      break;
@@ -3867,8 +3952,8 @@ display_debug_frames (struct dwarf_secti
 	      fc->cfa_offset = fc->cfa_offset * fc->data_factor;
 	      fc->cfa_exp = 0;
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_def_cfa_sf: r%d ofs %d\n",
-			fc->cfa_reg, fc->cfa_offset);
+		printf ("  DW_CFA_def_cfa_sf: %s ofs %d\n",
+			regname (fc->cfa_reg), fc->cfa_offset);
 	      break;
 
 	    case DW_CFA_def_cfa_offset_sf:
@@ -3905,8 +3990,8 @@ display_debug_frames (struct dwarf_secti
 	      l = - LEB ();
 	      frame_need_space (fc, reg);
 	      if (! do_debug_frames_interp)
-		printf ("  DW_CFA_GNU_negative_offset_extended: r%ld at cfa%+ld\n",
-			reg, l * fc->data_factor);
+		printf ("  DW_CFA_GNU_negative_offset_extended: %s at cfa%+ld\n",
+			regname (reg), l * fc->data_factor);
 	      fc->col_type[reg] = DW_CFA_offset;
 	      fc->col_offset[reg] = l * fc->data_factor;
 	      break;
--- binutils/binutils/dwarf.h.dw	2007-10-31 11:21:34.000000000 -0700
+++ binutils/binutils/dwarf.h	2008-01-26 18:39:08.000000000 -0800
@@ -105,6 +105,8 @@ extern int do_debug_macinfo;
 extern int do_debug_str;
 extern int do_debug_loc;
 
+extern int init_dwarf_regnames (unsigned int);
+
 extern int load_debug_section (enum dwarf_section_display_enum,
 			       void *);
 extern void free_debug_section (enum dwarf_section_display_enum);
--- binutils/binutils/objdump.c.dw	2008-01-26 18:39:08.000000000 -0800
+++ binutils/binutils/objdump.c	2008-01-26 18:39:08.000000000 -0800
@@ -52,6 +52,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "elf-bfd.h"
 #include "progress.h"
 #include "bucomm.h"
 #include "dwarf.h"
@@ -2193,6 +2194,15 @@ dump_dwarf (bfd *abfd)
 
   check_mach_o_dwarf (abfd);
 
+  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+    {
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+
+      if (init_dwarf_regnames (bed->elf_machine_code) == 0
+	  && init_dwarf_regnames (bed->elf_machine_alt1) == 0)
+	init_dwarf_regnames (bed->elf_machine_alt2);
+    }
+
   bfd_map_over_sections (abfd, dump_dwarf_section, NULL);
 
   free_debug_memory ();
--- binutils/binutils/readelf.c.dw	2008-01-26 18:39:08.000000000 -0800
+++ binutils/binutils/readelf.c	2008-01-26 18:39:08.000000000 -0800
@@ -624,7 +624,7 @@ find_section (const char *name)
 /* Guess the relocation size commonly used by the specific machines.  */
 
 static int
-guess_is_rela (unsigned long e_machine)
+guess_is_rela (unsigned int e_machine)
 {
   switch (e_machine)
     {
@@ -3035,22 +3035,18 @@ parse_args (int argc, char **argv)
 		switch (optarg[index++])
 		  {
 		  case 'i':
-		  case 'I':
 		    do_debug_info = 1;
 		    break;
 
 		  case 'a':
-		  case 'A':
 		    do_debug_abbrevs = 1;
 		    break;
 
 		  case 'l':
-		  case 'L':
 		    do_debug_lines = 1;
 		    break;
 
 		  case 'p':
-		  case 'P':
 		    do_debug_pubnames = 1;
 		    break;
 
@@ -3069,17 +3065,14 @@ parse_args (int argc, char **argv)
 		    break;
 
 		  case 'm':
-		  case 'M':
 		    do_debug_macinfo = 1;
 		    break;
 
 		  case 's':
-		  case 'S':
 		    do_debug_str = 1;
 		    break;
 
 		  case 'o':
-		  case 'O':
 		    do_debug_loc = 1;
 		    break;
 
@@ -3249,6 +3242,8 @@ process_file_header (void)
       return 0;
     }
 
+  init_dwarf_regnames (elf_header.e_machine);
+
   if (do_header)
     {
       int i;
--- binutils/gas/testsuite/gas/cfi/cfi-alpha-1.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-alpha-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -10,7 +10,7 @@ The section .eh_frame contains:
   Return address column: 26
   Augmentation data:     1b
 
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_nop
 
 00000014 00000020 00000018 FDE cie=00000000 pc=00000000..00000034
--- binutils/gas/testsuite/gas/cfi/cfi-alpha-3.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-alpha-3.d	2008-01-26 18:39:08.000000000 -0800
@@ -10,7 +10,7 @@ The section .eh_frame contains:
   Return address column: 26
   Augmentation data:     1b
 
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_nop
 
 00000014 00000028 00000018 FDE cie=00000000 pc=00000000..00000040
@@ -25,7 +25,7 @@ The section .eh_frame contains:
   DW_CFA_advance_loc: 4 to 00000014
   DW_CFA_offset: r34 at cfa-8
   DW_CFA_advance_loc: 4 to 00000018
-  DW_CFA_def_cfa_reg: r15
+  DW_CFA_def_cfa_register: r15
   DW_CFA_advance_loc: 36 to 0000003c
   DW_CFA_def_cfa: r30 ofs 0
   DW_CFA_nop
--- binutils/gas/testsuite/gas/cfi/cfi-common-1.d.dw	2005-03-14 21:28:16.000000000 -0800
+++ binutils/gas/testsuite/gas/cfi/cfi-common-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -16,8 +16,8 @@ The section .eh_frame contains:
 
 00000014 00000018 00000018 FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
-  DW_CFA_offset: r1 at cfa-8
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
+  DW_CFA_offset: r1( \((rdx|ecx)\)|) at cfa-8
   DW_CFA_advance_loc: 4 to .*
   DW_CFA_def_cfa_offset: 32
-  DW_CFA_offset: r2 at cfa-24
+  DW_CFA_offset: r2( \((rcx|edx)\)|) at cfa-24
--- binutils/gas/testsuite/gas/cfi/cfi-common-2.d.dw	2005-03-14 21:28:17.000000000 -0800
+++ binutils/gas/testsuite/gas/cfi/cfi-common-2.d	2008-01-26 18:39:08.000000000 -0800
@@ -12,7 +12,7 @@ The section .eh_frame contains:
 #...
 00000014 000000[12][c0] 00000018 FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_advance_loc: 4 to .*
   DW_CFA_remember_state
   DW_CFA_advance_loc: 4 to .*
--- binutils/gas/testsuite/gas/cfi/cfi-common-5.d.dw	2006-11-02 23:27:39.000000000 -0800
+++ binutils/gas/testsuite/gas/cfi/cfi-common-5.d	2008-01-26 18:39:08.000000000 -0800
@@ -18,7 +18,7 @@ The section .eh_frame contains:
 #...
 0000002c 0000001[48] 00000030 FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_advance_loc: 4 to .*
   DW_CFA_def_cfa_offset: 0
 #pass
--- binutils/gas/testsuite/gas/cfi/cfi-hppa-1.d.dw	2006-10-29 17:10:46.000000000 -0800
+++ binutils/gas/testsuite/gas/cfi/cfi-hppa-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -14,19 +14,19 @@ The section .eh_frame contains:
 
 00000014 00000018 00000018 FDE cie=00000000 pc=00000000..00000018
   DW_CFA_advance_loc: 8 to 00000008
-  DW_CFA_def_cfa_reg: r3
+  DW_CFA_def_cfa_register: r3
   DW_CFA_advance_loc: 4 to 0000000c
   DW_CFA_def_cfa_offset: 4660
   DW_CFA_advance_loc: 8 to 00000014
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_nop
 
 00000030 00000018 00000034 FDE cie=00000000 pc=00000018..00000040
   DW_CFA_advance_loc: 12 to 00000024
-  DW_CFA_def_cfa_reg: r3
+  DW_CFA_def_cfa_register: r3
   DW_CFA_offset: r2 at cfa-24
   DW_CFA_advance_loc: 24 to 0000003c
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
--- binutils/gas/testsuite/gas/cfi/cfi-i386.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-i386.d	2008-01-26 18:49:26.000000000 -0800
@@ -10,8 +10,8 @@ The section .eh_frame contains:
   Return address column: 8
   Augmentation data:     1b
 
-  DW_CFA_def_cfa: r4 ofs 4
-  DW_CFA_offset: r8 at cfa-4
+  DW_CFA_def_cfa: r4 \(esp\) ofs 4
+  DW_CFA_offset: r8 \(eip\) at cfa-4
   DW_CFA_nop
   DW_CFA_nop
 
@@ -24,17 +24,17 @@ The section .eh_frame contains:
 00000030 00000018 00000034 FDE cie=00000000 pc=00000012..0000001f
   DW_CFA_advance_loc: 1 to 00000013
   DW_CFA_def_cfa_offset: 8
-  DW_CFA_offset: r5 at cfa-8
+  DW_CFA_offset: r5 \(ebp\) at cfa-8
   DW_CFA_advance_loc: 2 to 00000015
-  DW_CFA_def_cfa_reg: r5
+  DW_CFA_def_cfa_register: r5 \(ebp\)
   DW_CFA_advance_loc: 9 to 0000001e
-  DW_CFA_def_cfa_reg: r4
+  DW_CFA_def_cfa_register: r4 \(esp\)
 
 0000004c 00000014 00000050 FDE cie=00000000 pc=0000001f..0000002f
   DW_CFA_advance_loc: 2 to 00000021
-  DW_CFA_def_cfa_reg: r3
+  DW_CFA_def_cfa_register: r3 \(ebx\)
   DW_CFA_advance_loc: 13 to 0000002e
-  DW_CFA_def_cfa: r4 ofs 4
+  DW_CFA_def_cfa: r4 \(esp\) ofs 4
 
 00000064 00000010 00000068 FDE cie=00000000 pc=0000002f..00000035
   DW_CFA_nop
--- binutils/gas/testsuite/gas/cfi/cfi-m68k.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-m68k.d	2008-01-26 18:39:08.000000000 -0800
@@ -25,9 +25,9 @@ The section .eh_frame contains:
   DW_CFA_advance_loc: 4 to 00000010
   DW_CFA_def_cfa_offset: 8
   DW_CFA_offset: r14 at cfa-8
-  DW_CFA_def_cfa_reg: r14
+  DW_CFA_def_cfa_register: r14
   DW_CFA_advance_loc: 6 to 00000016
-  DW_CFA_def_cfa_reg: r15
+  DW_CFA_def_cfa_register: r15
   DW_CFA_nop
 
 0000004c 00000010 00000050 FDE cie=00000000 pc=00000018..0000001c
--- binutils/gas/testsuite/gas/cfi/cfi-mips-1.d.dw	2005-03-14 21:28:17.000000000 -0800
+++ binutils/gas/testsuite/gas/cfi/cfi-mips-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -10,7 +10,7 @@ The section .eh_frame contains:
   Return address column: 31
   Augmentation data:     0b
 
-  DW_CFA_def_cfa_reg: r29
+  DW_CFA_def_cfa_register: r29
   DW_CFA_def_cfa: r29 ofs 0
   DW_CFA_nop
   DW_CFA_nop
--- binutils/gas/testsuite/gas/cfi/cfi-sh-1.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-sh-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -20,7 +20,7 @@ The section .eh_frame contains:
   DW_CFA_offset: r15 at cfa-4
   DW_CFA_offset: r17 at cfa-8
   DW_CFA_advance_loc: 6 to 0000000a
-  DW_CFA_def_cfa_reg: r14
+  DW_CFA_def_cfa_register: r14
   DW_CFA_advance_loc: 2 to 0000000c
   DW_CFA_def_cfa_offset: 40
   DW_CFA_nop
--- binutils/gas/testsuite/gas/cfi/cfi-sparc-1.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-sparc-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -16,7 +16,7 @@ The section .eh_frame contains:
 
 00000014 00000014 00000018 FDE cie=00000000 pc=00000000..00000024
   DW_CFA_advance_loc: 4 to 00000004
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_GNU_window_save
   DW_CFA_register: r15 in r31
 
--- binutils/gas/testsuite/gas/cfi/cfi-sparc64-1.d.dw	2004-08-15 17:09:20.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-sparc64-1.d	2008-01-26 18:39:08.000000000 -0800
@@ -19,7 +19,7 @@ The section .eh_frame contains:
 
 00000018 00000014 0000001c FDE cie=00000000 pc=00000000..00000030
   DW_CFA_advance_loc: 4 to 00000004
-  DW_CFA_def_cfa_reg: r30
+  DW_CFA_def_cfa_register: r30
   DW_CFA_GNU_window_save
   DW_CFA_register: r15 in r31
 
--- binutils/gas/testsuite/gas/cfi/cfi-x86_64.d.dw	2007-05-21 11:21:25.000000000 -0700
+++ binutils/gas/testsuite/gas/cfi/cfi-x86_64.d	2008-01-26 18:39:08.000000000 -0800
@@ -10,8 +10,8 @@ The section .eh_frame contains:
   Return address column: 16
   Augmentation data:     1b
 
-  DW_CFA_def_cfa: r7 ofs 8
-  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
   DW_CFA_nop
   DW_CFA_nop
 
@@ -24,20 +24,20 @@ The section .eh_frame contains:
 00000030 0000001c 00000034 FDE cie=00000000 pc=00000014..00000022
   DW_CFA_advance_loc: 1 to 00000015
   DW_CFA_def_cfa_offset: 16
-  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_offset: r6 \(rbp\) at cfa-16
   DW_CFA_advance_loc: 3 to 00000018
-  DW_CFA_def_cfa_reg: r6
+  DW_CFA_def_cfa_register: r6 \(rbp\)
   DW_CFA_advance_loc: 9 to 00000021
-  DW_CFA_def_cfa: r7 ofs 8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
 
 00000050 00000014 00000054 FDE cie=00000000 pc=00000022..00000035
   DW_CFA_advance_loc: 3 to 00000025
-  DW_CFA_def_cfa_reg: r8
+  DW_CFA_def_cfa_register: r8 \(r8\)
   DW_CFA_advance_loc: 15 to 00000034
-  DW_CFA_def_cfa_reg: r7
+  DW_CFA_def_cfa_register: r7 \(rsp\)
   DW_CFA_nop
 
 00000068 00000010 0000006c FDE cie=00000000 pc=00000035..0000003b
@@ -58,27 +58,27 @@ The section .eh_frame contains:
   Return address column: 16
   Augmentation data:     1b
 
-  DW_CFA_def_cfa: r7 ofs 8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
 
 000000a4 00000030 00000018 FDE cie=00000090 pc=0000004d..00000058
   DW_CFA_advance_loc: 1 to 0000004e
   DW_CFA_def_cfa_offset: 16
   DW_CFA_advance_loc: 1 to 0000004f
-  DW_CFA_def_cfa_reg: r8
+  DW_CFA_def_cfa_register: r8 \(r8\)
   DW_CFA_advance_loc: 1 to 00000050
   DW_CFA_def_cfa_offset: 4676
   DW_CFA_advance_loc: 1 to 00000051
-  DW_CFA_offset_extended_sf: r4 at cfa\+16
+  DW_CFA_offset_extended_sf: r4 \(rsi\) at cfa\+16
   DW_CFA_advance_loc: 1 to 00000052
-  DW_CFA_register: r8 in r9
+  DW_CFA_register: r8 \(r8\) in r9 \(r9\)
   DW_CFA_advance_loc: 1 to 00000053
   DW_CFA_remember_state
   DW_CFA_advance_loc: 1 to 00000054
-  DW_CFA_restore: r6
+  DW_CFA_restore: r6 \(rbp\)
   DW_CFA_advance_loc: 1 to 00000055
-  DW_CFA_undefined: r16
+  DW_CFA_undefined: r16 \(rip\)
   DW_CFA_advance_loc: 1 to 00000056
-  DW_CFA_same_value: r3
+  DW_CFA_same_value: r3 \(rbx\)
   DW_CFA_advance_loc: 1 to 00000057
   DW_CFA_restore_state
   DW_CFA_nop
--- binutils/ld/testsuite/ld-elf/eh1.d.dw	2006-06-19 19:22:16.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/eh1.d	2008-01-26 18:39:08.000000000 -0800
@@ -13,8 +13,8 @@ The section .eh_frame contains:
   Data alignment factor: -8
   Return address column: 16
 
-  DW_CFA_def_cfa: r7 ofs 8
-  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -25,9 +25,9 @@ The section .eh_frame contains:
 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
   DW_CFA_advance_loc: 0 to 00400078
   DW_CFA_def_cfa_offset: 16
-  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_offset: r6 \(rbp\) at cfa-16
   DW_CFA_advance_loc: 0 to 00400078
-  DW_CFA_def_cfa_reg: r6
+  DW_CFA_def_cfa_register: r6 \(rbp\)
 
 00000038 ZERO terminator
 
--- binutils/ld/testsuite/ld-elf/eh2.d.dw	2006-06-19 19:22:16.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/eh2.d	2008-01-26 18:39:08.000000000 -0800
@@ -13,8 +13,8 @@ The section .eh_frame contains:
   Data alignment factor: -8
   Return address column: 16
 
-  DW_CFA_def_cfa: r7 ofs 8
-  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -25,9 +25,9 @@ The section .eh_frame contains:
 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
   DW_CFA_advance_loc: 0 to 00400078
   DW_CFA_def_cfa_offset: 16
-  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_offset: r6 \(rbp\) at cfa-16
   DW_CFA_advance_loc: 0 to 00400078
-  DW_CFA_def_cfa_reg: r6
+  DW_CFA_def_cfa_register: r6 \(rbp\)
 
 00000038 ZERO terminator
 
--- binutils/ld/testsuite/ld-elf/eh3.d.dw	2006-06-19 19:22:16.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/eh3.d	2008-01-26 18:39:08.000000000 -0800
@@ -13,8 +13,8 @@ The section .eh_frame contains:
   Data alignment factor: -8
   Return address column: 16
 
-  DW_CFA_def_cfa: r7 ofs 8
-  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -25,9 +25,9 @@ The section .eh_frame contains:
 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
   DW_CFA_advance_loc: 0 to 00400078
   DW_CFA_def_cfa_offset: 16
-  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_offset: r6 \(rbp\) at cfa-16
   DW_CFA_advance_loc: 0 to 00400078
-  DW_CFA_def_cfa_reg: r6
+  DW_CFA_def_cfa_register: r6 \(rbp\)
 
 00000038 ZERO terminator
 #pass
--- binutils/ld/testsuite/ld-elf/eh4.d.dw	2006-10-03 06:15:39.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/eh4.d	2008-01-26 18:39:08.000000000 -0800
@@ -14,8 +14,8 @@ The section .eh_frame contains:
   Return address column: 16
   Augmentation data:     1b
 
-  DW_CFA_def_cfa: r7 ofs 8
-  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+  DW_CFA_offset: r16 \(rip\) at cfa-8
   DW_CFA_nop
   DW_CFA_nop
 
--- binutils/ld/testsuite/ld-elf/eh5.d.dw	2006-11-21 03:25:17.000000000 -0800
+++ binutils/ld/testsuite/ld-elf/eh5.d	2008-01-26 18:46:32.000000000 -0800
@@ -21,7 +21,7 @@ The section .eh_frame contains:
 #...
 0000001[48] 00000014 0000001[8c] FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -38,14 +38,14 @@ The section .eh_frame contains:
 
 0000004[48] 00000014 0000001c FDE cie=000000(2c|30) pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
 
 000000(5c|60) 00000014 0000006[04] FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -66,7 +66,7 @@ The section .eh_frame contains:
   Augmentation data:     (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -79,7 +79,7 @@ The section .eh_frame contains:
   Return address column: .*
   Augmentation data:     1b
 
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
 #...
 000000(c4|d0) 0000001[04] 0000001[8c] FDE cie=000000b[08] pc=.*
   DW_CFA_nop
@@ -98,7 +98,7 @@ The section .eh_frame contains:
 
 00000(0f|10)0 00000014 0000001c FDE cie=000000[de]8 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -124,28 +124,28 @@ The section .eh_frame contains:
   Augmentation data:     (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
 
 000001(58|70) 00000014 000001(5c|74) FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
 
 000001(70|88) 00000014 000001(48|5c) FDE cie=000000(2c|30) pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
 
 000001(88|a0) 00000014 000001(8c|a4) FDE cie=00000000 pc=.*
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop
@@ -154,7 +154,7 @@ The section .eh_frame contains:
   Augmentation data:     (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
   DW_CFA_advance_loc: 4 to .*
-  DW_CFA_def_cfa: r0 ofs 16
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
   DW_CFA_nop
   DW_CFA_nop
   DW_CFA_nop



More information about the Binutils mailing list