]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Inconsistent treatment of template parameters in DWARF reader
authorTom Tromey <tom@tromey.com>
Wed, 1 Jan 2025 21:34:10 +0000 (14:34 -0700)
committerTom Tromey <tom@tromey.com>
Wed, 5 Mar 2025 17:12:41 +0000 (10:12 -0700)
I noticed that if you hack some clean_restart calls into
paramless.exp, the test will fail.  That is, the test currently relies
on the desired CUs already being expanded when trying to set a
breakpoint -- which is clearly a bug, the CU expansion state should
not affect "break".

I tracked this down to incorrect construction of a lookup_name_info in
cooked_index_functions::expand_symtabs_matching.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32510
Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/dwarf2/read.c
gdb/testsuite/gdb.cp/paramless.exp

index 916381820920df56cec421a12d054349bcb87bd2..3aa3e9e686d0360cc0bced421635d804c071c24d 100644 (file)
@@ -15757,10 +15757,8 @@ cooked_index_functions::expand_symtabs_matching
       std::vector<lookup_name_info> segment_lookup_names;
       segment_lookup_names.reserve (name_vec.size ());
       for (auto &segment_name : name_str_vec)
-       {
-         segment_lookup_names.emplace_back (segment_name,
-           symbol_name_match_type::FULL, completing, true);
-       }
+       segment_lookup_names.emplace_back (segment_name, match_type,
+                                          completing, true);
 
       for (const cooked_index_entry *entry : table->find (name_str_vec.back (),
                                                          completing))
index fe7c0b38748fc04476a51d16c73213dde0337a40..68f66441f808f741f5e7005b9d7a0adbb044b2fa 100644 (file)
@@ -30,17 +30,12 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
     return -1
 }
 
-gdb_breakpoint "outer<int>::fn" message
-delete_breakpoints
-
-gdb_breakpoint "outer<char>::fn<short>" message
-delete_breakpoints
+foreach ordinary {"outer<int>::fn" "outer<char>::fn<short>" "toplev<char>"} {
+    gdb_breakpoint $ordinary message
+    clean_restart $testfile
+}
 
 gdb_test "break outer::fn" "Breakpoint $decimal at .*2 locations."
-delete_breakpoints
 
+clean_restart $testfile
 gdb_test "break toplev" "Breakpoint $decimal at .*2 locations."
-delete_breakpoints
-
-gdb_breakpoint "toplev<char>" message
-delete_breakpoints