Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linker error with LLVM 18.1.8: std::exception_ptr::__from_native_exception_pointer(void*) #178435

Closed
4 tasks done
mborland opened this issue Jul 25, 2024 · 6 comments
Closed
4 tasks done
Labels
bug Reproducible Homebrew/homebrew-core bug

Comments

@mborland
Copy link

mborland commented Jul 25, 2024

brew gist-logs <formula> link OR brew config AND brew doctor output

brew config:

HOMEBREW_VERSION: 4.3.10
ORIGIN: https://github.com/Homebrew/brew
HEAD: c3ae0327c01aab461531bfc0fcdfb4dd3a779205
Last commit: 7 days ago
Core tap JSON: 25 Jul 12:31 UTC
Core cask tap JSON: 25 Jul 12:31 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 10
Homebrew Ruby: 3.3.3 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.3.3/bin/ruby
CPU: 10-core 64-bit arm_firestorm_icestorm
Clang: 15.0.0 build 1500
Git: 2.45.2 => /opt/homebrew/bin/git
Curl: 8.6.0 => /usr/bin/curl
macOS: 14.5-arm64
CLT: 15.3.0.0.1.1708646388
Xcode: 15.4
Rosetta 2: false

brew doctor:

Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  [email protected]

brew remove [email protected]
Error: Refusing to uninstall /opt/homebrew/Cellar/[email protected]/1.1.1w
because it is required by fftw, liblqr and pstoedit, which are currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies [email protected]

Verification

  • My brew doctor output says Your system is ready to brew. and am still able to reproduce my issue.
  • I ran brew update and am still able to reproduce my issue.
  • I have resolved all warnings from brew doctor and that did not fix my problem.
  • I searched for recent similar issues at https://github.com/Homebrew/homebrew-core/issues?q=is%3Aissue and found no duplicates.

What were you trying to do (and why)?

I am trying to build the boost 1.86 beta release candidate. The tar ball can be found: https://archives.boost.io/beta/1.86.0.beta1/source/. I am trying to build it since I am a boost maintainer, and am testing the build as part of the upcoming release cycle.

What happened (include all command output)?

I received a linker error for std::exception pointer:

Undefined symbols for architecture arm64:
  "std::exception_ptr::__from_native_exception_pointer(void*)", referenced from:
      std::exception_ptr std::make_exception_ptr[abi:ne180100]<boost::system::error_code>(boost::system::error_code) in exception.o
      boost::asio::detail::thread_info_base::capture_current_exception() in main.o
  "___cxa_init_primary_exception", referenced from:
      std::exception_ptr std::make_exception_ptr[abi:ne180100]<boost::system::error_code>(boost::system::error_code) in exception.o
      boost::asio::detail::thread_info_base::capture_current_exception() in main.o

Searching LLVMs logs lead me to:

llvm/llvm-project#86077

which is linked to:

llvm/llvm-project#77653

A homebrew maintainer states here there is a patch already applied to homebrew:

llvm/llvm-project#77653 (comment)

Full output:
./b2 cxxstd=20 toolset=clang --stage
Performing configuration checks

    - default address-model    : 64-bit (cached) [1]
    - default architecture     : arm (cached) [1]

Building the Boost C++ Libraries.


    - cxx11_static_assert      : yes (cached) [2]
    - cxx11_variadic_templates : yes (cached) [2]
    - cxx11_decltype           : yes (cached) [2]
    - GCC libquadmath and __float128 support : no  (cached) [2]
    - cxx11_hdr_ratio          : yes (cached) [2]
    - cxx11_template_aliases   : yes (cached) [2]
    - cxx11_char16_t           : yes (cached) [2]
    - cxx11_char32_t           : yes (cached) [2]
    - cxx20_hdr_concepts       : yes (cached) [2]
    - cpp_lib_memory_resource  : yes (cached) [2]
