binutils-gdb/gdb/testsuite/gdb.linespec/errors.exp
Andrew Burgess 82d0a72cdc gdb: handle calls to edit command passing only a linespec condition
While working on the previous commit to fix PR cli/28665, I noticed
that the 'edit' command would suffer from the same problem.  That is,
something like:

  (gdb) edit task 123

would cause GDB to break.  For a full explanation of what's going on
here, see the commit message for the previous commit.

As with the previous commit, this issue can be prevented by detecting,
and throwing, a junk at the end of the line error earlier, before
calling decode_line_1.

So, that's what this commit does.  I've also added some tests for this
issue.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28665
2022-02-02 16:27:36 +00:00

48 lines
1.6 KiB
Plaintext

# Copyright 2011-2022 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Linespec tests
# We don't currently need our own test case for testing, so grab
# another one.
if {[prepare_for_testing "failed to prepare" linespecs keywords.c]} {
return -1
}
# PR gdb/12843
gdb_test "list c:/foo/bar/baz.c:1" "No source file named c:/foo/bar/baz.c."
gdb_test "list c:/foo/bar/baz.c" "Function \"c:/foo/bar/baz.c\" not defined."
gdb_test "list fooc:/foo/bar/baz.c:1" "No source file named fooc."
gdb_test "list fooc:/foo/bar/baz.c" "No source file named fooc."
# PR cli/28665, gdb/28797
save_vars { env(EDITOR) } {
setenv EDITOR true
foreach cmd {list edit} {
gdb_test "${cmd} task 123" \
"Junk at end of line specification\\."
gdb_test "${cmd} if (0)" \
"Junk at end of line specification\\."
gdb_test "${cmd} thread 1" \
"Junk at end of line specification\\."
gdb_test "${cmd} -force-condition" \
"Junk at end of line specification\\."
gdb_test "${cmd} ,," \
"Junk at end of line specification\\."
}
}