Browse Source

Fix valgrind error from gdb.decode_line

PR symtab/12535 points out that gdb.decode_line("") will cause a
valgrind report.

I think the empty linespec does not really make sense.  So, this patch
changes gdb.decode_line to treat a whitespace-only linespec the same
as a non-existing argument.

gdb/ChangeLog
2020-01-14  Tom Tromey  <tom@tromey.com>

	PR symtab/12535:
	* python/python.c (gdbpy_decode_line): Treat empty string the same
	as no argument.

gdb/testsuite/ChangeLog
2020-01-14  Tom Tromey  <tom@tromey.com>

	PR symtab/12535:
	* gdb.python/python.exp: Test decode_line with empty string
	argument.

Change-Id: I1d95812b4b7a21d69a3e9afd05b9e3141a931897
binutils-2_34-branch
Tom Tromey 6 years ago
parent
commit
ff47f4f06d
  1. 6
      gdb/ChangeLog
  2. 9
      gdb/python/python.c
  3. 6
      gdb/testsuite/ChangeLog
  4. 4
      gdb/testsuite/gdb.python/python.exp

6
gdb/ChangeLog

@ -1,3 +1,9 @@
2020-01-14 Tom Tromey <tom@tromey.com>
PR symtab/12535:
* python/python.c (gdbpy_decode_line): Treat empty string the same
as no argument.
2020-01-14 Tom Tromey <tom@tromey.com> 2020-01-14 Tom Tromey <tom@tromey.com>
* Makefile.in (CLIBS): Remove second use of $(LIBIBERTY). * Makefile.in (CLIBS): Remove second use of $(LIBIBERTY).

9
gdb/python/python.c

@ -810,6 +810,15 @@ gdbpy_decode_line (PyObject *self, PyObject *args)
if (! PyArg_ParseTuple (args, "|s", &arg)) if (! PyArg_ParseTuple (args, "|s", &arg))
return NULL; return NULL;
/* Treat a string consisting of just whitespace the same as
NULL. */
if (arg != NULL)
{
arg = skip_spaces (arg);
if (*arg == '\0')
arg = NULL;
}
if (arg != NULL) if (arg != NULL)
location = string_to_event_location_basic (&arg, python_language, location = string_to_event_location_basic (&arg, python_language,
symbol_name_match_type::WILD); symbol_name_match_type::WILD);

6
gdb/testsuite/ChangeLog

@ -1,3 +1,9 @@
2020-01-14 Tom Tromey <tom@tromey.com>
PR symtab/12535:
* gdb.python/python.exp: Test decode_line with empty string
argument.
2020-01-14 Bernd Edlinger <bernd.edlinger@hotmail.de> 2020-01-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
* gdb.base/skip-inline.exp: Extend test. * gdb.base/skip-inline.exp: Extend test.

4
gdb/testsuite/gdb.python/python.exp

@ -234,6 +234,10 @@ gdb_test "python print (len(symtab))" "2" "test decode_line current location"
gdb_test "python print (symtab\[0\])" "None" "test decode_line expression parse" gdb_test "python print (symtab\[0\])" "None" "test decode_line expression parse"
gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line current location" gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line current location"
# Test that decode_line with an empty string argument does not crash.
gdb_py_test_silent_cmd "python symtab2 = gdb.decode_line('')" \
"test decode_line with empty string" 1
if { [is_remote host] } { if { [is_remote host] } {
set python_c [string_to_regexp "python.c"] set python_c [string_to_regexp "python.c"]
} else { } else {

Loading…
Cancel
Save