[PATCH] D112126: [libunwind] Try to add -unwindlib=none while configuring and building libunwind

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 25 08:37:51 PDT 2021


mstorsjo added a comment.

In D112126#3084606 <https://reviews.llvm.org/D112126#3084606>, @ldionne wrote:

> Honestly, this feels a bit messy to me.

I don't deny that, but it's also not entirely possible to make it very simple (given the tools available in cmake) for the bare-bootstrap case when nothing is present to begin with.

> At some point I had a patch to set `CMAKE_TRY_COMPILE_TARGET_TYPE` to `STATIC` for all runtimes, unconditionally. We ended up not doing it over some concerns about the correctness of the change, however perhaps we should re-consider that?

That's not possible, unfortunately. We have checks like `check_library_exists(c fopen "" LIBUNWIND_HAS_C_LIB)` - if you set `CMAKE_TRY_COMPILE_TARGET_TYPE` to `STATIC`, then this becomes a false positive, succeeding on every platform, everywhere. So because we _do_ want to do linker checks, but in a controlled manner, I'm afraid we do need to do things in a "messy" to detect things in the right order.

> Also TBH the more I look at it, the more I think that `check_c_compiler_flag` and the similar utilities provided by CMake out of the box don't work that well for our use case, since we run without a toolchain. Maybe we should consider moving away from those in the runtimes.

That's indeed possible - here we could wrap e.g. this

  set(CMAKE_REQUIRED_FLAGS_ORIG "${CMAKE_REQUIRED_FLAGS}")
  set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} --unwindlib=none")
  check_c_compiler_flag("" LIBUNWIND_SUPPORTS_UNWINDLIB_NONE_FLAG)
  if (NOT LIBUNWIND_SUPPORTS_UNWINDLIB_NONE_FLAG)
    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_ORIG}")
  endif()

into a macro - which might be beneficial for some of the other checks (`-nostdlib++` and `-nodefaultlibs` too) in some scenarios.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112126/new/

https://reviews.llvm.org/D112126



More information about the llvm-commits mailing list