[libcxxabi] r228408 - unwind: use -fno-rtti -fno-exceptions -funwind-tables
Saleem Abdulrasool
compnerd at compnerd.org
Fri Feb 13 08:36:30 PST 2015
On Thu, Feb 12, 2015 at 1:13 PM, Sergey Dmitrouk <sdmitrouk at accesssoftek.com
> wrote:
> How about the attached patch? Seems to work for me (it's trivial, but
> syntax is weird, so I wasn't sure).
It would prevent building unwind as a DSO without libc++abi linked in, so,
this isn't the way to handle this. I think you need to tweak the detection
of the -funwind-tables option.
>
> --
> Sergey
>
> On Thu, Feb 12, 2015 at 07:36:14AM -0800, Sergey Dmitrouk wrote:
> > On Thu, Feb 12, 2015 at 07:13:09AM -0800, Saleem Abdulrasool wrote:
> > > I've been successful with clang as well.
> > > Reproduction steps would help in identifying what is happening.
> >
> > Looks like I found the culprit, it's CMake. I'm cross compiling
> > libcxxabi for ARM on x86_64 host, compiler targets ARM only (so ARM is
> > also the default target). cmake/config-ix.cmake contains (also note
> "_c_"
> > instead of "_cxx_", but it doesn't affect results):
> >
> > check_c_compiler_flag(-funwind-tables LIBCXXABI_HAS_FUNWIND_TABLES)
> >
> > This test fails on linking stage:
> >
> > CMakeFiles/cmTryCompileExec3829915952.dir/src.cxx.o:(.ARM.exidx+0x0):
> > undefined reference to `__aeabi_unwind_cpp_pr0'
> >
> > because successful linking requires symbol defined in libunwind (and
> that's
> > what is being built). Now here:
> >
> > append_if(LIBUNWIND_COMPILE_FLAGS LIBCXXABI_HAS_NO_EXCEPTIONS_FLAG
> -fno-exceptions)
> > append_if(LIBUNWIND_COMPILE_FLAGS LIBCXXABI_HAS_NO_RTTI_FLAG
> -fno-rtti)
> > append_if(LIBUNWIND_COMPILE_FLAGS LIBCXXABI_HAS_FUNWIND_TABLES
> -funwind-tables)
> >
> > `-fno-exceptions` is added, but not `-funwind-tables`. As a result
> > libunwind sees "can't unwind" marker in exidx records and gives up.
> >
> > I found this bug report, which seems to be related:
> > http://www.cmake.org/Bug/view.php?id=15264
> >
> > Not adding `-fno-exceptions` flag if `-funwind-tables` isn't available
> seems
> > to be reasonable by itself, but will also work around this issue with
> CMake.
> >
> > --
> > Sergey
>
--
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150213/976d847e/attachment.html>
More information about the cfe-commits
mailing list