Skip to content

Failing to link BoringSSL on Linux #932

@freef4ll

Description

@freef4ll

I'm trying to build SPM with SwiftBuild on Linux, in order to check swiftlang/swift-package-manager#7239

cd swift-package-manager
swift build --build-system swiftbuild -v -j 1

Fails to link with:

error: /tmp/swift-package-manager/Package.swift Linker command failed with exit code 1 (use -v to see invocation)
info: error: link command failed with exit code 1 (use -v to see invocation)
/tmp/swift-package-manager/Package.swift: package-info-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:function __clang_call_terminate: error: undefined reference to '__cxa_begin_catch'
/tmp/swift-package-manager/Package.swift: package-info-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:function __clang_call_terminate: error: undefined reference to 'std::terminate()'
/tmp/swift-package-manager/Package.swift: package-info-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:DW.ref.__gxx_personality_v0: error: undefined reference to '__gxx_personality_v0'
/tmp/swift-package-manager/Package.swift: package-info-product: clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: Ld /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/package-info normal failed with a nonzero exit code. Command line:     cd /tmp/swift-package-manager
    /usr/bin/swiftc -target aarch64-unknown-linux-gnu -emit-executable -sysroot / -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/EagerLinkingTBDs/Debug-linux -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux -L/usr/lib @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/package-info.build/Objects-normal/aarch64/package-info.LinkFileList -Xlinker -rpath -Xlinker \$ORIGIN -Xlinker -rpath -Xlinker /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/PackageFrameworks -Xlinker --gc-sections -Xclang-linker -rdynamic -lswiftCore -lswiftSwiftOnoneSupport -L/usr/lib/swift/linux -L/usr/lib/swift @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/package-info.build/Objects-normal/aarch64/package_info.autolink -o /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/package-info
error: SwiftCompile normal aarch64 /tmp/swift-package-manager/Sources/CoreCommands/Options.swift failed with a nonzero exit code. Command line:     cd /tmp

error: SwiftCompile normal aarch64 Compiling\ Options.swift /tmp/swift-package-manager/Sources/CoreCommands/Options.swift failed with a nonzero exit code. Command line: <no command line>
info: /tmp/swift-package-manager/Package.swift: swift-build-prebuilts-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:function __clang_call_terminate: error: undefined reference to '__cxa_begin_catch'
/tmp/swift-package-manager/Package.swift: swift-build-prebuilts-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:function __clang_call_terminate: error: undefined reference to 'std::terminate()'
/tmp/swift-package-manager/Package.swift: swift-build-prebuilts-product: /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/CCryptoBoringSSL.o:err_data.cc:DW.ref.__gxx_personality_v0: error: undefined reference to '__gxx_personality_v0'
error: Ld /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/swift-build-prebuilts normal failed with a nonzero exit code. Command line:     cd /tmp/swift-package-manager
    /usr/bin/swiftc -target aarch64-unknown-linux-gnu -emit-executable -sysroot / -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/EagerLinkingTBDs/Debug-linux -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux -L/usr/lib @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/swift-build-prebuilts.build/Objects-normal/aarch64/swift-build-prebuilts.LinkFileList -Xlinker -rpath -Xlinker \$ORIGIN -Xlinker -rpath -Xlinker /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/PackageFrameworks -Xlinker --gc-sections -Xclang-linker -rdynamic -lswiftCore -lswiftSwiftOnoneSupport -L/usr/lib/swift/linux -L/usr/lib/swift @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/swift-build-prebuilts.build/Objects-normal/aarch64/swift_build_prebuilts.autolink -o /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/swift-build-prebuilts
error: Ld /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/SwiftPM.so normal failed with a nonzero exit code. Command line:     cd /tmp/swift-package-manager
    /usr/bin/swiftc -target aarch64-unknown-linux-gnu -emit-library -sysroot / -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/EagerLinkingTBDs/Debug-linux -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux -L/usr/lib @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/SwiftPM-product.build/Objects-normal/aarch64/SwiftPM.LinkFileList -Xlinker -soname -Xlinker /SwiftPM.so -Xlinker -rpath -Xlinker \$ORIGIN -Xlinker -rpath -Xlinker /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/PackageFrameworks -Xlinker --gc-sections -Xclang-linker -rdynamic -lswiftCore -lswiftSwiftOnoneSupport -L/usr/lib/swift/linux -L/usr/lib/swift -lm -lncurses -lsqlite3 -o /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/SwiftPM.so
error: Ld /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/swift-bootstrap normal failed with a nonzero exit code. Command line:     cd /tmp/swift-package-manager
    /usr/bin/swiftc -target aarch64-unknown-linux-gnu -emit-executable -sysroot / -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/EagerLinkingTBDs/Debug-linux -L/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux -L/usr/lib @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/swift-bootstrap.build/Objects-normal/aarch64/swift-bootstrap.LinkFileList -Xlinker -rpath -Xlinker \$ORIGIN -Xlinker -rpath -Xlinker /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/PackageFrameworks -Xlinker --gc-sections -Xclang-linker -rdynamic -lswiftCore -lswiftSwiftOnoneSupport -L/usr/lib/swift/linux -L/usr/lib/swift @/tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Intermediates.noindex/SwiftPM.build/Debug-linux/swift-bootstrap.build/Objects-normal/aarch64/swift_bootstrap.autolink -lm -lncurses -lsqlite3 -o /tmp/swift-package-manager/.build/aarch64-unknown-linux-gnu/Products/Debug-linux/swift-bootstrap
info: Discovering Swift tasks after 'Compiling SwiftCommandObservabilityHandler.swift'
Discovering Swift tasks after 'Compiling SwiftCommandObservabilityHandler.swift'[94/100] swift-bootstrap-product 3194 / 3369
error: Build failed

If adding -Xlinker -lstdc++ to the failed command it is able to link successfully.

Can reproduce in container:

container run --memory 16G --cpus 8 -ti swiftlang/swift:nightly-main /bin/bash
apt-get update && apt-get -y install libsqlite3-dev libncurses5-dev
git clone https://github.com/swiftlang/swift-package-manager.git
cd swift-package-manager
swift build --build-system swiftbuild

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions