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]

Re: [RFA] Added verbosity to dwarf2*


Eli Zaretskii wrote:
On Sat, 14 Dec 2002, Michal Ludvig wrote:


- error ("dwarf cfi error: unsupported target address length.");
+ error ("dwarf cfi error: unsupported target address length [%s]", + bfd_get_filename (abfd));
Wouldn't it be better to say "[in module %s]"? I'm afraid a BFD file name alone won't explain enough to the user. After all, not everyone who uses GDB knows all the module names in their program by heart.
Well, why not. Anyway if an error or warning like this happens, it's usually a GCC or GDB problem, not a user-level mistake. But it's more descriptive, I agree.

So can I commit it in this form?

Michal Ludvig
--
* SuSE CR, s.r.o * mludvig@suse.cz
* (+420) 296.545.373 * http://www.suse.cz
Index: dwarf2cfi.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2cfi.c,v
retrieving revision 1.16
diff -u -p -r1.16 dwarf2cfi.c
--- dwarf2cfi.c	19 Jul 2002 09:40:51 -0000	1.16
+++ dwarf2cfi.c	16 Dec 2002 08:54:31 -0000
@@ -228,7 +228,7 @@ static LONGEST read_sleb128 (bfd * abfd,
 static CORE_ADDR read_pointer (bfd * abfd, char **p);
 static CORE_ADDR read_encoded_pointer (bfd * abfd, char **p,
 				       unsigned char encoding);
-static enum ptr_encoding pointer_encoding (unsigned char encoding);
+static enum ptr_encoding pointer_encoding (unsigned char encoding, struct objfile *objfile);
 
 static LONGEST read_initial_length (bfd * abfd, char *buf, int *bytes_read);
 static ULONGEST read_length (bfd * abfd, char *buf, int *bytes_read,
@@ -500,7 +500,8 @@ read_pointer (bfd * abfd, char **p)
     case 8:
       return read_8u (abfd, p);
     default:
-      error ("dwarf cfi error: unsupported target address length.");
+      error ("dwarf cfi error: unsupported target address length [in module %s]", 
+		      bfd_get_filename (abfd));
     }
 }
 
@@ -547,7 +548,8 @@ read_encoded_pointer (bfd * abfd, char *
 
     default:
       internal_error (__FILE__, __LINE__,
-		      "read_encoded_pointer: unknown pointer encoding");
+		      "read_encoded_pointer: unknown pointer encoding [in module %s]",
+		      bfd_get_filename (abfd));
     }
 
   return ret;