warning: non-free usage requirements <boost.cobalt.pmr>std ignored
warning: in main-target boost_cobalt at libs/cobalt/build/Jamfile:73
    - has std::atomic_ref      : no  (cached) [2]
    - has -Wl,--no-undefined   : no  (cached) [2]
    - has -Wl,-undefined,error : yes (cached) [2]
    - has statx                : no  (cached) [2]
    - has statx syscall        : no  (cached) [2]
    - cxx11_rvalue_references  : yes (cached) [2]
    - cxx11_scoped_enums       : yes (cached) [2]
    - cxx11_noexcept           : yes (cached) [2]
    - cxx11_nullptr            : yes (cached) [2]
    - cxx11_defaulted_functions : yes (cached) [2]
    - cxx11_defaulted_moves    : yes (cached) [2]
    - cxx11_deleted_functions  : yes (cached) [2]
    - cxx11_function_template_default_args : yes (cached) [2]
    - cxx11_final              : yes (cached) [2]
    - cxx11_override           : yes (cached) [2]
    - has init_priority attribute : yes (cached) [2]
    - has stat::st_blksize     : no  (cached) [2]
    - has stat::st_mtim        : no  (cached) [2]
    - has stat::st_mtimensec   : no  (cached) [2]
    - has stat::st_mtimespec   : yes (cached) [2]
    - has stat::st_birthtim    : no  (cached) [2]
    - has stat::st_birthtimensec : no  (cached) [2]
    - has stat::st_birthtimespec : yes (cached) [2]
    - has fdopendir(O_NOFOLLOW) : yes (cached) [2]
    - has dirent::d_type       : yes (cached) [2]
    - has POSIX *at APIs       : no  (cached) [2]
    - has fallocate            : no  (cached) [2]
    - cxx11_auto_declarations  : yes (cached) [2]
    - cxx11_constexpr          : yes (cached) [2]
    - cxx11_hdr_mutex          : yes (cached) [2]
    - cxx11_hdr_tuple          : yes (cached) [2]
    - cxx11_lambdas            : yes (cached) [2]
    - cxx11_thread_local       : yes (cached) [2]
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam.
note: to suppress this message, pass "--without-graph_parallel" to bjam.
    - zlib                     : yes (cached) [2]
    - bzip2                    : yes (cached) [2]
    - lzma                     : yes (cached) [2]
    - zstd                     : yes (cached) [2]
    - has_lzma_cputhreads builds : yes (cached) [2]
    - cxx11_basic_alignas      : yes (cached) [2]
    - icu                      : no  (cached) [2]
    - iconv (libc)             : no  (cached) [2]
    - iconv (separate)         : yes (cached) [2]
    - cxx11_hdr_functional     : yes (cached) [2]
    - cxx11_hdr_type_traits    : yes (cached) [2]
    - cxx11_range_based_for    : yes (cached) [2]
    - cxx11_smart_ptr          : yes (cached) [2]
    - native atomic int32 supported : yes (cached) [2]
    - native syslog supported  : yes (cached) [2]
    - pthread supports robust mutexes : no  (cached) [2]
    - Boost.Regex is header-only : yes (cached) [2]
    - lockfree boost::atomic_flag : yes (cached) [2]
    - gcc visibility           : yes (cached) [2]
    - sfinae_expr              : yes (cached) [2]
    - cxx11_unified_initialization_syntax : yes (cached) [2]
    - cxx11_hdr_initializer_list : yes (cached) [2]
    - cxx11_hdr_chrono         : yes (cached) [2]
    - cxx11_numeric_limits     : yes (cached) [2]
    - cxx11_hdr_array          : yes (cached) [2]
    - cxx11_hdr_atomic         : yes (cached) [2]
    - cxx11_allocator          : yes (cached) [2]
    - cxx11_explicit_conversion_operators : yes (cached) [2]
    - cxx14_decltype_auto      : yes (cached) [2]
    - cxx14_generic_lambdas    : yes (cached) [2]
    - cxx14_return_type_deduction : yes (cached) [2]
    - cxx14_variable_templates : yes (cached) [2]
    - long double support      : yes (cached) [2]
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - Has Large File Support   : yes (cached) [2]
    - Has attribute init_priority : yes (cached) [2]
    - has_icu builds           : no  (cached) [2]
    - std_wstreambuf builds    : yes (cached) [2]
    - std_wstreambuf           : yes (cached) [2]
    - cxx11_rvalue_references  : yes (cached) [3]
    - libbacktrace builds      : no  (cached) [2]
    - cxx11_rvalue_references  : yes (cached) [4]
    - libbacktrace builds      : no  (cached) [4]
    - addr2line builds         : yes (cached) [2]
    - WinDbg builds            : no  (cached) [2]
    - WinDbg builds            : no  (cached) [4]
    - WinDbgCached builds      : no  (cached) [2]
    - WinDbgCached builds      : no  (cached) [4]
    - BOOST_COMP_GNUC >= 4.3.0 : no  (cached) [2]
    - BOOST_COMP_GNUC >= 4.3.0 : no  (cached) [3]
    - cxx11_hdr_thread         : yes (cached) [2]
    - cxx11_hdr_regex          : yes (cached) [2]
    - cxx11_static_assert      : yes (cached) [3]
    - cxx11_variadic_templates : yes (cached) [3]
    - cxx11_decltype           : yes (cached) [3]
    - GCC libquadmath and __float128 support : no  (cached) [3]
    - cxx11_hdr_ratio          : yes (cached) [3]
    - cxx11_template_aliases   : yes (cached) [3]
    - cxx11_char16_t           : yes (cached) [3]
    - cxx11_char32_t           : yes (cached) [3]
    - cxx20_hdr_concepts       : yes (cached) [3]
    - cpp_lib_memory_resource  : yes (cached) [3]
    - has std::atomic_ref      : no  (cached) [3]
    - has statx                : no  (cached) [3]
    - has statx syscall        : no  (cached) [3]
    - cxx11_scoped_enums       : yes (cached) [3]
    - cxx11_noexcept           : yes (cached) [3]
    - cxx11_nullptr            : yes (cached) [3]
    - cxx11_defaulted_functions : yes (cached) [3]
    - cxx11_defaulted_moves    : yes (cached) [3]
    - cxx11_deleted_functions  : yes (cached) [3]
    - cxx11_function_template_default_args : yes (cached) [3]
    - cxx11_final              : yes (cached) [3]
    - cxx11_override           : yes (cached) [3]
    - has init_priority attribute : yes (cached) [3]
    - has stat::st_blksize     : no  (cached) [3]
    - has stat::st_mtim        : no  (cached) [3]
    - has stat::st_mtimensec   : no  (cached) [3]
    - has stat::st_mtimespec   : yes (cached) [3]
    - has stat::st_birthtim    : no  (cached) [3]
    - has stat::st_birthtimensec : no  (cached) [3]
    - has stat::st_birthtimespec : yes (cached) [3]
    - has fdopendir(O_NOFOLLOW) : yes (cached) [3]
    - has dirent::d_type       : yes (cached) [3]
    - has POSIX *at APIs       : no  (cached) [3]
    - has fallocate            : no  (cached) [3]
    - cxx11_auto_declarations  : yes (cached) [3]
    - cxx11_constexpr          : yes (cached) [3]
    - cxx11_hdr_mutex          : yes (cached) [3]
    - cxx11_hdr_tuple          : yes (cached) [3]
    - cxx11_lambdas            : yes (cached) [3]
    - cxx11_thread_local       : yes (cached) [3]
    - zlib                     : yes (cached) [3]
    - bzip2                    : yes (cached) [3]
    - lzma                     : yes (cached) [3]
    - zstd                     : yes (cached) [3]
    - has_lzma_cputhreads builds : yes (cached) [3]
    - cxx11_basic_alignas      : yes (cached) [3]
    - icu                      : no  (cached) [3]
    - iconv (libc)             : no  (cached) [3]
    - iconv (separate)         : yes (cached) [3]
    - cxx11_hdr_functional     : yes (cached) [3]
    - cxx11_hdr_type_traits    : yes (cached) [3]
    - cxx11_range_based_for    : yes (cached) [3]
    - cxx11_smart_ptr          : yes (cached) [3]
    - native atomic int32 supported : yes (cached) [3]
    - native syslog supported  : yes (cached) [3]
    - pthread supports robust mutexes : no  (cached) [3]
    - Boost.Regex is header-only : yes (cached) [3]
    - lockfree boost::atomic_flag : yes (cached) [3]
    - gcc visibility           : yes (cached) [3]
    - sfinae_expr              : yes (cached) [3]
    - cxx11_unified_initialization_syntax : yes (cached) [3]
    - cxx11_hdr_initializer_list : yes (cached) [3]
    - cxx11_hdr_chrono         : yes (cached) [3]
    - cxx11_numeric_limits     : yes (cached) [3]
    - cxx11_hdr_array          : yes (cached) [3]
    - cxx11_hdr_atomic         : yes (cached) [3]
    - cxx11_allocator          : yes (cached) [3]
    - cxx11_explicit_conversion_operators : yes (cached) [3]
    - cxx14_decltype_auto      : yes (cached) [3]
    - cxx14_generic_lambdas    : yes (cached) [3]
    - cxx14_return_type_deduction : yes (cached) [3]
    - cxx14_variable_templates : yes (cached) [3]
    - long double support      : yes (cached) [3]
    - Has Large File Support   : yes (cached) [3]
    - Has attribute init_priority : yes (cached) [3]
    - has_icu builds           : no  (cached) [3]
    - std_wstreambuf builds    : yes (cached) [3]
    - std_wstreambuf           : yes (cached) [3]
    - libbacktrace builds      : no  (cached) [3]
    - cxx11_rvalue_references  : yes (cached) [5]
    - libbacktrace builds      : no  (cached) [5]
    - addr2line builds         : yes (cached) [3]
    - WinDbg builds            : no  (cached) [3]
    - WinDbg builds            : no  (cached) [5]
    - WinDbgCached builds      : no  (cached) [3]
    - WinDbgCached builds      : no  (cached) [5]
    - cxx11_hdr_thread         : yes (cached) [3]
    - cxx11_hdr_regex          : yes (cached) [3]

