<div dir="ltr">Here's the patch I applied locally.<div><br></div><div>hth...</div><div>don</div><div><br><div><br></div><div><div>diff --git a/src/DwarfParser.hpp b/src/DwarfParser.hpp</div><div>index 518101e..ac4f1c4 100644</div><div>--- a/src/DwarfParser.hpp</div><div>+++ b/src/DwarfParser.hpp</div><div>@@ -540,7 +540,7 @@ bool CFI_Parser<A>::parseInstructions(A &addressSpace, pint_t instructions,</div><div>       results->cfaRegister = 0;</div><div>       results->cfaExpression = (int64_t)p;</div><div>       length = addressSpace.getULEB128(p, instructionsEnd);</div><div>-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");</div><div>+      assert(length < static_cast<pint_t>(~0) && "pointer overflow");</div><div>       p += static_cast<pint_t>(length);</div><div>       _LIBUNWIND_TRACE_DWARF("DW_CFA_def_cfa_expression(expression=0x%" PRIx64</div><div>                              ", length=%" PRIu64 ")\n",</div><div>@@ -556,7 +556,7 @@ bool CFI_Parser<A>::parseInstructions(A &addressSpace, pint_t instructions,</div><div>       results->savedRegisters[reg].location = kRegisterAtExpression;</div><div>       results->savedRegisters[reg].value = (int64_t)p;</div><div>       length = addressSpace.getULEB128(p, instructionsEnd);</div><div>-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");</div><div>+      assert(length < static_cast<pint_t>(~0) && "pointer overflow");</div><div>       p += static_cast<pint_t>(length);</div><div>       _LIBUNWIND_TRACE_DWARF("DW_CFA_expression(reg=%" PRIu64 ", "</div><div>                              "expression=0x%" PRIx64 ", "</div><div>@@ -642,7 +642,7 @@ bool CFI_Parser<A>::parseInstructions(A &addressSpace, pint_t instructions,</div><div>       results->savedRegisters[reg].location = kRegisterIsExpression;</div><div>       results->savedRegisters[reg].value = (int64_t)p;</div><div>       length = addressSpace.getULEB128(p, instructionsEnd);</div><div>-      assert(length < std::numeric_limits<pint_t>::max() && "pointer overflow");</div><div>+      assert(length < static_cast<pint_t>(~0) && "pointer overflow");</div><div>       p += static_cast<pint_t>(length);</div><div>       _LIBUNWIND_TRACE_DWARF("DW_CFA_val_expression(reg=%" PRIu64 ", "</div><div>                              "expression=0x%" PRIx64 ", length=%" PRIu64 ")\n",</div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 25, 2017 at 11:26 AM, Don Hinton <span dir="ltr"><<a href="mailto:hintonda@gmail.com" target="_blank">hintonda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, Dec 25, 2017 at 11:09 AM, whitequark <span dir="ltr"><<a href="mailto:whitequark@whitequark.org" target="_blank">whitequark@whitequark.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On 2017-12-25 19:04, Don Hinton wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi:<br>
<br>
This change breaks in a local debug build, e.g.,:<br>
<br>
/Users/dhinton/projects/llvm_p<wbr>roject/libunwind/src/DwarfPars<wbr>er.hpp:559:28:<br>
error: no member named 'numeric_limits' in namespace 'std'<br>
      assert(length < std::numeric_limits<pint_t>::m<wbr>ax() && "pointer<br>
overflow");<br>
                      ~~~~~^<br>
</blockquote>
<br></span>
Sorry, I missed this. Any idea on reformulating the assert in a way<br>
that does not require libcxx headers? Not having them significantly<br>
simplifies bare-metal builds...<br></blockquote><div><br></div></span><div>Well, assuming pint_t is some unsigned integer type, the max can be found like this:</div><div><br></div><div>  pint_t max_pint_t = ~0;</div><div><br></div><div>So, that could be used in a pinch.</div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
thanks...<br>
don<br>
<br>
On Mon, Dec 25, 2017 at 5:06 AM, whitequark via cfe-commits<br>
<<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
Author: whitequark<br>
Date: Mon Dec 25 05:06:09 2017<br>
New Revision: 321440<br>
<br></span>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=321440&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=321440&view=rev</a> [1]<span><br>
Log:<br>
[libunwind] Avoid using C++ headers.<br>
<br>
This is useful for building libunwind on libcxx-free systems.<br>
<br>
Modified:<br>
libunwind/trunk/src/DwarfParse<wbr>r.hpp<br>
<br>
Modified: libunwind/trunk/src/DwarfParse<wbr>r.hpp<br>
URL:<br>
<br>
</span></blockquote>
<a href="http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/DwarfParser.hpp?rev=321440&r1=321439&r2=321440&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/libunwind/trunk/src/Dwar<wbr>fParser.hpp?rev=321440&r1=3214<wbr>39&r2=321440&view=diff</a><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
[2]<br>
<br>
</blockquote>
==============================<wbr>==============================<wbr>==================<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
--- libunwind/trunk/src/DwarfParse<wbr>r.hpp (original)<br>
+++ libunwind/trunk/src/DwarfParse<wbr>r.hpp Mon Dec 25 05:06:09 2017<br>
@@ -17,7 +17,7 @@<br>
#include <stdint.h><br>
#include <stdio.h><br>
#include <stdlib.h><br>
-#include <limits><br>
+#include <limits.h><br>
<br>
#include "libunwind.h"<br>
#include "dwarf2.h"<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
</span><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a> [3]<br>
</blockquote>
<br>
<br>
<br>
Links:<br>
------<br>
[1] <a href="http://llvm.org/viewvc/llvm-project?rev=321440&amp;view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=321440&amp;view=rev</a><br>
[2]<br>
<a href="http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/DwarfParser.hpp?rev=321440&amp;r1=321439&amp;r2=321440&amp;view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/libunwind/trunk/src/Dwar<wbr>fParser.hpp?rev=321440&amp;r1=<wbr>321439&amp;r2=321440&amp;view=<wbr>diff</a><br>
[3] <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><span class="m_725156090541260803HOEnZb"><font color="#888888"><br>
</font></span></blockquote><span class="m_725156090541260803HOEnZb"><font color="#888888">
<br>
-- <br>
whitequark<br>
</font></span></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div>