On Fri, Feb 13, 2015 at 11:02 AM, Sergey Dmitrouk < [email protected]> wrote:
> There is no need to revert it completely, not adding -fno-exceptions if > -funwind-tables is not available should be enough. This is a workaround > for CMake issue, but is also a correct thing to do by itself. > Specifying one option without another literally breaks libunwind, these > options dependent on each other and should either be both applied or > none of them should be applied. How about doing that along with a check that if you are building a DSO aborting the build with an error that it is unsupported? > > -- > Sergey > > On Fri, Feb 13, 2015 at 10:48:14AM -0800, Anton Korobeynikov wrote: > > Since the stuff is heavily broken at this moment, shall we revert the > > detection stuff for a moment? > > > > On Fri, Feb 13, 2015 at 7:36 PM, Saleem Abdulrasool > > <[email protected]> wrote: > > > On Thu, Feb 12, 2015 at 1:13 PM, Sergey Dmitrouk > > > <[email protected]> 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 > > > > > > ____________ > > > > -- > > With best regards, Anton Korobeynikov > > Faculty of Mathematics and Mechanics, Saint Petersburg State University > -- Saleem Abdulrasool compnerd (at) compnerd (dot) org
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
