diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index bac02b5a1bd..8dc2be6f176 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -2777,6 +2777,15 @@ to use the section anyway."), ++i; map->constant_pool = buffer.slice (metadata[i]); + if (map->constant_pool.empty () && !map->symbol_table.empty ()) + { + /* An empty constant pool implies that all symbol table entries are + empty. Make map->symbol_table.empty () == true. */ + map->symbol_table + = offset_view (gdb::array_view (symbol_table, + symbol_table)); + } + return 1; } diff --git a/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp b/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp index 4f2ac0fe77c..e43f59ea1ad 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp @@ -139,16 +139,7 @@ foreach_with_prefix ranges_sect {ranges rnglists} { } } - if { $have_complaint } { - pass $test - } else { - set index [have_index $lib1] - if { $index == "gdb_index" } { - kfail symtab/28159 $test - } else { - fail $test - } - } + gdb_assert { $have_complaint } $test } if { ! $readnow_p } { @@ -164,16 +155,7 @@ foreach_with_prefix ranges_sect {ranges rnglists} { gdb_load $lib1 set test "Zero address complaint - unrelocated - psymtab" set have_complaint [regexp $re.* $gdb_file_cmd_msg] - if { $have_complaint } { - pass $test - } else { - set index [have_index $lib1] - if { $index == "gdb_index" } { - kfail symtab/28159 $test - } else { - fail $test - } - } + gdb_assert { $have_complaint } $test } if { ! $readnow_p } {