[1] clang-18
[2] clang-darwin-18/release/arm_64/cxxstd-20-iso/python-3.11/threading-multi/visibility-hidden
[3] clang-darwin-18/release/arm_64/cxxstd-20-iso/link-static/python-3.11/threading-multi/visibility-hidden
[4] clang-darwin-18/release/arm_64/build-no/cxxstd-20-iso/python-3.11/threading-multi/visibility-hidden
[5] clang-darwin-18/release/arm_64/build-no/cxxstd-20-iso/link-static/python-3.11/threading-multi/visibility-hidden

Component configuration:

    - atomic                   : building
    - charconv                 : building
    - chrono                   : building
    - cobalt                   : building
    - container                : building
    - context                  : building
    - contract                 : building
    - coroutine                : building
    - date_time                : building
    - exception                : building
    - fiber                    : building
    - filesystem               : building
    - graph                    : building
    - graph_parallel           : building
    - headers                  : building
    - iostreams                : building
    - json                     : building
    - locale                   : building
    - log                      : building
    - math                     : building
    - mpi                      : building
    - nowide                   : building
    - process                  : building
    - program_options          : building
    - python                   : building
    - random                   : building
    - regex                    : building
    - serialization            : building
    - stacktrace               : building
    - system                   : building
    - test                     : building
    - thread                   : building
    - timer                    : building
    - type_erasure             : building
    - url                      : building
    - wave                     : building
    - predef                   : building

