[compiler-rt] r352234 - Fix XRayTest link on FreeBSD (and likely NetBSD too)

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 25 14:55:41 PST 2019


Merged to 8.0 in r352251.

On Fri, Jan 25, 2019 at 11:36 AM Dimitry Andric via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: dim
> Date: Fri Jan 25 11:36:47 2019
> New Revision: 352234
>
> URL: http://llvm.org/viewvc/llvm-project?rev=352234&view=rev
> Log:
> Fix XRayTest link on FreeBSD (and likely NetBSD too)
>
> Summary:
> As reported on llvm-testers, during 8.0.0-rc1 testing I got errors while
> building of `XRayTest`, during `check-all`:
>
> ```
> [100%] Generating XRayTest-x86_64-Test
> /home/dim/llvm/8.0.0/rc1/Phase3/Release/llvmCore-8.0.0-rc1.obj/./lib/libLLVMSupport.a(Signals.cpp.o): In function `llvm::sys::PrintStackTrace(llvm::raw_ostream&)':
> Signals.cpp:(.text._ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x24): undefined reference to `backtrace'
> Signals.cpp:(.text._ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x254): undefined reference to `llvm::itaniumDemangle(char const*, char*, unsigned long*, int*)'
> clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
> gmake[3]: *** [projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/build.make:73: projects/compiler-rt/lib/xray/tests/unit/XRayTest-x86_64-Test] Error 1
> gmake[3]: Target 'projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/build' not remade because of errors.
> gmake[2]: *** [CMakeFiles/Makefile2:33513: projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/all] Error 2
> gmake[2]: Target 'CMakeFiles/check-all.dir/all' not remade because of errors.
> gmake[1]: *** [CMakeFiles/Makefile2:737: CMakeFiles/check-all.dir/rule] Error 2
> gmake[1]: Target 'check-all' not remade because of errors.
> gmake: *** [Makefile:277: check-all] Error 2
> [Release Phase3] check-all failed
> ```
>
> This is because the `backtrace` function requires `-lexecinfo` on BSD
> platforms.  To fix this, detect the `execinfo` library in
> `cmake/config-ix.cmake`, and add it to the unit test link flags.
>
> Additionally, since the code in `sys::PrintStackTrace` makes use of
> `itaniumDemangle`, also add `-lLLVMDemangle`.  (Note that this is more
> of a general problem with libLLVMSupport, but I'm looking for a quick
> fix now so it can be merged to the 8.0 branch.)
>
> Reviewers: dberris, hans, mgorny, samsonov
>
> Reviewed By: dberris
>
> Subscribers: krytarowski, delcypher, erik.pilkington, #sanitizers, emaste, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D57181
>
> Modified:
>     compiler-rt/trunk/cmake/config-ix.cmake
>     compiler-rt/trunk/lib/xray/tests/CMakeLists.txt
>
> Modified: compiler-rt/trunk/cmake/config-ix.cmake
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-ix.cmake?rev=352234&r1=352233&r2=352234&view=diff
> ==============================================================================
> --- compiler-rt/trunk/cmake/config-ix.cmake (original)
> +++ compiler-rt/trunk/cmake/config-ix.cmake Fri Jan 25 11:36:47 2019
> @@ -118,6 +118,7 @@ check_library_exists(dl dlopen "" COMPIL
>  check_library_exists(rt shm_open "" COMPILER_RT_HAS_LIBRT)
>  check_library_exists(m pow "" COMPILER_RT_HAS_LIBM)
>  check_library_exists(pthread pthread_create "" COMPILER_RT_HAS_LIBPTHREAD)
> +check_library_exists(execinfo backtrace "" COMPILER_RT_HAS_LIBEXECINFO)
>
>  # Look for terminfo library, used in unittests that depend on LLVMSupport.
>  if(LLVM_ENABLE_TERMINFO)
>
> Modified: compiler-rt/trunk/lib/xray/tests/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/xray/tests/CMakeLists.txt?rev=352234&r1=352233&r2=352234&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/xray/tests/CMakeLists.txt (original)
> +++ compiler-rt/trunk/lib/xray/tests/CMakeLists.txt Fri Jan 25 11:36:47 2019
> @@ -71,13 +71,14 @@ if (NOT APPLE)
>      endforeach()
>
>      # We also add the actual libraries to link as dependencies.
> -    list(APPEND XRAY_UNITTEST_LINK_FLAGS -lLLVMXRay -lLLVMSupport -lLLVMTestingSupport)
> +    list(APPEND XRAY_UNITTEST_LINK_FLAGS -lLLVMXRay -lLLVMSupport -lLLVMDemangle -lLLVMTestingSupport)
>    endif()
>
>    append_list_if(COMPILER_RT_HAS_LIBM -lm XRAY_UNITTEST_LINK_FLAGS)
>    append_list_if(COMPILER_RT_HAS_LIBRT -lrt XRAY_UNITTEST_LINK_FLAGS)
>    append_list_if(COMPILER_RT_HAS_LIBDL -ldl XRAY_UNITTEST_LINK_FLAGS)
>    append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread XRAY_UNITTEST_LINK_FLAGS)
> +  append_list_if(COMPILER_RT_HAS_LIBEXECINFO -lexecinfo XRAY_UNITTEST_LINK_FLAGS)
>  endif()
>
>  macro(add_xray_unittest testname)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list