@@ -558,12 +560,13 @@ read_encoded_pointer (bfd * abfd, char *
  * - encoding & 0x70 : type (absolute, relative, ...)
  * - encoding & 0x80 : indirect flag (DW_EH_PE_indirect == 0x80).  */
 enum ptr_encoding
-pointer_encoding (unsigned char encoding)
+pointer_encoding (unsigned char encoding, struct objfile *objfile)
 {
   int ret;
 
   if (encoding & DW_EH_PE_indirect)
-    warning ("CFI: Unsupported pointer encoding: DW_EH_PE_indirect");
+    warning ("CFI: Unsupported pointer encoding: DW_EH_PE_indirect [in module %s]",
+		    objfile->name);
 
   switch (encoding & 0x70)
     {
@@ -575,7 +578,8 @@ pointer_encoding (unsigned char encoding
       ret = encoding & 0x70;
       break;
     default:
-      internal_error (__FILE__, __LINE__, "CFI: unknown pointer encoding");
+      internal_error (__FILE__, __LINE__, "CFI: unknown pointer encoding [in module %s]", 
+		      objfile->name);
     }
   return ret;
 }
@@ -652,8 +656,9 @@ execute_cfa_program (struct objfile *obj
 	    fs->pc = read_encoded_pointer (objfile->obfd, &insn_ptr,
 					   fs->addr_encoding);
 
-	    if (pointer_encoding (fs->addr_encoding) != PE_absptr)
-	      warning ("CFI: DW_CFA_set_loc uses relative addressing");
+	    if (pointer_encoding (fs->addr_encoding, objfile) != PE_absptr)
+	      warning ("CFI: DW_CFA_set_loc uses relative addressing [in module %s]", 
+			      objfile->name);
 
 	    break;
 
@@ -802,7 +807,8 @@ execute_cfa_program (struct objfile *obj
 	    break;
 
 	  default:
-	    error ("dwarf cfi error: unknown cfa instruction %d.", insn);
+	    error ("dwarf cfi error: unknown cfa instruction %d [in module %s]", insn, 
+			    objfile->name);
 	  }
     }
 }
@@ -848,13 +854,13 @@ frame_state_for (struct context *context
   gdb_assert (fde->cie_ptr != NULL);
 
   cie = fde->cie_ptr;
-  
+
   fs->code_align = cie->code_align;
   fs->data_align = cie->data_align;
   fs->retaddr_column = cie->ra;
   fs->addr_encoding = cie->addr_encoding;
   fs->objfile = cie->objfile;
-  
+
   execute_cfa_program (cie->objfile, cie->data,
 		       cie->data + cie->data_length, context, fs);
   execute_cfa_program (cie->objfile, fde->data,
@@ -1065,25 +1071,25 @@ execute_stack_op (struct objfile *objfil
 
 	case DW_OP_dup:
 	  if (stack_elt < 1)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  result = stack[stack_elt - 1];
 	  break;
 
 	case DW_OP_drop:
 	  if (--stack_elt < 0)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  goto no_push;
 
 	case DW_OP_pick:
 	  offset = *op_ptr++;
 	  if (offset >= stack_elt - 1)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  result = stack[stack_elt - 1 - offset];
 	  break;
 
 	case DW_OP_over:
 	  if (stack_elt < 2)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  result = stack[stack_elt - 2];
 	  break;
 
@@ -1092,7 +1098,7 @@ execute_stack_op (struct objfile *objfil
 	    CORE_ADDR t1, t2, t3;
 
 	    if (stack_elt < 3)
-	      internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	      internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	    t1 = stack[stack_elt - 1];
 	    t2 = stack[stack_elt - 2];
 	    t3 = stack[stack_elt - 3];
@@ -1110,7 +1116,7 @@ execute_stack_op (struct objfile *objfil
 	case DW_OP_plus_uconst:
 	  /* Unary operations.  */
 	  if (--stack_elt < 0)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  result = stack[stack_elt];
 
 	  switch (op)
@@ -1120,7 +1126,7 @@ execute_stack_op (struct objfile *objfil
 		int len = TARGET_ADDR_BIT / TARGET_CHAR_BIT;
 		if (len != 4 && len != 8)
 		  internal_error (__FILE__, __LINE__,
-				  "execute_stack_op error");
+				  "execute_stack_op error [in module %s]", objfile->name);
 		result = read_memory_unsigned_integer (result, len);
 	      }
 	      break;
@@ -1128,9 +1134,9 @@ execute_stack_op (struct objfile *objfil
 	    case DW_OP_deref_size:
 	      {
 		int len = *op_ptr++;
-		if (len != 1 && len != 2 && len != 4 && len !=8)
+		if (len != 1 && len != 2 && len != 4 && len != 8)
 		  internal_error (__FILE__, __LINE__,
-				  "execute_stack_op error");
+				  "execute_stack_op error [in module %s]", objfile->name);
 		result = read_memory_unsigned_integer (result, len);
 	      }
 	      break;
@@ -1170,7 +1176,7 @@ execute_stack_op (struct objfile *objfil
 	    /* Binary operations.  */
 	    CORE_ADDR first, second;
 	    if ((stack_elt -= 2) < 0)
-	      internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	      internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	    second = stack[stack_elt];
 	    first = stack[stack_elt + 1];
 
@@ -1228,7 +1234,7 @@ execute_stack_op (struct objfile *objfil
 		result = (LONGEST) first != (LONGEST) second;
 		break;
 	      default:
-		error ("execute_stack_op: Unknown DW_OP_ value");
+		error ("execute_stack_op: Unknown DW_OP_ value [in module %s]", objfile->name);
 		break;
 	      }
 	  }
@@ -1241,7 +1247,7 @@ execute_stack_op (struct objfile *objfil
 
 	case DW_OP_bra:
 	  if (--stack_elt < 0)
-	    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	  offset = read_2s (objfile->obfd, &op_ptr);
 	  if (stack[stack_elt] != 0)
 	    op_ptr += offset;
@@ -1251,12 +1257,12 @@ execute_stack_op (struct objfile *objfil
 	  goto no_push;
 
 	default:
-	  internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	  internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
 	}
 
       /* Most things push a result value.  */
       if ((size_t) stack_elt >= sizeof (stack) / sizeof (*stack))
-	internal_error (__FILE__, __LINE__, "execute_stack_op error");
+	internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
       stack[++stack_elt] = result;
     no_push:;
     }
@@ -1264,7 +1270,7 @@ execute_stack_op (struct objfile *objfil
   /* We were executing this program to get a value.  It should be
      at top of stack.  */
   if (--stack_elt < 0)
-    internal_error (__FILE__, __LINE__, "execute_stack_op error");
+    internal_error (__FILE__, __LINE__, "execute_stack_op error [in module %s]", objfile->name);
   return stack[stack_elt];
 }
 
@@ -1349,7 +1355,8 @@ update_context (struct context *context,
 	      orig_context->reg[fs->regs.reg[i].loc.reg].loc.addr;
 	    break;
 	  default:
-	    internal_error (__FILE__, __LINE__, "bad switch");
+	    internal_error (__FILE__, __LINE__, "bad switch 0x%02X", 
+			    orig_context->reg[fs->regs.reg[i].loc.reg].how);
 	  }
 	break;
       case REG_SAVED_EXP:
@@ -1366,7 +1373,8 @@ update_context (struct context *context,
 	}
 	break;
       default:
-	internal_error (__FILE__, __LINE__, "bad switch");
+	internal_error (__FILE__, __LINE__, "bad switch 0x%02X",
+			fs->regs.reg[i].how);
       }
   get_reg ((char *) &context->ra, context, fs->retaddr_column);
   unwind_tmp_obstack_free ();
@@ -1576,13 +1584,14 @@ parse_frame_info (struct objfile *objfil
 		      cie = cie->next;
 		    }
 		  if (!cie)
-		    error ("CFI: can't find CIE pointer");
+		    error ("CFI: can't find CIE pointer [in module %s]", 
+				    bfd_get_filename (abfd));
 		}
 
 	      init_loc = read_encoded_pointer (abfd, &start,
 					       cie->addr_encoding);
 
-	      switch (pointer_encoding (cie->addr_encoding))
+	      switch (pointer_encoding (cie->addr_encoding, objfile))
 		{
 		case PE_absptr:
 		  break;
@@ -1592,7 +1601,8 @@ parse_frame_info (struct objfile *objfil
 		  init_loc += curr_section_vma + start - frame_buffer;
 		  break;
 		default:
-		  warning ("CFI: Unsupported pointer encoding\n");
+		  warning ("CFI: Unsupported pointer encoding [in module %s]",
+				  bfd_get_filename (abfd));
 		}
 
 	      /* For relocatable objects we must add an offset telling
@@ -1918,7 +1928,8 @@ cfi_get_saved_register (char *raw_buffer
 	  break;
 	default:
 	  internal_error (__FILE__, __LINE__,
-			  "cfi_get_saved_register: unknown register rule");
+			  "cfi_get_saved_register: unknown register rule 0x%02X",
+			  UNWIND_CONTEXT (frame)->reg[regnum].how);
 	}
     }
 }
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.66.2.2
diff -u -p -r1.66.2.2 dwarf2read.c
--- dwarf2read.c	25 Nov 2002 21:46:54 -0000	1.66.2.2
+++ dwarf2read.c	16 Dec 2002 08:54:32 -0000
@@ -1196,22 +1196,24 @@ dwarf2_build_psymtabs_hard (struct objfi
 
       if (cu_header.version != 2)
 	{
-	  error ("Dwarf Error: wrong version in compilation unit header.");
+	  error ("Dwarf Error: wrong version in compilation unit header (is %d, should be %d) [in module %s]", cu_header.version, 2, bfd_get_filename (abfd));
 	  return;
 	}
       if (cu_header.abbrev_offset >= dwarf_abbrev_size)
 	{
-	  error ("Dwarf Error: bad offset (0x%lx) in compilation unit header (offset 0x%lx + 6).",
+	  error ("Dwarf Error: bad offset (0x%lx) in compilation unit header (offset 0x%lx + 6) [in module %s]",
 		 (long) cu_header.abbrev_offset,
-		 (long) (beg_of_comp_unit - dwarf_info_buffer));
+		 (long) (beg_of_comp_unit - dwarf_info_buffer),
+		 bfd_get_filename (abfd));
 	  return;
 	}
       if (beg_of_comp_unit + cu_header.length + cu_header.initial_length_size
 	  > dwarf_info_buffer + dwarf_info_size)
 	{
-	  error ("Dwarf Error: bad length (0x%lx) in compilation unit header (offset 0x%lx + 0).",
+	  error ("Dwarf Error: bad length (0x%lx) in compilation unit header (offset 0x%lx + 0) [in module %s]",
 		 (long) cu_header.length,
-		 (long) (beg_of_comp_unit - dwarf_info_buffer));
+		 (long) (beg_of_comp_unit - dwarf_info_buffer),
+		 bfd_get_filename (abfd));
 	  return;
 	}
       /* Read the abbrevs for this compilation unit into a table */
@@ -3551,7 +3553,8 @@ read_partial_die (struct partial_die_inf
   abbrev = dwarf2_lookup_abbrev (abbrev_number);
   if (!abbrev)
     {
-      error ("Dwarf Error: Could not find abbrev number %d.", abbrev_number);
+      error ("Dwarf Error: Could not find abbrev number %d [in module %s]", abbrev_number,
+		      bfd_get_filename (abfd));
     }
   part_die->offset = info_ptr - dwarf_info_buffer;
   part_die->tag = abbrev->tag;
@@ -3695,7 +3698,8 @@ read_full_die (struct die_info **diep, b
   abbrev = dwarf2_lookup_abbrev (abbrev_number);
   if (!abbrev)
     {
-      error ("Dwarf Error: could not find abbrev number %d.", abbrev_number);
+      error ("Dwarf Error: could not find abbrev number %d [in module %s]", abbrev_number, 
+		      bfd_get_filename (abfd));
     }
   die = dwarf_alloc_die ();
   die->offset = offset;
@@ -3831,8 +3835,9 @@ read_attribute_value (struct attribute *
       info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu_header);
       break;
     default:
-      error ("Dwarf Error: Cannot handle %s in DWARF reader.",
-	     dwarf_form_name (form));
+      error ("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]",
+	     dwarf_form_name (form),
+	     bfd_get_filename (abfd));
     }
   return info_ptr;
 }
@@ -3913,7 +3918,8 @@ read_address (bfd *abfd, char *buf, cons
 	  break;
 	default:
 	  internal_error (__FILE__, __LINE__,
-			  "read_address: bad switch, signed");
+			  "read_address: bad switch, signed [in module %s]",
+			  bfd_get_filename (abfd));
 	}
     }
   else
@@ -3931,7 +3937,8 @@ read_address (bfd *abfd, char *buf, cons
 	  break;
 	default:
 	  internal_error (__FILE__, __LINE__,
-			  "read_address: bad switch, unsigned");
+			  "read_address: bad switch, unsigned [in module %s]",
+			  bfd_get_filename (abfd));
 	}
     }
 
