mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 02:50:08 +08:00
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.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2012-02-07 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* charset.c (find_charset_names): Check 'in' against NULL.
|
* charset.c (find_charset_names): Check 'in' against NULL.
|
||||||
|
5
gdb/NEWS
5
gdb/NEWS
@ -10,6 +10,11 @@
|
|||||||
** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
|
** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
|
||||||
apply "flag enum"-style pretty-printing to any enum.
|
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.
|
* GDBserver now supports stdio connections.
|
||||||
E.g. (gdb) target remote | ssh myhost gdbserver - hello
|
E.g. (gdb) target remote | ssh myhost gdbserver - hello
|
||||||
|
|
||||||
|
@ -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>
|
2012-01-27 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
* gdb.textinfo (Packets): Move vCont paragraph to the correct place.
|
* gdb.textinfo (Packets): Move vCont paragraph to the correct place.
|
||||||
|
@ -23967,6 +23967,11 @@ represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
|
|||||||
Python}. This attribute is not writable.
|
Python}. This attribute is not writable.
|
||||||
@end defvar
|
@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
|
@defvar Symbol.name
|
||||||
The name of the symbol as a string. This attribute is not writable.
|
The name of the symbol as a string. This attribute is not writable.
|
||||||
@end defvar
|
@end defvar
|
||||||
|
@ -183,6 +183,19 @@ sympy_is_variable (PyObject *self, void *closure)
|
|||||||
|| class == LOC_OPTIMIZED_OUT));
|
|| 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.
|
/* Implementation of gdb.Symbol.is_valid (self) -> Boolean.
|
||||||
Returns True if this Symbol still exists in GDB. */
|
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." },
|
"True if the symbol is a function or method." },
|
||||||
{ "is_variable", sympy_is_variable, NULL,
|
{ "is_variable", sympy_is_variable, NULL,
|
||||||
"True if the symbol is a variable." },
|
"True if the symbol is a variable." },
|
||||||
|
{ "line", sympy_line, NULL,
|
||||||
|
"The source line number at which the symbol was defined." },
|
||||||
{ NULL } /* Sentinel */
|
{ NULL } /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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>
|
2012-02-03 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* gdb.ada/mi_task_arg: New testcase.
|
* gdb.ada/mi_task_arg: New testcase.
|
||||||
|
@ -35,6 +35,8 @@ class SimpleClass
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int qq; /* line of qq */
|
||||||
|
|
||||||
int func (int arg)
|
int func (int arg)
|
||||||
{
|
{
|
||||||
int i = 2;
|
int i = 2;
|
||||||
|
@ -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 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\")"
|
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 {
|
if ![runto_main] then {
|
||||||
fail "Can't run to main"
|
fail "Can't run to main"
|
||||||
return 0
|
return 0
|
||||||
|
@ -43,7 +43,8 @@ if ![runto_main] then {
|
|||||||
global hex decimal
|
global hex decimal
|
||||||
|
|
||||||
# Setup and get the symbol table.
|
# 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_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 frame = gdb.selected_frame()" "Get Frame" 0
|
||||||
gdb_py_test_silent_cmd "python sal = frame.find_sal()" "Get block" 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.
|
# Test sal.
|
||||||
gdb_test "python print sal.symtab" ".*gdb.python/py-symbol.c.*" "Test symtab"
|
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.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"
|
gdb_test "python print sal.is_valid()" "True" "Test sal.is_valid"
|
||||||
|
|
||||||
# Test symbol table.
|
# Test symbol table.
|
||||||
|
Reference in New Issue
Block a user