[libunwind] r321446 - [libunwind] Unbreak debug builds after r321440.

whitequark via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 25 12:04:47 PST 2017


Author: whitequark
Date: Mon Dec 25 12:04:47 2017
New Revision: 321446

URL: http://llvm.org/viewvc/llvm-project?rev=321446&view=rev
Log:
[libunwind] Unbreak debug builds after r321440.

Modified:
    libunwind/trunk/src/DwarfParser.hpp

Modified: libunwind/trunk/src/DwarfParser.hpp
URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/DwarfParser.hpp?rev=321446&r1=321445&r2=321446&view=diff
==============================================================================
--- libunwind/trunk/src/DwarfParser.hpp (original)
+++ libunwind/trunk/src/DwarfParser.hpp Mon Dec 25 12:04:47 2017
@@ -17,7 +17,6 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <limits.h>
 
 #include "libunwind.h"
 #include "dwarf2.h"
@@ -26,6 +25,10 @@
 
 namespace libunwind {
 
+// Avoid relying on C++ headers.
+template <class T>
+static constexpr T pint_max_value() { return ~0; }
+
 /// CFI_Parser does basic parsing of a CFI (Call Frame Information) records.
 /// See DWARF Spec for details:
 ///    http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
@@ -540,7 +543,7 @@ bool CFI_Parser<A>::parseInstructions(A
       results->cfaRegister = 0;
       results->cfaExpression = (int64_t)p;
       length = addressSpace.getULEB128(p, instructionsEnd);
-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");
+      assert(length < pint_max_value<pint_t>() && "pointer overflow");
       p += static_cast<pint_t>(length);
       _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa_expression(expression=0x%" PRIx64
                              ", length=%" PRIu64 ")\n",
@@ -556,7 +559,7 @@ bool CFI_Parser<A>::parseInstructions(A
       results->savedRegisters[reg].location = kRegisterAtExpression;
       results->savedRegisters[reg].value = (int64_t)p;
       length = addressSpace.getULEB128(p, instructionsEnd);
-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");
+      assert(length < pint_max_value<pint_t>() && "pointer overflow");
       p += static_cast<pint_t>(length);
       _LIBUNWIND_TRACE_DWARF("DW_CFA_expression(reg=%" PRIu64 ", "
                              "expression=0x%" PRIx64 ", "
@@ -642,7 +645,7 @@ bool CFI_Parser<A>::parseInstructions(A
       results->savedRegisters[reg].location = kRegisterIsExpression;
       results->savedRegisters[reg].value = (int64_t)p;
       length = addressSpace.getULEB128(p, instructionsEnd);
-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");
+      assert(length < pint_max_value<pint_t>() && "pointer overflow");
       p += static_cast<pint_t>(length);
       _LIBUNWIND_TRACE_DWARF("DW_CFA_val_expression(reg=%" PRIu64 ", "
                              "expression=0x%" PRIx64 ", length=%" PRIu64 ")\n",




More information about the cfe-commits mailing list