From 66132b2432e56a4ca31b9b66f1759be8bbbd3009 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sun, 23 Sep 2018 11:09:39 +0200 Subject: [PATCH 1/9] py-minsymbol: Add gdb/testsuite/gdb.python/py-minsymbol.c --- gdb/testsuite/gdb.python/py-minsymbol.c | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 gdb/testsuite/gdb.python/py-minsymbol.c diff --git a/gdb/testsuite/gdb.python/py-minsymbol.c b/gdb/testsuite/gdb.python/py-minsymbol.c new file mode 100644 index 00000000000..ff189800678 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-minsymbol.c @@ -0,0 +1,36 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2018 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 . */ + +/* So we have a data section */ +const char foo[] = "somestring"; + +asm("\ +.section .text\n\ +.global text_msym\n\ +text_msym:\n\ + .byte 0\n\ +.section .data\n\ +.globl data_msym\n\ +data_msym:\n\ + .asciz \"minsym text\"\n\ +"); + +int +main (void) +{ + return 0; +} From 1df69604c57c4c524a5f25e2a922d27cd6ad1dbf Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 19 Sep 2018 14:53:09 +0200 Subject: [PATCH 2/9] py-minsymbol: Add missing cast to minimal symbol in py-minsymbol.exp --- gdb/testsuite/gdb.python/py-minsymbol.exp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.python/py-minsymbol.exp b/gdb/testsuite/gdb.python/py-minsymbol.exp index 877e17fc130..629266c6cf5 100644 --- a/gdb/testsuite/gdb.python/py-minsymbol.exp +++ b/gdb/testsuite/gdb.python/py-minsymbol.exp @@ -44,7 +44,7 @@ gdb_test "python print x.value()" "0x\[0-9a-f\]*.*" "get text minsym value" gdb_test "python print x.value().type" "void \\(\\*\\)\\(\\)" "get text minsym value type" # Test looking up a minimal symbol of data type -gdb_test "print data_msym" " = \[0-9\]*" "locate data_msym with print" +gdb_test "print (void *)data_msym" "0x\[0-9a-f\]*.*" "locate data_msym with print" gdb_py_test_silent_cmd "python x = gdb.lookup_minimal_symbol('data_msym')" "Lookup data_msym" 1 gdb_test "python print x.name" "data_msym" "get data minsym name" gdb_test "python print x.linkage_name" "data_msym" "get data minsym linkage_name" From c418e9fde8780ac871a73ff5d523d2837284ce98 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Mon, 24 Sep 2018 11:27:17 +0200 Subject: [PATCH 3/9] py-minsymbol: Test sfile argument of gdb.lookup_minimal_symbol --- gdb/testsuite/gdb.python/py-minsymbol.c | 2 ++ gdb/testsuite/gdb.python/py-minsymbol.exp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/gdb/testsuite/gdb.python/py-minsymbol.c b/gdb/testsuite/gdb.python/py-minsymbol.c index ff189800678..e33ee2041fb 100644 --- a/gdb/testsuite/gdb.python/py-minsymbol.c +++ b/gdb/testsuite/gdb.python/py-minsymbol.c @@ -27,6 +27,8 @@ text_msym:\n\ .globl data_msym\n\ data_msym:\n\ .asciz \"minsym text\"\n\ +data_msym2:\n\ + .asciz \"minsym2 text\"\n\ "); int diff --git a/gdb/testsuite/gdb.python/py-minsymbol.exp b/gdb/testsuite/gdb.python/py-minsymbol.exp index 629266c6cf5..9c333f3d6eb 100644 --- a/gdb/testsuite/gdb.python/py-minsymbol.exp +++ b/gdb/testsuite/gdb.python/py-minsymbol.exp @@ -54,6 +54,9 @@ gdb_test "python print x.print_name" "data_msym" "get data minsym print_name" gdb_test "python print x.section" ".data" "get data minsym section" gdb_test "python print x.value()" "0x\[0-9a-f\]*.*" "get data minsym value" +gdb_test "python print(gdb.lookup_minimal_symbol('data_msym2', 'foobar.c'))" "None" "Lookup data_msym2 in foobar.c src" +gdb_test "python print(gdb.lookup_minimal_symbol('data_msym2', 'py-minsymbol.c'))" "data_msym2" "Lookup data_msym2 in py-minsymbol.c src" + gdb_unload gdb_test "python print (x.is_valid())" "False" "Test symbol non-validity" gdb_test_no_output "python a = None" "Test symbol destructor" From 02f5d9b776bc27a60eb4ddb6c6067c23e3ba5e41 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 19 Sep 2018 16:55:15 +0200 Subject: [PATCH 4/9] gdb/testsuite: Remove gdb.python/Makefile.in Since commit 2151ccc56c (Always organize test artifacts in a directory hierarchy), present since 7.11 release, Makefile.in files are not used anymore in the testsuite subdirs. --- gdb/testsuite/gdb.python/Makefile.in | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 gdb/testsuite/gdb.python/Makefile.in diff --git a/gdb/testsuite/gdb.python/Makefile.in b/gdb/testsuite/gdb.python/Makefile.in deleted file mode 100644 index b9d76d7769c..00000000000 --- a/gdb/testsuite/gdb.python/Makefile.in +++ /dev/null @@ -1,22 +0,0 @@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -EXECUTABLES = py-type py-value py-prettyprint py-template py-block \ - py-symbol py-mi py-breakpoint py-inferior py-infthread \ - py-shared python lib-types py-events py-evthreads py-frame \ - py-mi py-pp-maint py-progspace py-section-script py-objfile \ - py-finish-breakpoint py-finish-breakpoint2 py-value-cc py-explore \ - py-explore-cc py-arch py-minsymbol - -MISCELLANEOUS = py-shared-sl.sl py-events-shlib.so py-events-shlib-nodebug.so - -all info install-info dvi install uninstall installcheck check: - @echo "Nothing to be done for $@..." - -clean mostlyclean: - -rm -f *~ *.o *.ci - -rm -f *.dwo *.dwp - -rm -f core $(EXECUTABLES) $(MISCELLANEOUS) - -distclean maintainer-clean realclean: clean - -rm -f Makefile config.status config.log gdb.log gdb.sum From 7e5716f41dedb8ec8575d18621ae5c9cc6ee41d7 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sun, 23 Sep 2018 11:04:51 +0200 Subject: [PATCH 5/9] py-minsymbol: Remove unused vars in py-minsymbol.c --- gdb/python/py-minsymbol.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/gdb/python/py-minsymbol.c b/gdb/python/py-minsymbol.c index fc600cca67d..965e7122abe 100644 --- a/gdb/python/py-minsymbol.c +++ b/gdb/python/py-minsymbol.c @@ -88,7 +88,6 @@ static const struct objfile_data *msympy_objfile_data_key; static PyObject * msympy_str (PyObject *self) { - PyObject *result; struct minimal_symbol *minsym = NULL; MSYMPY_REQUIRE_VALID (self, minsym); @@ -334,7 +333,6 @@ gdb_PyUnicode_AsUTF8(PyObject *obj) PyObject * gdbpy_lookup_minimal_symbol (PyObject *self, PyObject *args, PyObject *kw) { - int domain = VAR_DOMAIN; const char *name, *sfile = NULL; struct objfile *objfile = NULL; static const char *keywords[] = { "name", "sfile", "objfile", NULL }; From f6e7ed5605171ffaa4cf901a22016078501916d8 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sun, 23 Sep 2018 11:05:36 +0200 Subject: [PATCH 6/9] py-minsymbol: Fix memory leak in del_objfile_msymbols --- gdb/python/py-minsymbol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/python/py-minsymbol.c b/gdb/python/py-minsymbol.c index 965e7122abe..a5515caf0d9 100644 --- a/gdb/python/py-minsymbol.c +++ b/gdb/python/py-minsymbol.c @@ -400,7 +400,7 @@ del_objfile_msymbols (struct objfile *objfile, void *datum) obj->next = NULL; obj->prev = NULL; - obj = obj->next; + obj = next; } } From 0e0bbfa697b3ba88aaa2884bc56c3e0c2892dcee Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 19 Sep 2018 15:19:45 +0200 Subject: [PATCH 7/9] py-minsymbol: Update py-minsymbol.exp for python3 --- gdb/testsuite/gdb.python/py-minsymbol.exp | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/gdb/testsuite/gdb.python/py-minsymbol.exp b/gdb/testsuite/gdb.python/py-minsymbol.exp index 9c333f3d6eb..c2ee9d208ce 100644 --- a/gdb/testsuite/gdb.python/py-minsymbol.exp +++ b/gdb/testsuite/gdb.python/py-minsymbol.exp @@ -28,31 +28,31 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} { if { [skip_python_tests] } { continue } # Test looking up missing value -gdb_test "python print gdb.lookup_minimal_symbol('xyz')" "None" "lookup missing symbol" +gdb_test "python print (gdb.lookup_minimal_symbol('xyz'))" "None" "lookup missing symbol" # Test looking up a minimal symbol of text type gdb_test "print text_msym" " = \{\} 0x\[0-9a-f\]* " "locate text_msym with print" gdb_py_test_silent_cmd "python x = gdb.lookup_minimal_symbol('text_msym')" "Lookup text_msym" 1 -gdb_test "python print x" "text_msym" "lookup text min sym" -gdb_test "python print x.name" "text_msym" "get text minsym name" -gdb_test "python print x.linkage_name" "text_msym" "get text minsym linkage_name" +gdb_test "python print (x)" "text_msym" "lookup text min sym" +gdb_test "python print (x.name)" "text_msym" "get text minsym name" +gdb_test "python print (x.linkage_name)" "text_msym" "get text minsym linkage_name" # Using asm() ends up inventing a compiler-dependent filename -gdb_test "python print x.filename" ".*" "get text minsym filename" -gdb_test "python print x.print_name" "text_msym" "get text minsym print_name" -gdb_test "python print x.section" ".text" "get text minsym section" -gdb_test "python print x.value()" "0x\[0-9a-f\]*.*" "get text minsym value" -gdb_test "python print x.value().type" "void \\(\\*\\)\\(\\)" "get text minsym value type" +gdb_test "python print (x.filename)" ".*" "get text minsym filename" +gdb_test "python print (x.print_name)" "text_msym" "get text minsym print_name" +gdb_test "python print (x.section)" ".text" "get text minsym section" +gdb_test "python print (x.value())" "0x\[0-9a-f\]*.*" "get text minsym value" +gdb_test "python print (x.value().type)" "void \\(\\*\\)\\(\\)" "get text minsym value type" # Test looking up a minimal symbol of data type gdb_test "print (void *)data_msym" "0x\[0-9a-f\]*.*" "locate data_msym with print" gdb_py_test_silent_cmd "python x = gdb.lookup_minimal_symbol('data_msym')" "Lookup data_msym" 1 -gdb_test "python print x.name" "data_msym" "get data minsym name" -gdb_test "python print x.linkage_name" "data_msym" "get data minsym linkage_name" +gdb_test "python print (x.name)" "data_msym" "get data minsym name" +gdb_test "python print (x.linkage_name)" "data_msym" "get data minsym linkage_name" # Using asm() ends up inventing a compiler-dependent filename -gdb_test "python print x.filename" ".*" "get data minsym filename" -gdb_test "python print x.print_name" "data_msym" "get data minsym print_name" -gdb_test "python print x.section" ".data" "get data minsym section" -gdb_test "python print x.value()" "0x\[0-9a-f\]*.*" "get data minsym value" +gdb_test "python print (x.filename)" ".*" "get data minsym filename" +gdb_test "python print (x.print_name)" "data_msym" "get data minsym print_name" +gdb_test "python print (x.section)" ".data" "get data minsym section" +gdb_test "python print (x.value())" "0x\[0-9a-f\]*.*" "get data minsym value" gdb_test "python print(gdb.lookup_minimal_symbol('data_msym2', 'foobar.c'))" "None" "Lookup data_msym2 in foobar.c src" gdb_test "python print(gdb.lookup_minimal_symbol('data_msym2', 'py-minsymbol.c'))" "data_msym2" "Lookup data_msym2 in py-minsymbol.c src" From cb3cf71ec3766c2b40288edf0eca07f7fba1c868 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 19 Sep 2018 15:20:04 +0200 Subject: [PATCH 8/9] py-register: Update py-register.exp for python3 --- gdb/testsuite/gdb.python/py-register.exp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/gdb.python/py-register.exp b/gdb/testsuite/gdb.python/py-register.exp index b18de66ee5c..b52a3390714 100644 --- a/gdb/testsuite/gdb.python/py-register.exp +++ b/gdb/testsuite/gdb.python/py-register.exp @@ -39,7 +39,7 @@ gdb_py_test_silent_cmd "python regs = gdb.selected_thread().registers" "Keep a # Hopefully an architecture-independent way of finding a GPR to test; Reg #0 gdb_py_test_silent_cmd "python gpr0 = sorted(regs.values(), key=lambda x: x.regnum)\[0\]" "saving the name of GPR#0" 1 -gdb_test "python print gpr0" " Date: Wed, 19 Sep 2018 15:20:36 +0200 Subject: [PATCH 9/9] py-symbol: Update py-symbol.exp for python3 --- gdb/testsuite/gdb.python/py-symbol.exp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/gdb.python/py-symbol.exp b/gdb/testsuite/gdb.python/py-symbol.exp index 7e42b7014bf..5655c9e9471 100644 --- a/gdb/testsuite/gdb.python/py-symbol.exp +++ b/gdb/testsuite/gdb.python/py-symbol.exp @@ -53,10 +53,10 @@ gdb_test "python print (gdb.lookup_global_symbol('qq').needs_frame)" \ # Test looking up a static symbol that doesn't require a frame gdb_test_no_output "python staticfunc = gdb.lookup_symbol(\"staticfunc\", None)" "" -gdb_test "python print staticfunc\[0\]" "staticfunc" "Test staticfunc lookup" +gdb_test "python print (staticfunc\[0\])" "staticfunc" "Test staticfunc lookup" gdb_test_no_output "python staticfunc = gdb.lookup_symbol(\"does_not_exist\", None)" "" -gdb_test "python print staticfunc\[0\]" "None" "Test missing symbol lookup" +gdb_test "python print (staticfunc\[0\])" "None" "Test missing symbol lookup"