diff options
| author | Nico Weber <thakis@chromium.org> | 2021-10-25 10:25:14 -0400 |
|---|---|---|
| committer | Nico Weber <thakis@chromium.org> | 2021-10-27 14:02:07 -0400 |
| commit | 6503a68565f6ba4e13935ee614a732b6fcb2b30b (patch) | |
| tree | 5529d1d7247010f0cc41c4d373dc1baf67e9e844 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | |
| parent | 0a06068ac76617fabe689a3b8a167fca81600a21 (diff) | |
[lld/mac] Don't assert when ICFing arm64 code
WordLiteralSection dedupes literals by content.
WordLiteralInputSection::getOffset() used to read a literal at the passed-in
offset and look up this value in the deduping map to find the offset of the
deduped value.
But it's possible that (e.g.) a 16-byte literal's value is accessed 4 bytes in.
To get the offset at that address, we have to get the deduped value at offset 0
and then apply the offset 4 to the result.
(See also WordLiteralSection::finalizeContents() which fills in those maps.)
Only a problem on arm64 because in x86_64 the offset is part of the instruction
instead of a separate ARM64_RELOC_ADDEND relocation. (See bug for more details.)
Fixes PR51999.
Differential Revision: https://reviews.llvm.org/D112584
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions
