diff options
author | Pavel Labath <pavel@labath.sk> | 2019-12-05 16:21:23 +0100 |
---|---|---|
committer | Pavel Labath <pavel@labath.sk> | 2019-12-06 10:33:13 +0100 |
commit | f69f92344adaada1f8f3cfcd711037227432b062 (patch) | |
tree | 2e0381806a396e215749074aa33fb3a215b0f811 /lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py | |
parent | b6e2cf3270dab43dbc6ffad4695c5c14789bc5e5 (diff) | |
download | bcm5719-llvm-f69f92344adaada1f8f3cfcd711037227432b062.tar.gz bcm5719-llvm-f69f92344adaada1f8f3cfcd711037227432b062.zip |
[lldb/DWARF] Fix DW_AT_addr_base & DW_AT_low_pc interaction
In DWARF5 DW_AT_low_pc (and DW_AT_entry_pc, and possibly others) can use
DW_FORM_addrx to refer to the address indirectly. This means we need to
have processed the DW_AT_addr_base attribute before we can do anything
with these.
Since we were processing the unit attributes serially, this created a
problem in cases where the DW_AT_addr_base comes after DW_AT_low_pc --
we would end up computing the wrong unit base address, which also
corrupted any values which later depended on that (for instance range
lists). Clang currently always emits DW_AT_addr_base last.
The fix is simple -- process DW_AT_addr_base first, regardless of its
position in the attribute list.
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py')
0 files changed, 0 insertions, 0 deletions