aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.cp/expand-sals.cc
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2009-05-11 15:05:56 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2009-05-11 15:05:56 +0000
commit0090345643feb25a5214871384c4cccf55f2e991 (patch)
tree29f6fdc68b81754854feea7fb3bd04926d495355 /gdb/testsuite/gdb.cp/expand-sals.cc
parent7feb7d068ae65557ede03c36468ebac61b0939ca (diff)
downloadgdb-0090345643feb25a5214871384c4cccf55f2e991.zip
gdb-0090345643feb25a5214871384c4cccf55f2e991.tar.gz
gdb-0090345643feb25a5214871384c4cccf55f2e991.tar.bz2
gdb/
Fix internal error on breaking at a multi-locations caller source line. * breakpoint.c (parse_breakpoint_sals): Set EXPLICIT_PC for the `break' command with no parameters. gdb/testsuite/ * gdb.cp/expand-sals.exp, gdb.cp/expand-sals.cc: New.
Diffstat (limited to 'gdb/testsuite/gdb.cp/expand-sals.cc')
-rw-r--r--gdb/testsuite/gdb.cp/expand-sals.cc53
1 files changed, 53 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cp/expand-sals.cc b/gdb/testsuite/gdb.cp/expand-sals.cc
new file mode 100644
index 0000000..6169a05
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/expand-sals.cc
@@ -0,0 +1,53 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ 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/>. */
+
+int
+func ()
+{
+ return 42; /* func-line */
+}
+
+volatile int global_x;
+
+class A
+{
+public:
+ A ()
+ {
+ global_x = func (); /* caller-line */
+ }
+};
+
+/* class B is here just to make the `func' calling line above having multiple
+ instances - multiple locations. Template cannot be used as its instances
+ would have different function names which get discarded by GDB
+ expand_line_sal_maybe. */
+
+class B : public A
+{
+};
+
+int
+main (void)
+{
+ A a;
+ B b;
+
+ return 0; /* exit-line */
+}