...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...found 17870 targets...
...updating 24 targets...
clang-darwin.link.dll bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_cobalt.dylib
ld: warning: -single_module is obsolete
ld: warning: -single_module is obsolete
Undefined symbols for architecture arm64:
  "std::exception_ptr::__from_native_exception_pointer(void*)", referenced from:
      std::exception_ptr std::make_exception_ptr[abi:ne180100]<boost::system::error_code>(boost::system::error_code) in exception.o
      boost::asio::detail::thread_info_base::capture_current_exception() in main.o
  "___cxa_init_primary_exception", referenced from:
      std::exception_ptr std::make_exception_ptr[abi:ne180100]<boost::system::error_code>(boost::system::error_code) in exception.o
      boost::asio::detail::thread_info_base::capture_current_exception() in main.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

    "clang++"    -o "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_cobalt.dylib" -Wl,-install_name -Wl,"@rpath/libboost_cobalt.dylib" -dynamiclib -single_module  "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/detail/exception.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/detail/util.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/channel.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/error.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/main.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/this_thread.o" "bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/thread.o"       -fPIC -std=c++20 -fvisibility=hidden -fvisibility-inlines-hidden -m64 --target=arm64-apple-darwin

...failed clang-darwin.link.dll bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_cobalt.dylib...
clang-darwin.link.dll bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_log.dylib
ld: warning: -single_module is obsolete
ld: warning: -single_module is obsolete
Undefined symbols for architecture arm64:
  "std::exception_ptr::__from_native_exception_pointer(void*)", referenced from:
      boost::asio::detail::thread_info_base::capture_current_exception() in syslog_backend.o
  "___cxa_init_primary_exception", referenced from:
      boost::asio::detail::thread_info_base::capture_current_exception() in syslog_backend.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

    "clang++"    -o "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_log.dylib" -Wl,-install_name -Wl,"@rpath/libboost_log.dylib" -dynamiclib -single_module  "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/attribute_name.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/attribute_set.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/attribute_value_set.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/code_conversion.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/core.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/record_ostream.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/severity_level.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/global_logger_storage.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/named_scope.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/process_name.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/process_id.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/thread_id.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/timer.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/exceptions.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/default_attribute_names.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/default_sink.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/text_ostream_backend.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/text_file_backend.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/text_multifile_backend.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/thread_specific.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/once_block.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/timestamp.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/threadsafe_queue.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/event.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/trivial.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/spirit_encoding.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/format_parser.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/date_time_format_parser.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/named_scope_format_parser.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/permissions.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/dump.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/posix/ipc_reliable_message_queue.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/posix/object_name.o" "bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/syslog_backend.o" "bin.v2/libs/chrono/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_chrono.dylib" "bin.v2/libs/filesystem/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_filesystem.dylib" "bin.v2/libs/thread/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_thread.dylib" "bin.v2/libs/atomic/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_atomic.dylib"       -fPIC -std=c++20 -fvisibility=hidden -fvisibility-inlines-hidden -m64 --target=arm64-apple-darwin

