diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 22 |
2 files changed, 19 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 90577b7..593ff01 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-05-28 Tom de Vries <tdevries@suse.de> + + * dwarf2/read.c (dw2_symtab_iter_next, dw2_expand_marked_cus): Limit + PR gold/15646 workaround to symbol kind "type". + 2020-05-27 Tom Tromey <tromey@adacore.com> * dwarf2/read.c (load_partial_dies): Use add_partial_symbol. diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index a62224c..25f05fb 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -3522,10 +3522,14 @@ dw2_symtab_iter_next (struct dw2_symtab_iterator *iter) } /* Work around gold/15646. */ - if (!is_static && iter->global_seen) - continue; - if (!is_static) - iter->global_seen = 1; + if (!is_static + && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE) + { + if (iter->global_seen) + continue; + + iter->global_seen = 1; + } } /* Only check the symbol's kind if it has one. */ @@ -4627,12 +4631,14 @@ dw2_expand_marked_cus && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE); /* Work around gold/15646. */ - if (attrs_valid) + if (attrs_valid + && !is_static + && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE) { - if (!is_static && global_seen) + if (global_seen) continue; - if (!is_static) - global_seen = true; + + global_seen = true; } /* Only check the symbol's kind if it has one. */ |