diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-03-11 23:43:43 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-03-11 23:43:43 +0000 |
commit | 4fb4f2286edeef6320baa9b7ad475495f95c8c56 (patch) | |
tree | 5f6cea5999d80396522f27b16de6b4777e3649f4 | |
parent | 2950e56d0fb30123dc93a55dc92f5a903c2bec13 (diff) | |
download | libcxxabi_35a-4fb4f2286edeef6320baa9b7ad475495f95c8c56.tar.gz |
0 is a valid LSDA encoding and can be seen in statically linked
programs. Initialize lsdaEncoding to DW_EH_PE_omit and check for that
value to decide whether a value should be decoded.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@203626 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | src/Unwind/DwarfParser.hpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/Unwind/DwarfParser.hpp b/src/Unwind/DwarfParser.hpp index 152baab..640e4f8 100644 --- a/src/Unwind/DwarfParser.hpp +++ b/src/Unwind/DwarfParser.hpp @@ -149,7 +149,7 @@ const char *CFI_Parser<A>::decodeFDE(A &addressSpace, pint_t fdeStart, if (cieInfo->fdesHaveAugmentationData) { pint_t augLen = (pint_t)addressSpace.getULEB128(p, nextCFI); pint_t endOfAug = p + augLen; - if (cieInfo->lsdaEncoding != 0) { + if (cieInfo->lsdaEncoding != DW_EH_PE_omit) { // peek at value (without indirection). Zero means no lsda pint_t lsdaStart = p; if (addressSpace.getEncodedP(p, nextCFI, cieInfo->lsdaEncoding & 0x0F) != @@ -255,7 +255,7 @@ template <typename A> const char *CFI_Parser<A>::parseCIE(A &addressSpace, pint_t cie, CIE_Info *cieInfo) { cieInfo->pointerEncoding = 0; - cieInfo->lsdaEncoding = 0; + cieInfo->lsdaEncoding = DW_EH_PE_omit; cieInfo->personalityEncoding = 0; cieInfo->personalityOffsetInCIE = 0; cieInfo->personality = 0; |