Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.527 diff -u -p -r1.527 NEWS --- NEWS 6 Jun 2012 18:03:53 -0000 1.527 +++ NEWS 13 Jun 2012 18:08:37 -0000 @@ -60,6 +60,9 @@ ** 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. Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.974 diff -u -p -r1.974 gdb.texinfo --- doc/gdb.texinfo 8 Jun 2012 13:05:55 -0000 1.974 +++ doc/gdb.texinfo 13 Jun 2012 18:08:53 -0000 @@ -25262,6 +25262,11 @@ Indicates the current program counter ad 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. Index: python/py-symtab.c =================================================================== RCS file: /cvs/src/src/gdb/python/py-symtab.c,v retrieving revision 1.9 diff -u -p -r1.9 py-symtab.c --- python/py-symtab.c 3 May 2012 07:07:25 -0000 1.9 +++ python/py-symtab.c 13 Jun 2012 18:08:54 -0000 @@ -237,6 +237,19 @@ salpy_get_pc (PyObject *self, void *clos 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); + + return gdb_py_long_from_ulongest (sal->end - 1); +} + static PyObject * salpy_get_line (PyObject *self, void *closure) { @@ -556,6 +569,8 @@ static PyTypeObject symtab_object_type = 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 */ Index: testsuite/gdb.python/py-symbol.c =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-symbol.c,v retrieving revision 1.6 diff -u -p -r1.6 py-symbol.c --- testsuite/gdb.python/py-symbol.c 3 May 2012 07:07:26 -0000 1.6 +++ testsuite/gdb.python/py-symbol.c 13 Jun 2012 18:08:55 -0000 @@ -40,8 +40,8 @@ int qq = 72; /* line of qq */ 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 Index: testsuite/gdb.python/py-symtab.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-symtab.exp,v retrieving revision 1.9 diff -u -p -r1.9 py-symtab.exp --- testsuite/gdb.python/py-symtab.exp 3 May 2012 07:07:26 -0000 1.9 +++ testsuite/gdb.python/py-symtab.exp 13 Jun 2012 18:08:55 -0000 @@ -54,10 +54,13 @@ gdb_py_test_silent_cmd "python static_bl 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"