From: Tom Tromey <tromey@adacore.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tromey@adacore.com>
Subject: [PATCH] Avoid expression parsing crash with unknown language
Date: Thu, 15 Jul 2021 10:16:18 -0600 [thread overview]
Message-ID: <20210715161618.234526-1-tromey@adacore.com> (raw)
PR gdb/28093 points out that gdb crashes when language is set to
"unknown" and expression parsing is attempted. At first I thought
this was a regression due to the expression rewrite, but it turns out
that older versions crash as well.
This patch avoids the crash by changing the default expression parser
to throw an exception. I think this is preferable -- the current
behavior of silently doing nothing does not really make sense.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28093
---
gdb/language.c | 4 ++--
gdb/testsuite/gdb.base/langs.exp | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/gdb/language.c b/gdb/language.c
index 0d1e3848de8..45ce2ebcc92 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -825,8 +825,8 @@ class auto_or_unknown_language : public language_defn
int parser (struct parser_state *ps) const override
{
- /* No parsing is done, just claim success. */
- return 1;
+ error (_("expression parsing not implemented for language \"%s\""),
+ natural_name ());
}
/* See language.h. */
diff --git a/gdb/testsuite/gdb.base/langs.exp b/gdb/testsuite/gdb.base/langs.exp
index 15908b0a19a..631401a8eab 100644
--- a/gdb/testsuite/gdb.base/langs.exp
+++ b/gdb/testsuite/gdb.base/langs.exp
@@ -111,6 +111,12 @@ if [runto csub] then {
"set lang to minimal"
gdb_test "print x" " = 5000" "print parameter value"
+
+ # Ensure this at least does not crash.
+ gdb_test_no_output "set language unknown"
+ gdb_test "print x" \
+ "expression parsing not implemented for language .Unknown." \
+ "expression parsing does not crash for unknown"
}
set timeout $oldtimeout
--
2.26.3
next reply other threads:[~2021-07-15 16:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-15 16:16 Tom Tromey [this message]
2021-07-15 16:28 ` Pedro Alves
2021-07-15 19:06 ` Tom Tromey
2021-07-17 18:37 ` Joel Brobecker
2021-07-19 17:08 ` Tom Tromey
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=20210715161618.234526-1-tromey@adacore.com \
--to=tromey@adacore.com \
--cc=gdb-patches@sourceware.org \
/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