Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.528 diff -u -p -r1.528 NEWS --- NEWS 23 Jun 2012 22:23:46 -0000 1.528 +++ NEWS 24 Jun 2012 16:55:40 -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.979 diff -u -p -r1.979 gdb.texinfo --- doc/gdb.texinfo 23 Jun 2012 22:23:47 -0000 1.979 +++ doc/gdb.texinfo 24 Jun 2012 16:55:46 -0000 @@ -25264,6 +25264,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 24 Jun 2012 16:55:47 -0000 @@ -237,6 +237,22 @@ 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); + + 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) { @@ -556,6 +572,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 24 Jun 2012 16:55:47 -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.10 diff -u -p -r1.10 py-symtab.exp --- testsuite/gdb.python/py-symtab.exp 22 Jun 2012 17:59:33 -0000 1.10 +++ testsuite/gdb.python/py-symtab.exp 24 Jun 2012 16:55:47 -0000 @@ -46,10 +46,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"