[libcxxabi] r203626 - 0 is a valid LSDA encoding and can be seen in statically linked

Joerg Sonnenberger joerg at bec.de
Tue Mar 11 16:43:43 PDT 2014


Author: joerg
Date: Tue Mar 11 18:43:43 2014
New Revision: 203626

URL: http://llvm.org/viewvc/llvm-project?rev=203626&view=rev
Log:
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.

Modified:
    libcxxabi/trunk/src/Unwind/DwarfParser.hpp

Modified: libcxxabi/trunk/src/Unwind/DwarfParser.hpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/Unwind/DwarfParser.hpp?rev=203626&r1=203625&r2=203626&view=diff
==============================================================================
--- libcxxabi/trunk/src/Unwind/DwarfParser.hpp (original)
+++ libcxxabi/trunk/src/Unwind/DwarfParser.hpp Tue Mar 11 18:43:43 2014
@@ -149,7 +149,7 @@ const char *CFI_Parser<A>::decodeFDE(A &
   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;





More information about the cfe-commits mailing list