diff options
author | Tom Tromey <tom@tromey.com> | 2021-08-04 12:44:10 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-08-24 07:51:46 -0600 |
commit | d58e54bd277b90d847be09ae4b18bfdbc0dc2066 (patch) | |
tree | 795411324aaa18a5f9f7df1d6fc33bd98aa3461d /gold/script-sections.h | |
parent | 5c133c109550321c84d25bf084828bb02219d019 (diff) | |
download | gdb-d58e54bd277b90d847be09ae4b18bfdbc0dc2066.zip gdb-d58e54bd277b90d847be09ae4b18bfdbc0dc2066.tar.gz gdb-d58e54bd277b90d847be09ae4b18bfdbc0dc2066.tar.bz2 |
Fix two regressions caused by CU / TU merging
PR symtab/28160 and PR symtab/27893 concern GDB crashes in the test
suite when using the "fission" target board. They are both caused by
the patches that merge the list of CUs with the list of TUs (and to a
lesser degree by the patches to share DWARF data across objfiles), and
the underlying issue is the same: it turns out that reading a DWO can
cause new type units to be created. This means that the list of
dwarf2_per_cu_data objects depends on precisely which CUs have been
expanded. However, because the type units can be created while
expanding a CU means that the vector of CUs can expand while it is
being iterated over -- a classic mistake. Also, because a TU can be
added later, it means the resize_symtabs approach is incorrect.
This patch fixes resize_symtabs by removing it, and having set_symtab
resize the vector on demand. It fixes the iteration problem by
introducing a safe (index-based) iterator and changing the relevant
spots to use it.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28160
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27893
Diffstat (limited to 'gold/script-sections.h')
0 files changed, 0 insertions, 0 deletions