[lld] 79942d3 - [lld-macho] Fix compact unwind output for 32 bit builds

David Spickett via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 11 01:21:10 PDT 2022


Author: David Spickett
Date: 2022-07-11T08:21:03Z
New Revision: 79942d32a6318555feadaefea31e156a37b6e143

URL: https://github.com/llvm/llvm-project/commit/79942d32a6318555feadaefea31e156a37b6e143
DIFF: https://github.com/llvm/llvm-project/commit/79942d32a6318555feadaefea31e156a37b6e143.diff

LOG: [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

Added: 
    

Modified: 
    lld/MachO/UnwindInfoSection.cpp

Removed: 
    


################################################################################
diff  --git a/lld/MachO/UnwindInfoSection.cpp b/lld/MachO/UnwindInfoSection.cpp
index 2c4a469578de2..8c3425a174595 100644
--- a/lld/MachO/UnwindInfoSection.cpp
+++ b/lld/MachO/UnwindInfoSection.cpp
@@ -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 =


        


More information about the llvm-commits mailing list