diff options
author | Aleksandar Ristovski <aristovski@qnx.com> | 2012-02-15 19:27:59 +0000 |
---|---|---|
committer | Aleksandar Ristovski <aristovski@qnx.com> | 2012-02-15 19:27:59 +0000 |
commit | 4cb6da1cdd239a764f8a08f5aff0ab82ad270a7f (patch) | |
tree | 3dc49bee8dc4e59ca0a2cc05dfd789d290c86fda | |
parent | 3af2590d3ee379d7e7ad4a1019887d3983721227 (diff) | |
download | gdb-4cb6da1cdd239a764f8a08f5aff0ab82ad270a7f.zip gdb-4cb6da1cdd239a764f8a08f5aff0ab82ad270a7f.tar.gz gdb-4cb6da1cdd239a764f8a08f5aff0ab82ad270a7f.tar.bz2 |
* frame.c (find_frame_sal): Initialize sal->pspace field from frame
data.
* stack.c (set_last_displayed_sal): Validate that PSPACE is not NULL.
testuite:
* gdb.base/break-inline.exp: New file.
* gdb.base/break-inline.c: New file.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/frame.c | 2 | ||||
-rw-r--r-- | gdb/stack.c | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break-inline.c | 32 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break-inline.exp | 25 |
6 files changed, 75 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c7ee484..b1a1847 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2012-02-15 Aleksandar Ristovski <aristovski@qnx.com> + + * frame.c (find_frame_sal): Initialize sal->pspace field from frame + data. + * stack.c (set_last_displayed_sal): Validate that PSPACE is not NULL. + 2012-02-15 Tom Tromey <tromey@redhat.com> PR gdb/12659: diff --git a/gdb/frame.c b/gdb/frame.c index 2bb843e..5e51ca6 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -2096,6 +2096,8 @@ find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal) we can't do much better. */ sal->pc = get_frame_pc (frame); + sal->pspace = get_frame_program_space (frame); + return; } diff --git a/gdb/stack.c b/gdb/stack.c index 95bb631..070d658 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -909,6 +909,11 @@ set_last_displayed_sal (int valid, struct program_space *pspace, last_displayed_addr = addr; last_displayed_symtab = symtab; last_displayed_line = line; + if (valid && pspace == NULL) + { + warning (_("Trying to set NULL pspace.")); + clear_last_displayed_sal (); + } } /* Forget the last sal we displayed. */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6e6b55d..ca49415 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-15 Aleksandar Ristovski <aristovski@qnx.com> + + * gdb.base/break-inline.exp: New file. + * gdb.base/break-inline.c: New file. + 2012-02-15 Tom Tromey <tromey@redhat.com> * gdb.base/pc-fp.exp: Add "info register" tests. diff --git a/gdb/testsuite/gdb.base/break-inline.c b/gdb/testsuite/gdb.base/break-inline.c new file mode 100644 index 0000000..bf80ae0 --- /dev/null +++ b/gdb/testsuite/gdb.base/break-inline.c @@ -0,0 +1,32 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright (C) 2012 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +static int g; + +static inline void +foo (void) +{ + g = 42; +} + +int +main (int argc, char *argv[]) +{ + foo (); + return g; +} + diff --git a/gdb/testsuite/gdb.base/break-inline.exp b/gdb/testsuite/gdb.base/break-inline.exp new file mode 100644 index 0000000..db2e529 --- /dev/null +++ b/gdb/testsuite/gdb.base/break-inline.exp @@ -0,0 +1,25 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +if { [prepare_for_testing break-inline.exp "break-inline" {} {debug nowarnings optimize=-O2}] } { + return -1 +} + +gdb_test "start" "Temporary breakpoint.*foo().*" + +# Now test 'break' with no arguments. +gdb_test "break" "Breakpoint.*" + |