From 313b2841b8e9046ea658104988e01bedf6148d5f Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 6 Sep 2023 17:25:21 +0200 Subject: [PATCH] [gdb/testsuite] Fix gdb.ada/same_enum.exp Test-case gdb.ada/same_enum.exp is supposed to be a regression test for this bit of code in remove_extra_symbols: ... if (symbols_are_identical_enums (syms)) syms.resize (1); ... The test-case does "print red" and expects one of these two choices to be picked by remove_extra_symbols: ... type Color is (Black, Red, Green, Blue, White); type RGB_Color is new Color range Red .. Blue; ... but because only the type Color is used: ... FC : Color := Red; SC : Color := Green; ... the RGB_Color type is eliminated from the debug info, and consequently remove_extra_symbols has no effect for the test-case. In other words, we have: ... (gdb) ptype Color ^M type = (black, red, green, blue, white)^M (gdb) ptype RGB_Color^M No definition of "rgb_color" in current context.^M ... Fix this by changing the type of SC to RGB_Color, and add prints of the two types to check that they're both available. With the test-case fixed, if we disable the bit of code in remove_extra_symbols we get: ... (gdb) print red^M Multiple matches for red^M [0] cancel^M [1] pck.color'(pck.red) (enumeral)^M [2] pck.rgb_colorB'(pck.red) (enumeral)^M > FAIL: gdb.ada/same_enum.exp: print red (timeout) ... in other words, the test-case now properly functions as a regression test. Tested on x86_64-linux. --- gdb/testsuite/gdb.ada/same_enum.exp | 4 +++- gdb/testsuite/gdb.ada/same_enum/a.adb | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/gdb.ada/same_enum.exp b/gdb/testsuite/gdb.ada/same_enum.exp index e476c271338..92620d1fbe2 100644 --- a/gdb/testsuite/gdb.ada/same_enum.exp +++ b/gdb/testsuite/gdb.ada/same_enum.exp @@ -32,4 +32,6 @@ clean_restart ${testfile} # it's because the two types are strongly related). gdb_test "print red" "= red" - +# Check that both types are in fact present. +gdb_test "ptype Color " "^type = .*" +gdb_test "ptype RGB_Color" "^type = .*" diff --git a/gdb/testsuite/gdb.ada/same_enum/a.adb b/gdb/testsuite/gdb.ada/same_enum/a.adb index ef2cceb3e60..4612aaa7283 100644 --- a/gdb/testsuite/gdb.ada/same_enum/a.adb +++ b/gdb/testsuite/gdb.ada/same_enum/a.adb @@ -17,7 +17,7 @@ with Pck; use Pck; procedure A is FC : Color := Red; - SC : Color := Green; + SC : RGB_Color := Green; begin Do_Nothing (FC'Address); Do_Nothing (SC'Address); -- 2.30.2