...failed clang-darwin.link.dll bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_log.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_log.dylib for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log.dylib...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_log_setup.dylib for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>boost_log_setup-config.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config.cmake...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config-version.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>boost_log_setup-config-version.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config-version.cmake...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup-variant-shared.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>libboost_log_setup-variant-shared.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup-variant-shared.cmake...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>boost_log-config.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config.cmake...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config-version.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>boost_log-config-version.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config-version.cmake...
...skipped <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log-variant-shared.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>libboost_log-variant-shared.cmake for lack of <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log-variant-shared.cmake...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_cobalt.dylib for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt.dylib...
...skipped <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>boost_cobalt-config.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config.cmake...
...skipped <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config-version.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>boost_cobalt-config-version.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config-version.cmake...
...skipped <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt-variant-shared.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt.dylib...
...skipped <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>libboost_cobalt-variant-shared.cmake for lack of <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt-variant-shared.cmake...

...skipped 22 targets...
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>boost_cobalt-config-version.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>boost_cobalt-config.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_cobalt-1.86.0>libboost_cobalt-variant-shared.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>boost_log-config-version.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>boost_log-config.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log-1.86.0>libboost_log-variant-shared.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>boost_log_setup-config-version.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>boost_log_setup-config.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib/cmake/boost_log_setup-1.86.0>libboost_log_setup-variant-shared.cmake
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_cobalt.dylib
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_log.dylib
   <p/Users/mborland/Downloads/boost_1_86_0/stage/lib>libboost_log_setup.dylib
   <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_cobalt-variant-shared.cmake
   <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config-version.cmake
   <pbin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_cobalt-config.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log-variant-shared.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup-variant-shared.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>libboost_log_setup.dylib
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config-version.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log-config.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config-version.cmake
   <pbin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden>stage/boost_log_setup-config.cmake

