Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michal Ludvig <mludvig@suse.cz>
To: GDB Patches <gdb-patches@sources.redhat.com>
Subject: Re: [RFA] Added verbosity to dwarf2*
Date: Mon, 16 Dec 2002 05:58:00 -0000	[thread overview]
Message-ID: <3DFD9516.7060705@suse.cz> (raw)
In-Reply-To: <Pine.SUN.3.91.1021215080339.22353E-100000@is>

[-- Attachment #1: Type: text/plain, Size: 772 bytes --]

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

[-- Attachment #2: gdb-verbosestrings-5.3.diff --]
[-- Type: text/plain, Size: 16672 bytes --]

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

  reply	other threads:[~2002-12-16  8:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-14 10:34 [PATCH] " Michal Ludvig
2002-12-14 13:50 ` [RFA] " Michal Ludvig
2002-12-14 22:18   ` Eli Zaretskii
2002-12-16  5:58     ` Michal Ludvig [this message]
2002-12-16 10:43       ` Eli Zaretskii
2003-02-03 14:43 ` [PATCH] " Michal Ludvig
2003-02-03 15:26   ` Andrew Cagney
2003-02-03 15:49     ` Michal Ludvig
2003-02-03 15:59       ` Andrew Cagney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3DFD9516.7060705@suse.cz \
    --to=mludvig@suse.cz \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox