diff --git a/bolt/lib/Core/Exceptions.cpp b/bolt/lib/Core/Exceptions.cpp --- a/bolt/lib/Core/Exceptions.cpp +++ b/bolt/lib/Core/Exceptions.cpp @@ -114,11 +114,11 @@ uint8_t LPStartEncoding = Data.getU8(&Offset); uint64_t LPStart = 0; - // Convert to offset if LPStartEncoding is typed absptr DW_EH_PE_absptr + // Convert to offset if LPStartEncoding is absptr (non-PIC case) if (std::optional MaybeLPStart = Data.getEncodedPointer( &Offset, LPStartEncoding, Offset + LSDASectionAddress)) - LPStart = (LPStartEncoding && 0xFF == 0) ? *MaybeLPStart - : *MaybeLPStart - Address; + LPStart = LPStartEncoding == DW_EH_PE_absptr ? *MaybeLPStart - Address + : *MaybeLPStart; const uint8_t TTypeEncoding = Data.getU8(&Offset); LSDATypeEncoding = TTypeEncoding;