forked from OSchip/llvm-project
[lld-macho] Fix compact unwind output for 32 bit builds
This test was failing on our 32 bit build bot: https://lab.llvm.org/buildbot/#/builders/178/builds/2463 This happened because in UnwindInfoSectionImpl::finalize a decision is made whether to write out regular or compressed unwind info. One check in this does: ``` if (cuPtr->functionAddress >= functionAddressMax) { break; ``` Where cuPtr->functionAddress was uint64_t and functionAddressMax was uintptr_t, which is 4 bytes on a 32 bit system. Using uint64_t for functionAddressMax fixes this problem. Presumably because at only 4 bytes, the max is much lower than we expect. We're targetting 64 bit though so the size of the max should match the size of the addresses. Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D129363
This commit is contained in:
parent
46fc4de065
commit
79942d32a6
|
@ -506,7 +506,7 @@ void UnwindInfoSectionImpl::finalize() {
|
|||
secondLevelPages.emplace_back();
|
||||
SecondLevelPage &page = secondLevelPages.back();
|
||||
page.entryIndex = i;
|
||||
uintptr_t functionAddressMax =
|
||||
uint64_t functionAddressMax =
|
||||
cuEntries[idx].functionAddress + COMPRESSED_ENTRY_FUNC_OFFSET_MASK;
|
||||
size_t n = commonEncodings.size();
|
||||
size_t wordsRemaining =
|
||||
|
|
Loading…
Reference in New Issue