New attribute 'last' for gdb.Symtab_and_line.
* NEWS (Python Scripting): Add entry about the new attribute.
* python/py-symtab.c (salpy_get_last): New function which
implements the get method for the 'last' attribute of
gdb.Symtab_and_line.
(sal_object_getset): Add entry for the 'last' attribute.
doc/
* gdb.texinfo (Symbol Tables In Python): Add description about
the new 'last' attribute of gdb.Symtab_and line.
testsuite/
* gdb.python/py-symtab.exp: Add tests to test the new attribute
'last' of gdb.Symtab_and_line.
* gdb.python/py-symbol.c: Move break point comment to enable
testing of gdb.Symtab_and_line.last.
+2012-06-26 Siva Chandra Reddy <sivachandra@google.com>
+
+ New attribute 'last' for gdb.Symtab_and_line.
+ * NEWS (Python Scripting): Add entry about the new attribute.
+ * python/py-symtab.c (salpy_get_last): New function which
+ implements the get method for the 'last' attribute of
+ gdb.Symtab_and_line.
+ (sal_object_getset): Add entry for the 'last' attribute.
+
2012-06-26 Doug Evans <dje@google.com>
* dwarf2read.c (dwo_section_names): Add macinfo_dwo, macro_dwo.
** New function gdb.find_pc_line which returns the gdb.Symtab_and_line
object associated with a PC value.
+ ** gdb.Symtab_and_line has new attribute 'last' which holds the end
+ of the address range occupied by code for the current source line.
+
* Go language support.
GDB now supports debugging programs written in the Go programming
language.
+2012-06-26 Siva Chandra Reddy <sivachandra@google.com>
+
+ * gdb.texinfo (Symbol Tables In Python): Add description about
+ the new 'last' attribute of gdb.Symtab_and line.
+
2012-06-26 Siva Chandra Reddy <sivachandra@google.com>
* gdb.texinfo (Symbol Tables In Python): Correct the description
current source line. This attribute is not writable.
@end defvar
+@defvar Symtab_and_line.last
+Indicates the end of the address range occupied by code for the current
+source line. This attribute is not writable.
+@end defvar
+
@defvar Symtab_and_line.line
Indicates the current line number for this object. This
attribute is not writable.
return gdb_py_long_from_ulongest (sal->pc);
}
+/* Implementation of the get method for the 'last' attribute of
+ gdb.Symtab_and_line. */
+
+static PyObject *
+salpy_get_last (PyObject *self, void *closure)
+{
+ struct symtab_and_line *sal = NULL;
+
+ SALPY_REQUIRE_VALID (self, sal);
+
+ if (sal->end > 0)
+ return gdb_py_long_from_ulongest (sal->end - 1);
+ else
+ Py_RETURN_NONE;
+}
+
static PyObject *
salpy_get_line (PyObject *self, void *closure)
{
static PyGetSetDef sal_object_getset[] = {
{ "symtab", salpy_get_symtab, NULL, "Symtab object.", NULL },
{ "pc", salpy_get_pc, NULL, "Return the symtab_and_line's pc.", NULL },
+ { "last", salpy_get_last, NULL,
+ "Return the symtab_and_line's last address.", NULL },
{ "line", salpy_get_line, NULL,
"Return the symtab_and_line's line.", NULL },
{NULL} /* Sentinel */
+2012-06-26 Siva Chandra Reddy <sivachandra@google.com>
+
+ * gdb.python/py-symtab.exp: Add tests to test the new attribute
+ 'last' of gdb.Symtab_and_line.
+ * gdb.python/py-symbol.c: Move break point comment to enable
+ testing of gdb.Symtab_and_line.last.
+
2012-06-26 Tom Tromey <tromey@redhat.com>
* gdb.threads/step.c: Remove.
int func (int arg)
{
int i = 2;
- i = i * arg;
- return arg; /* Block break here. */
+ i = i * arg; /* Block break here. */
+ return arg;
}
struct simple_struct
gdb_py_test_silent_cmd "python global_symbols = \[\]; static_symbols = \[\]" "Set up symbol name lists" 0
gdb_py_test_silent_cmd "python for sym in global_block: global_symbols.append(sym.name)" "Get global symbol names" 0
gdb_py_test_silent_cmd "python for sym in static_block: static_symbols.append(sym.name)" "Get static symbol names" 0
+gdb_py_test_silent_cmd "step" "Step to the next line" 0
+gdb_py_test_silent_cmd "python new_pc = gdb.selected_frame().find_sal().pc" "Get new PC" 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.last == (new_pc - 1)" "True" "Test sal.last"
gdb_test "python print sal.line" "$line_no" "Test sal.line"
gdb_test "python print sal.is_valid()" "True" "Test sal.is_valid"