Hi all, I have uploaded the patch to Phabricator for review. Please have a look, and feel free to leave the comments.
http://reviews.llvm.org/D3612 : Small change to unit test so that gcc can pass the unit test as well. http://reviews.llvm.org/D3613 : Implement the ARM EHABI exception handling. Compared with the earlier patch sent to the mailing list, there are some differences: (a) __cxa_begin_cleanup() and __cxa_end_cleanup() have been added so that the code compiled with arm-linux-gnueabi-g++ can link with libcxxabi. (b) The barrier_cache data has been reordered so that it will be conform to ARM EHABI (except the __cxa_call_unexpected() which should be completely rewritten in the future.) (c) Comments are cleaned up, and fixed various formatting issue. On Mon, May 5, 2014 at 1:00 AM, Nico Weber wrote: > I thought we were down to 4 or 6 test failures by now… > I'm not sure if this is related to the environment or the compiler. I am testing the code on Debian Wheezy armhf on QEMU, and compiling the code with clang. Most of the failing test are SIGSEGV and SIGILL, although I haven't got time to figure out. On Mon, May 5, 2014 at 10:02 AM, Jonathan Roelofs wrote: > This plan sounds OK to me, but I am a little hesitant. I want to be > careful about how we use the reserved bits of the unwind caches, because > some of it is implementation details of libgcc_s, and I'd rather not have a > bunch of "this is unspecified in the spec, but we're doing it this way > because libgcc's unwinder does it this way" in there permanently. Can you > add notes where such assumptions are made in the libc++abi part so that we > can fix them later? > AFAICT, I am using two undocumented APIs: 1. Using __gnu_unwind_frame() to unwind one frame. 2. In order to use _Unwind_GetLanguageSpecificData() and _Unwind_GetRegionStart() we have to copy the UCB to r12. Both of them can be fixed if we have our own unwinding library, and I have written several comments to document these hacks. Yet another missing part are __aeabi_unwind_cpp_pr0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2. Currently, when the user program references these personality routines, the undefined symbol will be binded to the corresponding routine in libgcc. This should be implemented in libcxxabi in the future; otherwise, link error will be raised when we replace libgcc with compiler-rt. Sincerely, Logan
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
