[gdb/symtab] Recognize .gdb_index symbol table with empty entries as empty
When reading a .gdb_index that contains a non-empty symbol table with only empty entries, gdb doesn't recognize it as empty. Fix this by recognizing that the constant pool is empty, and then setting the symbol table to empty. Tested on x86_64-linux. gdb/ChangeLog: 2021-08-01 Tom de Vries <tdevries@suse.de> PR symtab/28159 * dwarf2/read.c (read_gdb_index_from_buffer): Handle symbol table filled with empty entries. gdb/testsuite/ChangeLog: 2021-08-01 Tom de Vries <tdevries@suse.de> PR symtab/28159 * gdb.dwarf2/dw2-zero-range.exp: Remove kfail.
This commit is contained in:
parent
fd98618334
commit
cc6b3d766d
2 changed files with 11 additions and 20 deletions
|
@ -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<const gdb_byte> (symbol_table,
|
||||
symbol_table));
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 } {
|
||||
|
|
Loading…
Add table
Reference in a new issue