aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2021-11-09 13:22:05 +0000
committerAndrew Burgess <aburgess@redhat.com>2021-11-16 17:35:03 +0000
commita6e7fea128b8e1da3ea99dc906df56f85589d335 (patch)
tree6befb7056fdcd80cd87ab3c896f4227d25296024
parentb7c9d393d60957b901418359d2cf5d276bcc5e4b (diff)
downloadbinutils-a6e7fea128b8e1da3ea99dc906df56f85589d335.zip
binutils-a6e7fea128b8e1da3ea99dc906df56f85589d335.tar.gz
binutils-a6e7fea128b8e1da3ea99dc906df56f85589d335.tar.bz2
gdb: throw OPTIMIZED_OUT_ERROR rather than GENERIC_ERROR
While reviewing this patch: https://sourceware.org/pipermail/gdb-patches/2021-November/183227.html I spotted that the patch could be improved if we threw OPTIMIZED_OUT_ERROR rather than GENERIC_ERROR in a few places. This commit updates error_value_optimized_out and require_not_optimized_out to throw OPTIMIZED_OUT_ERROR. I ran the testsuite and saw no regressions. This doesn't really surprise me, we don't usually write code like: catch (const gdb_exception_error &ex) { (if ex.error == GENERIC_ERROR) ... else ... } There are a three places where we write something like: catch (const gdb_exception_error &ex) { (if ex.error == OPTIMIZED_OUT_ERROR) ... } In frame.c:unwind_pc, stack.c:info_frame_command_core, and value.c:value_optimized_out, but if we are hitting these cases then it's not significantly changing GDB's behaviour.
-rw-r--r--gdb/value.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/value.c b/gdb/value.c
index 998bec3..10edf3b 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -1221,7 +1221,7 @@ value_actual_type (struct value *value, int resolve_simple_types,
void
error_value_optimized_out (void)
{
- error (_("value has been optimized out"));
+ throw_error (OPTIMIZED_OUT_ERROR, _("value has been optimized out"));
}
static void
@@ -1230,7 +1230,8 @@ require_not_optimized_out (const struct value *value)
if (!value->optimized_out.empty ())
{
if (value->lval == lval_register)
- error (_("register has not been saved in frame"));
+ throw_error (OPTIMIZED_OUT_ERROR,
+ _("register has not been saved in frame"));
else
error_value_optimized_out ();
}