@@ -4046,7 +4053,8 @@ read_offset (bfd *abfd, char *buf, const
       break;
     default:
       internal_error (__FILE__, __LINE__,
-		      "read_offset: bad switch");
+		      "read_offset: bad switch [in module %s]",
+		      bfd_get_filename (abfd));
     }
 
  return retval;
@@ -4088,12 +4096,14 @@ read_indirect_string (bfd *abfd, char *b
 
   if (dwarf_str_buffer == NULL)
     {
-      error ("DW_FORM_strp used without .debug_str section");
+      error ("DW_FORM_strp used without .debug_str section [in module %s]",
+		      bfd_get_filename (abfd));
       return NULL;
     }
   if (str_offset >= dwarf_str_size)
     {
-      error ("DW_FORM_strp pointing outside of .debug_str section");
+      error ("DW_FORM_strp pointing outside of .debug_str section [in module %s]",
+		      bfd_get_filename (abfd));
       return NULL;
     }
   gdb_assert (HOST_CHAR_BIT == 8);
@@ -5091,7 +5101,8 @@ die_type (struct die_info *die, struct o
       type_die = follow_die_ref (ref);
       if (!type_die)
 	{
-	  error ("Dwarf Error: Cannot find referent at offset %d.", ref);
+	  error ("Dwarf Error: Cannot find referent at offset %d [in module %s]", 
+			  ref, objfile->name);
 	  return NULL;
 	}
     }
@@ -5099,7 +5110,8 @@ die_type (struct die_info *die, struct o
   if (!type)
     {
       dump_die (type_die);
-      error ("Dwarf Error: Problem turning type die at offset into gdb type.");
+      error ("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]",
+		      objfile->name);
     }
   return type;
 }
@@ -5123,7 +5135,8 @@ die_containing_type (struct die_info *di
       type_die = follow_die_ref (ref);
       if (!type_die)
 	{
-	  error ("Dwarf Error: Cannot find referent at offset %d.", ref);
+	  error ("Dwarf Error: Cannot find referent at offset %d [in module %s]", ref, 
+			  objfile->name);
 	  return NULL;
 	}
       type = tag_type_to_type (type_die, objfile, cu_header);
@@ -5132,7 +5145,8 @@ die_containing_type (struct die_info *di
     {
       if (type_die)
 	dump_die (type_die);
-      error ("Dwarf Error: Problem turning containing type into gdb type.");
+      error ("Dwarf Error: Problem turning containing type into gdb type [in module %s]", 
+		      objfile->name);
     }
   return type;
 }
@@ -5169,7 +5183,8 @@ tag_type_to_type (struct die_info *die, 
       if (!die->type)
 	{
 	  dump_die (die);
-	  error ("Dwarf Error: Cannot find type of die.");
+	  error ("Dwarf Error: Cannot find type of die [in module %s]", 
+			  objfile->name);
 	}
       return die->type;
     }
@@ -6329,8 +6344,8 @@ dwarf2_fundamental_type (struct objfile 
 {
   if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
     {
-      error ("Dwarf Error: internal error - invalid fundamental type id %d.",
-	     typeid);
+      error ("Dwarf Error: internal error - invalid fundamental type id %d [in module %s]",
+	     typeid, objfile->name);
     }
 
   /* Look for this particular type in the fundamental type vector.  If

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