Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@specifix.com>
To: Markus Deuling <deuling@de.ibm.com>
Cc: GDB Patches <gdb-patches@sourceware.org>,
	Ulrich Weigand <uweigand@de.ibm.com>
Subject: Re: [patch] Add proper error message instead of gdb_assert
Date: Mon, 03 Mar 2008 20:25:00 -0000	[thread overview]
Message-ID: <1204575891.19253.578.camel@localhost.localdomain> (raw)
In-Reply-To: <47CC5332.3020700@de.ibm.com>


In general I don't like asserts, and especially I don't like them
when the error is something local as opposed to something
un-recoverable.

Whenever it is NOT an unrecoverable error, I think that
replacing an assert with an error message should be a 
good thing.

I'm inviting comment.   ;-)

On Mon, 2008-03-03 at 20:36 +0100, Markus Deuling wrote:
> Hi,
> 
> when trying to put > 1 values into an array (fortran subrange) which
> comes from a register, register_size is called with regnum == -1.
> 
> The following example comes from SPU architecture. Currently GDB exits 
> with a gdb_assert going wrong:
> 
> (gdb) set $r0%v2_int64(0:1)=(1,2)
> ../../../gdb-6.7/gdb/regcache.c:177: internal-error: register_size: Assertion `regnum >= 0 && regnum < (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch))' failed.
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? (y or n) y
> 
> This patch replaces that gdb_assert by a proper error message before
> exiting:
> 
> (gdb) set $r2%v2_int64(0:1)=(1,1)
> ../../../gdb-6.7/gdb/regcache.c:185: internal-error: invalid register -1
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? (y or n) 
> 
> If this patch is ok it would be great to have it in gdb 6.8. Ok?
> 
> ChangeLog:
> 
>         * regcache.c (register_size): Replace gdb_assert by a proper error
>         message.
> 
> 
> Regards,
> Markus
> 
> 
> plain text document attachment (fix-assert)
> diff -urpN gdb-6.7-orig/gdb/regcache.c gdb-6.7/gdb/regcache.c
> --- gdb-6.7-orig/gdb/regcache.c	2008-03-03 19:30:54.000000000 +0100
> +++ gdb-6.7/gdb/regcache.c	2008-03-03 20:30:10.000000000 +0100
> @@ -172,11 +172,18 @@ register_size (struct gdbarch *gdbarch, 
>  {
>    struct regcache_descr *descr = regcache_descr (gdbarch);
>    int size;
> -  gdb_assert (regnum >= 0
> -	      && regnum < (gdbarch_num_regs (gdbarch)
> -			   + gdbarch_num_pseudo_regs (gdbarch)));
> -  size = descr->sizeof_register[regnum];
> -  return size;
> +
> + 
> +  if (regnum >= 0 
> +      && regnum < (gdbarch_num_regs (gdbarch)
> +	 + gdbarch_num_pseudo_regs (gdbarch)))
> +    {
> +      size = descr->sizeof_register[regnum];
> +      return size;
> +    }
> +
> +  internal_error (__FILE__, __LINE__, _("invalid register %d"), regnum);
> +  return 0;
>  }
>  
>  /* The register cache for storing raw register values.  */


      parent reply	other threads:[~2008-03-03 20:25 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-03 19:37 Markus Deuling
2008-03-03 19:55 ` Mark Kettenis
2008-03-03 20:29   ` Michael Snyder
2008-03-03 20:37     ` Mark Kettenis
2008-03-04  4:09       ` Eli Zaretskii
2008-03-03 20:39     ` Daniel Jacobowitz
2008-03-03 20:46       ` Markus Deuling
2008-03-03 21:12       ` Markus Deuling
2008-03-03 21:17         ` Daniel Jacobowitz
2008-03-03 20:00 ` Ulrich Weigand
2008-03-03 20:30   ` Michael Snyder
2008-03-03 20:25 ` Michael Snyder [this message]

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=1204575891.19253.578.camel@localhost.localdomain \
    --to=msnyder@specifix.com \
    --cc=deuling@de.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=uweigand@de.ibm.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