<div dir="ltr"><div><div><div>Hi Jonathan,<br><br></div>Thanks for your reply.<br><br>
>  *  One thing that immediately jumps out at me as missing from this<br>
>     implementation are the __aeabi_unwind_pr{0,1,2} functions, which<br>
>     are necessary to unwind more kinds of frames that the backend spits out.<br><br></div><div>Yes.  I have only implemented the personality function in this patch.  Thus, we still have to link with libgcc at the moment.  AFAICT, following important functions are missing:<br>
<br></div><div>- __aeabi_unwind_pr{0,1,2}()<br></div><div>- _Unwind_RaiseException(), _Unwind_GetLanguageSpecificData(), _Unwind_GetRegionStart()<br></div><div>- _Unwind_VRS_{Get,Set}()<br>- __gnu_unwind_frame()</div><div>
<br>>  *  Also, I believe there might be a catch clause indexing bug as fixed in [2]<br>>     (though maybe that change should be under #if LIBCXXABI_ARM_EHABI ?).<br><br></div><div>It seems that I am using different way to handle the filter type index, thus it won't be a problem.<br>
</div><div><br>
>  *  A bunch of the _Unwind_* functions are done up as static inline... would be<br>
>     nicer to use the unwind cursor abstraction to help keep down #ifdef<br>
>     proliferation.<br><br></div><div>I don't quite understand what do you mean by "unwind cursor abstraction".  May you give further explanation?<br><br></div><div>I wrote those static inline function simply because I wish to reuse the code with _Unwind_GetGR()/_Unwind_SetGR().  It seems that the header from clang did the same thing.<br>
</div><div><br>> 
I'm being pedantic here: you say they compile & run, but what's the pass rate?<br><br></div>I have tried every test cases in libcxxabi/test, and all of them are passing except one case in test_demangle.cpp.  That case assumes that long double has 80-bit, which is not true for ARM.  Thus, I have changed it in the patch.<br>
<br></div><div>I haven't tried the test case from libc++ yet, though I am planning to do so.<br></div><div><br></div>Cheers,<br>Logan<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Apr 13, 2014 at 10:52 PM, Jonathan Roelofs <span dir="ltr"><<a href="mailto:jonathan@codesourcery.com" target="_blank">jonathan@codesourcery.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Logan,<br>
<br>
I wish I had been faster in helping Nico to upstream their implementation of<br>
this [1] as I had promised a few weeks ago (see "[cfe-dev] [libcxxabi]<br>
Contributing ARM EHABI support for libcxxabi"). :/<br>
<br>
A couple of comments after a quick skim:<br>
  *  One thing that immediately jumps out at me as missing from this<br>
     implementation are the __aeabi_unwind_pr{0,1,2} functions, which<br>
     are necessary to unwind more kinds of frames that the backend spits out.<br>
  *  Also, I believe there might be a catch clause indexing bug as fixed in [2]<br>
     (though maybe that change should be under #if LIBCXXABI_ARM_EHABI ?).<br>
  *  A bunch of the _Unwind_* functions are done up as static inline... would be<br>
     nicer to use the unwind cursor abstraction to help keep down #ifdef<br>
     proliferation.<br>
<br>
Maybe we ought to merge these two implementations (yours and [1]) or apply things learned from one to the other, and then review/commit it?<br>
<br>
Cheers,<br>
Jon<br>
<br>
[1]: <a href="https://github.com/awong-dev/ndk/tree/use-libc%2B%2Babi/sources/cxx-stl/llvm-libc%2B%2Babi/libcxxabi" target="_blank">https://github.com/awong-dev/<u></u>ndk/tree/use-libc%2B%2Babi/<u></u>sources/cxx-stl/llvm-libc%2B%<u></u>2Babi/libcxxabi</a><br>

[2]: <a href="https://github.com/awong-dev/ndk/commit/9d617501b7862adbd9dcfd62ca0b7347af38f01e#diff-f48fdacc036821bdabe7e46660900794R613" target="_blank">https://github.com/awong-dev/<u></u>ndk/commit/<u></u>9d617501b7862adbd9dcfd62ca0b73<u></u>47af38f01e#diff-<u></u>f48fdacc036821bdabe7e466609007<u></u>94R613</a><div class="">
<br>
<br>
On 4/13/14, 3:16 AM, Logan Chien wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I have worked on ARM EHABI zero-cost exception handling for libc++abi.<br>
<br>
With the attached patch, I can compile and run all libc++abi unittests on ARM Linux.<br>
</blockquote></div>
I'm being pedantic here: you say they compile & run, but what's the pass rate?<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">
<br>
Is it OK to commit?  Thanks.<br>
<br>
<br>
Sincerely,<br>
Logan<br>
<br>
<br></div>
______________________________<u></u>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-commits</a><br>
<br><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
-- <br>
Jon Roelofs<br>
<a href="mailto:jonathan@codesourcery.com" target="_blank">jonathan@codesourcery.com</a><br>
CodeSourcery / Mentor Embedded<br>
</font></span></blockquote></div><br></div>