Add C++ "save gdb-index" test

I found a bug in the new DWARF reader series, related to the handling
of enumerator names.  This bug caused a crash, so this patch adds a
regression test for this particular case.  I'm checking this in.
This commit is contained in:
Tom Tromey
2022-04-12 07:55:40 -06:00
parent dc262faf37
commit ce70f11ffe
2 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,35 @@
# Copyright 2022 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/>.
load_lib dwarf.exp
standard_testfile index.cc
if {[prepare_for_testing "failed to prepare" "${testfile}" \
[list ${srcfile}]]} {
return -1
}
# The bug was that gdb would crash when saving.
set output_dir [standard_output_file ""]
set cmd "save gdb-index"
gdb_test_multiple "$cmd $output_dir" $cmd {
-re -wrap "Cannot use an index to create the index.*" {
unsupported $gdb_test_name
}
-re "^$cmd \[^\r\n\]*\r\n$gdb_prompt $" {
pass $gdb_test_name
}
}

View File

@ -0,0 +1,29 @@
/* This testcase is part of GDB, the GNU debugger.
Copyright 2022 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/>. */
/* Test C++ index saving. */
enum E { ONE, TWO };
E e_value = ONE;
enum class EC { THREE, FOUR };
EC ec_value = EC::THREE;
int main ()
{
return 0;
}