diff --git a/dev-lang/rust/rust-1.45.0.ebuild b/dev-lang/rust/rust-1.45.0.ebuild index 12fe630a0..8701fa93f 100644 --- a/dev-lang/rust/rust-1.45.0.ebuild +++ b/dev-lang/rust/rust-1.45.0.ebuild @@ -211,6 +211,19 @@ src_configure() { fi rust_target="$(rust_abi)" + llvm_libunwind="false" + if tc-is-clang; then + local compiler_rt=$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -print-libgcc-file-name) + if [[ ${compiler_rt} == *libclang_rt* ]]; then + if has_version sys-libs/llvm-libunwind; then + einfo "Linking with llvm-libunwind" + llvm_libunwind=true + else + einfo "Linking with gcc_s unwinder" + llvm_libunwind=false + fi + fi + fi cat <<- EOF > "${S}"/config.toml [llvm] @@ -263,6 +276,7 @@ src_configure() { lld = $(usex system-llvm false $(toml_usex wasm)) backtrace-on-ice = true jemalloc = false + llvm-libunwind = ${llvm_libunwind} [dist] src-tarball = false EOF