compnerd added inline comments. ================ Comment at: cmake/config-ix.cmake:45 @@ -44,3 +44,3 @@ check_library_exists(pthread pthread_once "" LIBCXXABI_HAS_PTHREAD_LIB) -check_library_exists(gcc_eh _Unwind_GetRegionStart "" LIBCXXABI_HAS_GCC_EH_LIB) +check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXXABI_HAS_GCC_S_LIB) check_library_exists(c __cxa_thread_atexit_impl "" ---------------- EricWF wrote: > compnerd wrote: > > Might be nice to extend this further to allow building against > > clang_rt.builtins. We could of course do that as a follow up if you prefer. > I don't think the clang_rt.builtin libraries are *ever* along the library > search path. Maybe we could detect if clang accepts `--rtlib <name>`? (I > don't know the flag off hand). Pretty close with the flag: it is `--rtlib=` if you like the 2 dash version. Hmm, though the problem with the symbol we are using for gcc_s here is the crus of the issue I think. The problem is that if clang_rt.builtins is used, `__gcc_personality_v0` will be defined since the symbol is the C personality routine. Perhaps a compromise may be to change the symbol we use to detect gcc_s. However, given that this was the original behavior, Im not as concerned, since it has worked for most people so far (and its easy to modify).
================ Comment at: src/CMakeLists.txt:37 @@ +36,3 @@ + +remove_flags(-Wl,-z,defs) + ---------------- EricWF wrote: > compnerd wrote: > > Do we need to worry about an alternative spelling of `-z defs`? > Not sure. I only considered the spellings used within the LLVM source tree > `llvm/cmake/modules/HandleLLVMOptions.cmake`. This is a change in the original behavior. I think it may be safer to add the `-z defs` and `-zdefs` spellings as well if you want the no undefined symbols behavior. At least on solaris, I believe that `-no-undefined` is also going to cause this to be emitted. ================ Comment at: src/CMakeLists.txt:62 @@ -44,1 +61,3 @@ +# first and last library on the link line. This behavior mimics clang's +# behavior. set(libraries ${LIBCXXABI_CXX_ABI_LIBRARIES}) ---------------- Why does gcc_s need to be first? Is there some symbol that needs to be resolved from it and not another provider? http://reviews.llvm.org/D15440 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits