From 4cb6da1cdd239a764f8a08f5aff0ab82ad270a7f Mon Sep 17 00:00:00 2001 From: Aleksandar Ristovski Date: Wed, 15 Feb 2012 19:27:59 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 6 ++++++ gdb/frame.c | 2 ++ gdb/stack.c | 5 +++++ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/break-inline.c | 32 ++++++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/break-inline.exp | 25 +++++++++++++++++++++++++ 6 files changed, 75 insertions(+) create mode 100644 gdb/testsuite/gdb.base/break-inline.c create mode 100644 gdb/testsuite/gdb.base/break-inline.exp 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 + + * 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 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 + + * gdb.base/break-inline.exp: New file. + * gdb.base/break-inline.c: New file. + 2012-02-15 Tom Tromey * 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 . */ + +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 . + + +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.*" + -- 2.7.4