diff options
author | Tom Tromey <tromey@redhat.com> | 2012-02-07 19:42:27 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2012-02-07 19:42:27 +0000 |
commit | 64e7d9dddc00228cdbcecdd4c053cf83cf6608b7 (patch) | |
tree | 81e5d325950872985aca39c9bf8ea390c04261b1 /gdb | |
parent | 1d6b2d2b4a864c478fb6a46e15a29859641fe788 (diff) | |
download | gdb-64e7d9dddc00228cdbcecdd4c053cf83cf6608b7.zip gdb-64e7d9dddc00228cdbcecdd4c053cf83cf6608b7.tar.gz gdb-64e7d9dddc00228cdbcecdd4c053cf83cf6608b7.tar.bz2 |
PR python/13599:
* python/py-symbol.c (sympy_line): New function.
(symbol_object_getset): Add "line".
gdb/doc
* gdb.texinfo (Symbols In Python): Document Symbol.line.
gdb/testsuite
* gdb.python/py-symbol.c (qq): New global.
* gdb.python/py-symbol.exp: Add test for frame-less
lookup_symbol.
* gdb.python/py-symtab.exp: Fix line number.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/NEWS | 5 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 5 | ||||
-rw-r--r-- | gdb/python/py-symbol.c | 15 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-symbol.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-symbol.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-symtab.exp | 5 |
9 files changed, 51 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f85f139..bc8b7d4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2012-02-07 Tom Tromey <tromey@redhat.com> + PR python/13599: + * python/py-symbol.c (sympy_line): New function. + (symbol_object_getset): Add "line". + +2012-02-07 Tom Tromey <tromey@redhat.com> + * charset.c (find_charset_names): Check 'in' against NULL. 2012-02-06 Doug Evans <dje@google.com> @@ -10,6 +10,11 @@ ** A new class, gdb.printing.FlagEnumerationPrinter, can be used to apply "flag enum"-style pretty-printing to any enum. + ** gdb.lookup_symbol can now work when there is no current frame. + + ** gdb.Symbol now has a 'line' attribute, holding the line number in + the source at which the symbol was defined. + * GDBserver now supports stdio connections. E.g. (gdb) target remote | ssh myhost gdbserver - hello diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 4986107..8dd113e 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2012-02-07 Tom Tromey <tromey@redhat.com> + + * gdb.texinfo (Symbols In Python): Document Symbol.line. + 2012-01-27 Thomas Schwinge <thomas@codesourcery.com> * gdb.textinfo (Packets): Move vCont paragraph to the correct place. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 5738d14..052820b 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -23967,6 +23967,11 @@ represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In Python}. This attribute is not writable. @end defvar +@defvar Symbol.line +The line number in the source code at which the symbol was defined. +This is an integer. +@end defvar + @defvar Symbol.name The name of the symbol as a string. This attribute is not writable. @end defvar diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c index 9d32a71..d44014c 100644 --- a/gdb/python/py-symbol.c +++ b/gdb/python/py-symbol.c @@ -183,6 +183,19 @@ sympy_is_variable (PyObject *self, void *closure) || class == LOC_OPTIMIZED_OUT)); } +/* Implementation of gdb.Symbol.line -> int. + Returns the line number at which the symbol was defined. */ + +static PyObject * +sympy_line (PyObject *self, void *closure) +{ + struct symbol *symbol = NULL; + + SYMPY_REQUIRE_VALID (self, symbol); + + return PyInt_FromLong (SYMBOL_LINE (symbol)); +} + /* Implementation of gdb.Symbol.is_valid (self) -> Boolean. Returns True if this Symbol still exists in GDB. */ @@ -460,6 +473,8 @@ to display demangled or mangled names.", NULL }, "True if the symbol is a function or method." }, { "is_variable", sympy_is_variable, NULL, "True if the symbol is a variable." }, + { "line", sympy_line, NULL, + "The source line number at which the symbol was defined." }, { NULL } /* Sentinel */ }; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index cbaca89..39a952c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2012-01-31 Tom Tromey <tromey@redhat.com> + + * gdb.python/py-symbol.c (qq): New global. + * gdb.python/py-symbol.exp: Add test for frame-less + lookup_symbol. + * gdb.python/py-symtab.exp: Fix line number. + 2012-02-03 Joel Brobecker <brobecker@adacore.com> * gdb.ada/mi_task_arg: New testcase. diff --git a/gdb/testsuite/gdb.python/py-symbol.c b/gdb/testsuite/gdb.python/py-symbol.c index 72469be..d29849b 100644 --- a/gdb/testsuite/gdb.python/py-symbol.c +++ b/gdb/testsuite/gdb.python/py-symbol.c @@ -35,6 +35,8 @@ class SimpleClass }; #endif +int qq; /* line of qq */ + int func (int arg) { int i = 2; diff --git a/gdb/testsuite/gdb.python/py-symbol.exp b/gdb/testsuite/gdb.python/py-symbol.exp index b0e73c3..154eb37 100644 --- a/gdb/testsuite/gdb.python/py-symbol.exp +++ b/gdb/testsuite/gdb.python/py-symbol.exp @@ -42,6 +42,10 @@ gdb_py_test_silent_cmd "python main_func = gdb.lookup_global_symbol(\"main\")" " gdb_test "python print main_func.is_function" "True" "Test main_func.is_function" gdb_test "python print gdb.lookup_global_symbol(\"junk\")" "None" "Test lookup_global_symbol(\"junk\")" +set qq_line [gdb_get_line_number "line of qq"] +gdb_test "python print gdb.lookup_symbol('qq')\[0\].line" "$qq_line" \ + "print line number of qq" + if ![runto_main] then { fail "Can't run to main" return 0 diff --git a/gdb/testsuite/gdb.python/py-symtab.exp b/gdb/testsuite/gdb.python/py-symtab.exp index f64cb57..490a891 100644 --- a/gdb/testsuite/gdb.python/py-symtab.exp +++ b/gdb/testsuite/gdb.python/py-symtab.exp @@ -43,7 +43,8 @@ if ![runto_main] then { global hex decimal # Setup and get the symbol table. -gdb_breakpoint [gdb_get_line_number "Block break here."] +set line_no [gdb_get_line_number "Block break here."] +gdb_breakpoint $line_no gdb_continue_to_breakpoint "Block break here." gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0 gdb_py_test_silent_cmd "python sal = frame.find_sal()" "Get block" 0 @@ -52,7 +53,7 @@ gdb_py_test_silent_cmd "python symtab = sal.symtab" "Get block" 0 # Test sal. gdb_test "python print sal.symtab" ".*gdb.python/py-symbol.c.*" "Test symtab" gdb_test "python print sal.pc" "${decimal}" "Test sal.pc" -gdb_test "python print sal.line" "42" "Test sal.line" +gdb_test "python print sal.line" "$line_no" "Test sal.line" gdb_test "python print sal.is_valid()" "True" "Test sal.is_valid" # Test symbol table. |