A MergeRequest was wrong - I was forced to do a forced push on boost.context because I was unable to revert the merges.
07.07.2023 18:30:41 Ruben Perez
Hi,
Re-running the CIs on the master branch, that now has this commit merged, builds correctly Boost.Context, but the produced library seems to be missing the symbols required to build an executable with it. On ARM 64, under Linux, the build produces a warning message (see the bottom of the email). The linker then complains about undefined references to make_fcontext, jump_fcontext and ontop_fcontext.
For reference, the executable is using Context through boost::asio::spawn.
Full build log here: https://drone.cpp.al/boostorg/mysql/379/16/3
error: No best alternative for libs/context/build/asm_sources with <abi>sysv <address-model>64 <architecture>arm <asynch-exceptions>off <binary-format>elf
on <context-impl>fcontext <coverage>off <cxxstd-dialect>iso <cxxstd>20 <debug-symbols>on <deduced-address-model>64 <deduced-architecture>arm <exception-handling>on <extern-c-nothrow>off <inlining>off <link>shared <optimization>off <os>LINUX <pch>on <preserve-test-targets>on <profiling>off <python-debugging>off <python>3.10 <relevant>abi <relevant>address-model <relevant>architecture <relevant>binary-format <relevant>toolset <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <strip>off <target-os>linux on <threadapi>pthread <threading>multi toolset-clang:platformlinux toolset-clang:version14 <toolset>clang <variant>debug <vectorize>off <visibility>hidden <warnings-as-errors>off <warnings>on no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>clang no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>gcc no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>qcc no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>mach-o <threading>multi <toolset>clang no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>pe <threading>multi <toolset>msvc no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>elf <threading>multi <toolset>clang no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>elf <threading>multi <toolset>gcc no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>mach-o <threading>multi <toolset>clang no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>pe <threading>multi <toolset>msvc no match: <abi>sysv <address-model>64 <architecture>loongarch <binary-format>elf <threading>multi <toolset>gcc no match: <abi>o32 <address-model>32 <architecture>mips <binary-format>elf <threading>multi <toolset>clang no match: <abi>o32 <address-model>32 <architecture>mips <binary-format>elf <threading>multi <toolset>gcc no match: <abi>n64 <address-model>64 <architecture>mips <binary-format>elf <threading>multi <toolset>clang no match: <abi>n64 <address-model>64 <architecture>mips <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>32 <architecture>power <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>32 <architecture>power <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>32 <architecture>power <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>sysv <address-model>32 <architecture>power <binary-format>xcoff <threading>multi <toolset>clang no match: <abi>sysv <address-model>32 <architecture>power <binary-format>xcoff <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>power <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>power <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>power <binary-format>mach-o <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>power <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>sysv <address-model>64 <architecture>power <binary-format>xcoff <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>power <binary-format>xcoff <threading>multi <toolset>gcc no match: <abi>sysv <address-model>32_64 <architecture>power <binary-format>mach-o <threading>multi no match: <abi>sysv <address-model>64 <architecture>riscv <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>riscv <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>s390x <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>s390x <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>clang no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang-win no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>gcc no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>intel no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>msvc no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>embarcadero no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>borland no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>clang no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>gcc no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>darwin no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>intel no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang-win no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>gcc no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>intel no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>msvc no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>embarcadero no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel no match: <abi>sysv <address-model>32_64 <architecture>x86 <binary-format>mach-o <threading>multi no match: <abi>sysv <architecture>combined <binary-format>mach-o <threading>multi
On Thu, 6 Jul 2023 at 23:10, Marshall Clow
wrote: On Jul 6, 2023, at 2:02 PM, Ruben Perez
wrote: https://github.com/boostorg/context/commit/d039c8e4da79dbc76481236249e22892b...
I can confirm that with that change applied to the beta release candidate, Boost.Context (and Boost.Fiber) now build successfully on my ARM-based Mac.
— Marshall
On Thu, 6 Jul 2023 at 22:49, Marshall Clow
wrote: On Jul 6, 2023, at 1:19 PM, Ruben Perez
wrote: If I'm not mistaken, there's a bug in Boost.Context that was fixed in develop but not in master that caused similar issues for ARM. It may be related.
The failures I am seeing are on ARM.
— Marshall
Ruben.
On Thu, 6 Jul 2023, 16:45 Marshall Clow via Boost,
wrote: On Jul 6, 2023, at 7:08 AM, Marshall Clow
wrote: …
I have successfully built the boost libraries for C++03/11/14/17/20/2b on Mac OS 13.4.1 with:
$ clang++ -v Apple clang version 14.0.3 (clang-1403.0.22.14.1) Target: x86_64-apple-darwin22.5.0
But on my M1 Mac: $ clang++ -v Apple clang version 14.0.3 (clang-1403.0.22.14.1) Target: arm64-apple-darwin22.5.0
Boost.Coroutine failed to build.
clang-darwin.link.dll bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/libboost_coroutine.dylib Undefined symbols for architecture arm64: "_jump_fcontext", referenced from: boost::coroutines::detail::coroutine_context::jump(boost::coroutines::detail::coroutine_context&, void*) in coroutine_context.o "_make_fcontext", referenced from: boost::coroutines::detail::coroutine_context::coroutine_context(void (*)(boost::context::detail::transfer_t), boost::coroutines::detail::preallocated const&) in coroutine_context.o boost::coroutines::detail::coroutine_context::coroutine_context(void (*)(boost::context::detail::transfer_t), boost::coroutines::detail::preallocated const&) in coroutine_context.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
"/usr/bin/clang++" -o "bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/libboost_coroutine.dylib" -Wl,-install_name -Wl,"@rpath/libboost_coroutine.dylib" -dynamiclib -single_module "bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/detail/coroutine_context.o" "bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/exceptions.o" "bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/posix/stack_traits.o" "bin.v2/libs/context/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/libboost_context.dylib" -fPIC -std=c++03 -fvisibility=hidden -fvisibility-inlines-hidden --target=arm64-apple-darwin
...failed clang-darwin.link.dll bin.v2/libs/coroutine/build/clang-darwin-14/release/cxxstd-03-iso/threading-multi/visibility-hidden/libboost_coroutine.dylib...
Which caused the build of Boost.Fiber to fail as well (C++11 and later)
There’s another error at the start of the build log that may be relevant:
error: No best alternative for libs/context/build/asm_sources with <abi>sysv <address-model>64 <architecture>arm <asynch-exceptions>off <binary-format>mach-o <context-impl>fcontext <coverage>off <cxxstd-dialect>iso <cxxstd>03 <debug-symbols>off <deduced-address-model>64 <deduced-architecture>arm <exception-handling>on <extern-c-nothrow>off <format>html <inlining>full <link>shared <optimization>speed <os>MACOSX <pch>on <preserve-test-targets>on <profiling>off <python-debugging>off <relevant>abi <relevant>address-model <relevant>architecture <relevant>binary-format <relevant>toolset <rtti>on <runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off <target-os>darwin
on <threadapi>pthread <threading>multi toolset-clang:platformdarwin toolset-clang:version14 <toolset>clang <variant>release <vectorize>off <visibility>hidden <warnings-as-errors>off <warnings>on Full logs attached.
— Marshall
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost