]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb/testsuite] Add regression test for PR32158
authorTom de Vries <tdevries@suse.de>
Sat, 14 Sep 2024 12:09:35 +0000 (14:09 +0200)
committerTom de Vries <tdevries@suse.de>
Sat, 14 Sep 2024 12:09:35 +0000 (14:09 +0200)
commit93a20d956e633cc1a87e68d88d2fc51adc787857
tree4c8e4a31768b5865dfbecaf603bc96d215d209b9
parent2693187cc58db107db4255756aa5dbbe090f3b6e
[gdb/testsuite] Add regression test for PR32158

Consider test-case:
...
namespace ns {
  enum class ec {
    val2 = 2
  };
}

int main () {
  return (int)ns::ec::val2;
}
...
compiled with debug info:
...
$ g++ test.c -g
...

When looking at the cooked index entry for val2 using "maint print objfiles",
we get:
...
    [7] ((cooked_index_entry *) 0x7f8ecc002ef0)
    name:       val2
    canonical:  val2
    qualified:  ns::val2
    DWARF tag:  DW_TAG_enumerator
    flags:      0x0 []
    DIE offset: 0xe9
    parent:     ((cooked_index_entry *) 0x7f8ecc002e90) [ns]
...
which is wrong, there is no source level entity ns::val2.

This is PR symtab/32158.

This is a regression since commit 4e417d7bb1c ("Change handling of
DW_TAG_enumeration_type in DWARF scanner").

Reverting the commit on current trunk fixes the problem, and gets us instead:
...
    [7] ((cooked_index_entry *) 0x7fba70002ef0)
    name:       val2
    canonical:  val2
    qualified:  ns::ec::val2
    DWARF tag:  DW_TAG_enumerator
    flags:      0x0 []
    DIE offset: 0xe9
    parent:     ((cooked_index_entry *) 0x7fba70002ec0) [ec]
...

Add a regression test for this PR in test-case gdb.dwarf2/enum-type-c++.exp.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32158
gdb/testsuite/gdb.dwarf2/enum-type-c++.cc
gdb/testsuite/gdb.dwarf2/enum-type-c++.exp