Hi all,<div><br></div><div>If this patch seems good, could any one helps commit?</div><div>If not, please let me know the problem. :)</div><div><br></div><div>Thanks.<br><div><br><div class="gmail_quote">2012/11/2 Wen-Han Gu (¨¦¨Z¿«) <span dir="ltr"><<a href="mailto:wenhan.gu@gmail.com" target="_blank">wenhan.gu@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Howard,<div><br></div><div>It did happen on ARM and x86_32, and I guess all targets have this bug.</div><div>This bug behaves depending on the upcoming entry, might be nothing, infinite loop, other errors...</div>
<div>
<br></div><div>Thanks.</div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">2012/11/2 Howard Hinnant <span dir="ltr"><<a href="mailto:hhinnant@apple.com" target="_blank">hhinnant@apple.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>On Nov 1, 2012, at 5:32 AM, Wen-Han Gu (¨¦¨Z¿«) <<a href="mailto:wenhan.gu@gmail.com" target="_blank">wenhan.gu@gmail.com</a>> wrote:<br>
<br>
> Dear cfe-commits and libcxxabi developers,<br>
><br>
> I hit a bug in libc++abi when testing on a gcc testsuite sample.<br>
> This can be fixed simply by this small patch.<br>
> Please help review it. Thanks in advance!<br>
><br>
><br>
> Index: src/cxa_personality.cpp<br>
> ===================================================================<br>
> --- src/cxa_personality.cpp (revision 167216)<br>
> +++ src/cxa_personality.cpp (working copy)<br>
> @@ -552,7 +552,7 @@<br>
> const uint8_t* callSiteTableEnd = callSiteTableStart + callSiteTableLength;<br>
> const uint8_t* actionTableStart = callSiteTableEnd;<br>
> const uint8_t* callSitePtr = callSiteTableStart;<br>
> - while (true)<br>
> + while (callSitePtr < callSiteTableEnd)<br>
> {<br>
> // There is one entry per call site.<br>
> #if !__arm__<br>
> @@ -782,7 +782,12 @@<br>
> call_terminate(native_exception, unwind_exception);<br>
> }<br>
> #endif // !__arm__<br>
> - } // there is no break out of this loop, only return<br>
> + } // there might be some tricky cases which break out of this loop<br>
> +<br>
> + // If we are here, it means no eh table entry specify how to handle<br>
> + // this exception. For example, gcc testsuites eh23 at<br>
> + // <gcc>/gcc/testsuite/g++.old-deja/g++.mike/eh23.C<br>
> + call_terminate(native_exception, unwind_exception);<br>
> }<br>
><br>
> // public API<br>
<br>
</div></div>Thanks for the patch. Was this on __arm__ and was the symptom an infinite loop?<br>
<span><font color="#888888"><br>
Howard<br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div></div></div><div class="im">-- <br>Best regards,<div>Wen-Han Gu (Nowar)</div><br>
</div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Best regards,<div>Wen-Han Gu (Nowar)</div><br>
</div></div>