...failed updating 2 targets...
   clang-darwin.link.dll bin.v2/libs/cobalt/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_cobalt.dylib
   clang-darwin.link.dll bin.v2/libs/log/build/clang-darwin-18/release/arm_64/cxxstd-20-iso/threading-multi/visibility-hidden/libboost_log.dylib

What did you expect to happen?

I expected the libraries to build fine without the linker error. Building using homebrew GCC14 (toolset=gcc-14) or Xcode provided clang (toolset=darwin) successfully builds the libraries.

Step-by-step reproduction instructions (by running brew commands)

1) Download the source from: https://archives.boost.io/beta/1.86.0.beta1/source/
2) tar -xzvf boost_1_86_0_b1_rc4.tar
3) cd boost_1_86_0
4) ./bootstrap.sh
5) ./b2 cxxstd=20 toolset=clang --stage
@mborland mborland added the bug Reproducible Homebrew/homebrew-core bug label Jul 25, 2024
@carlocab
Copy link
Member

Can you try adding

-L"$(brew --prefix llvm)/lib/c++" -L"$(brew --prefix llvm)/lib" -lunwind

to cxxflags when building to see if it helps?

@mborland
Copy link
Author

Can you try adding

-L"$(brew --prefix llvm)/lib/c++" -L"$(brew --prefix llvm)/lib" -lunwind

to cxxflags when building to see if it helps?

With those flags added to linkflags the libraries successfully build. Full command is now:

./b2 cxxstd=20 toolset=clang --stage linkflags="-L"$(brew --prefix llvm)/lib/c++" -L"$(brew --prefix llvm)/lib" -lunwind"

@carlocab
Copy link
Member

carlocab commented Aug 4, 2024

Good to know, thanks. Do you consider this issue resolved?

The solution isn't ideal, but making it better could prove a little painful for some other users...

@mborland
Copy link
Author

mborland commented Aug 5, 2024

Good to know, thanks. Do you consider this issue resolved?

The solution isn't ideal, but making it better could prove a little painful for some other users...

Do you expect this to be a temporary or permanent workaround? Previous versions of homebrew LLVM worked fine out of the box and there's now a few other issues elsewhere pointing to this one.

@cho-m
Copy link
Member

cho-m commented Aug 5, 2024

Previous versions of homebrew LLVM worked fine out of the box

Just noting that similar issues could have (and did) happen with previous LLVM versions depending on how old the version of Xcode's LLVM was. The root cause is mixing of different LLVM headers and libraries is not officially supported.

LLVM 18 specifically introduced changes to std::make_exception_ptr so any code that uses it hits the failure when linking to Xcode's libc++.

A prior situation was LLVM 15/16 introducing verbose abort feature (which impacted Monterey and older), e.g. llvm/llvm-project#87590

@mborland mborland closed this as completed Aug 6, 2024
@carlocab
Copy link
Member

carlocab commented Aug 6, 2024

Yes, the issue seems to be that LLVM prioritises use of its included C++ headers when it has no guarantee that it will be linking with a compatible libc++. For a long time this didn't cause anyone problems. I'm not sure if this was by chance, or if there's been a policy change upstream.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Reproducible Homebrew/homebrew-core bug
Projects
None yet
Development

No branches or pull requests

3 participants