diff options
author | Tom de Vries <tdevries@suse.de> | 2021-08-06 21:52:41 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-08-06 21:52:41 +0200 |
commit | cc6b3d766d6694d4c4ee14b75f6529365a443a98 (patch) | |
tree | b8b6a3f69f731c3e5ecb9ed45fadf86d6caf91de /gdb/dwarf2 | |
parent | fd986183343387b019080d81838ad9371593b219 (diff) | |
download | gdb-cc6b3d766d6694d4c4ee14b75f6529365a443a98.zip gdb-cc6b3d766d6694d4c4ee14b75f6529365a443a98.tar.gz gdb-cc6b3d766d6694d4c4ee14b75f6529365a443a98.tar.bz2 |
[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.
Diffstat (limited to 'gdb/dwarf2')
-rw-r--r-- | gdb/dwarf2/read.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index bac02b5..8dc2be6 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<const gdb_byte> (symbol_table, + symbol_table)); + } + return 1; } |