forked from OSchip/llvm-project
![]() Summary: With D81784, lld has started debug info resolving relocations to garbage-collected symbols as -1 (instead of relocation addend). For an unaware consumer this generated sequences which seemingly wrap the address space -- their first entry was 0xfffff, but all other entries were low numbers. Lldb stores line sequences concatenated into one large vector, sorted by the first entry, and searched with std::lower_bound. This resulted in the low-value entries being placed at the end of the vector, which utterly confused the lower_bound algorithm, and caused it to not find a match. (Previously, these sequences would be at the start of the vector, and normally would contain addresses that are far smaller than any real address we want to look up, so std::lower_bound was fine.) This patch makes lldb ignore these kinds of sequences completely. It does that by changing the construction algorithm from iterating over the rows (as parsed by llvm), to iterating over the sequences. This is important because the llvm parsed performs validity checks when constructing the sequence array, whereas the row array contains raw data. Reviewers: JDevlieghere, MaskRay Differential Revision: https://reviews.llvm.org/D83957 |
||
---|---|---|
.. | ||
bindings | ||
cmake | ||
docs | ||
examples | ||
include/lldb | ||
packages/Python | ||
resources | ||
scripts | ||
source | ||
test | ||
third_party/Python/module | ||
tools | ||
unittests | ||
utils | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
CMakeLists.txt | ||
CODE_OWNERS.txt | ||
LICENSE.TXT | ||
use_lldb_suite_root.py |