]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/testsuite/gdb.cp/empty-enum.exp
gdb: don't treat empty enums as flag enums
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.cp / empty-enum.exp
1 # Copyright 2023 Free Software Foundation, Inc.
2 # This program is free software; you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation; either version 3 of the License, or
5 # (at your option) any later version.
6 #
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
11 #
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14
15 # Test how GDB displays empty enums. At one point an enum with no
16 # enumeration values would be considered a flag enum, and, as a
17 # consequence any value with that type would display like:
18 #
19 # (gdb) print enum_var
20 # $1 = (unknown: 0x8)
21 #
22 # Which resulted in a lot of noise. Now GDB treats empty enums as a
23 # non-flag enum, and should print them like this:
24 #
25 # (gdb) print enum_var
26 # $1 = 8
27 #
28 # This test checks this behaviour.
29
30 standard_testfile .cc
31
32 if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
33 return -1
34 }
35
36 if {![runto_main]} {
37 return -1
38 }
39
40 gdb_breakpoint "breakpt"
41 gdb_continue_to_breakpoint "stop in breakpt"
42
43
44 gdb_test "print arg1" " = 8"
45 gdb_test "print arg2" " = 4"
46
47 gdb_test "ptype arg1" "type = enum enum1 : unsigned int \\{\\}"
48 gdb_test "ptype arg2" "type = enum class enum2 : unsigned char \\{\\}"