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. */
prev 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