diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-09-29 22:32:52 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-09-29 22:32:52 +0000 |
commit | bceffbf360f8a475b17761c996966bae1467b311 (patch) | |
tree | 72b94e27014548b53ccaec9b6666f4bf1b15582c /gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c | |
parent | abc72ce4c676be2f368fa0ace766ed29cd444020 (diff) | |
download | binutils-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.c | 51 |
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:"); |