summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-09-29 22:32:52 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2010-09-29 22:32:52 +0000
commitbceffbf360f8a475b17761c996966bae1467b311 (patch)
tree72b94e27014548b53ccaec9b6666f4bf1b15582c /gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c
parentabc72ce4c676be2f368fa0ace766ed29cd444020 (diff)
downloadbinutils-gdb-bceffbf360f8a475b17761c996966bae1467b311.tar.gz
gdb/
Fix GDB crash on inferior calls with self-referencing classes. * gnu-v3-abi.c (gnuv3_pass_by_reference): Do not call itself on static member fields. gdb/testsuite/ Fix GDB crash on inferior calls with self-referencing classes. * gdb.dwarf2/dw2-cp-infcall-ref-static.exp: New file. * gdb.dwarf2/dw2-cp-infcall-ref-static-main.c: New file. * gdb.dwarf2/dw2-cp-infcall-ref-static.S: New file.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c')
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c b/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c
new file mode 100644
index 00000000000..492beb95b5b
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c
@@ -0,0 +1,51 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 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/>. */
+
+/* class C
+ {
+ public:
+ static C s;
+ };
+ C C::s;
+ C f()
+ {
+ return C::s;
+ } */
+
+asm (".globl cu_text_start");
+asm ("cu_text_start:");
+
+asm (".globl f_start");
+asm ("f_start:");
+
+void
+f (void)
+{
+}
+
+asm (".globl f_end");
+asm ("f_end:");
+
+int
+main (void)
+{
+ f ();
+ return 0;
+}
+
+asm (".globl cu_text_end");
+asm ("cu_text_end:");