Typical error when trying to build a rust app (for example, librsvg) for aarch64 targets looks like: undefined references to `__aarch64_ldadd8_rel'
The upstream rust commit "add target feature outline-atomics" 0f9f241aac21bc77fb9e757da18207abefdc841d has caused a number of such link failure regressions on platforms with aarch64 toolchains that are not able to cope with -moutline-atomics flag. This includes musl toolchains [1] but some glibc toolchains also are not able to handle this flag [2,3] OE gcc-cross-aarch64 is currently one of the latter, but when it *is* able to handle outline-atomics this patch should go away, to take advantage of the reported performance benefit. [1] https://github.com/rust-lang/git2-rs/issues/706 [2] https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg661738.html [3] https://bugzilla.redhat.com/show_bug.cgi?id=1830472 Signed-off-by: S. Lockwood-Childs <s...@vctlabs.com> --- meta/recipes-devtools/rust/rust-target.inc | 2 + .../rust/rust-disable-outline-atomics.patch | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 meta/recipes-devtools/rust/rust/rust-disable-outline-atomics.patch diff --git a/meta/recipes-devtools/rust/rust-target.inc b/meta/recipes-devtools/rust/rust-target.inc index 3f637b3ba5..bac743f66d 100644 --- a/meta/recipes-devtools/rust/rust-target.inc +++ b/meta/recipes-devtools/rust/rust-target.inc @@ -2,6 +2,8 @@ require rust.inc DEPENDS += "rust-llvm (=${PV})" +SRC_URI += "file://rust-disable-outline-atomics.patch" + # Otherwise we'll depend on what we provide INHIBIT_DEFAULT_RUST_DEPS:class-native = "1" # We don't need to depend on gcc-native because yocto assumes it exists diff --git a/meta/recipes-devtools/rust/rust/rust-disable-outline-atomics.patch b/meta/recipes-devtools/rust/rust/rust-disable-outline-atomics.patch new file mode 100644 index 0000000000..fc99a06a6a --- /dev/null +++ b/meta/recipes-devtools/rust/rust/rust-disable-outline-atomics.patch @@ -0,0 +1,50 @@ +rust: fix arm64 link failures when building rust apps + +Typical error when trying to build a rust app looks like: + undefined references to `__aarch64_ldadd8_rel' + +The upstream rust commit +"add target feature outline-atomics" 0f9f241aac21bc77fb9e757da18207abefdc841d +has caused a number of such link failure regressions on platforms with aarch64 +toolchains that are not able to cope with -moutline-atomics flag. This includes +musl toolchains [1] but some glibc toolchains also are not able to handle this +flag [2,3] + +OE gcc-cross-aarch64 is currently one of the latter, but when it *is* able to +handle outline-atomics this patch should go away, to take advantage of the +reported performance benefit. + +[1] https://github.com/rust-lang/git2-rs/issues/706 +[2] https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg661738.html +[3] https://bugzilla.redhat.com/show_bug.cgi?id=1830472 + +Upstream-Status: Inappropriate [other] + +Signed-off-by: S. Lockwood-Childs <s...@vctlabs.com> + +diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs +index c2136f161..ca221eb4a 100644 +--- a/compiler/rustc_codegen_llvm/src/llvm_util.rs ++++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs +@@ -416,13 +416,14 @@ pub fn llvm_global_features(sess: &Session) -> Vec<String> { + // -Ctarget-features + features.extend(sess.opts.cg.target_feature.split(',').flat_map(&filter)); + +- // FIXME: Move outline-atomics to target definition when earliest supported LLVM is 12. +- if get_version() >= (12, 0, 0) +- && sess.target.llvm_target.contains("aarch64-unknown-linux") +- && sess.target.llvm_target != "aarch64-unknown-linux-musl" +- { +- features.push("+outline-atomics".to_string()); +- } ++// // FIXME: Move outline-atomics to target definition when earliest supported LLVM is 12. ++// if get_version() >= (12, 0, 0) ++// && sess.target.llvm_target.contains("aarch64-unknown-linux") ++// && sess.target.llvm_target != "aarch64-unknown-linux-musl" ++// { ++// features.push("+outline-atomics".to_string()); ++// } ++ + + features + } -- 2.20.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#159774): https://lists.openembedded.org/g/openembedded-core/message/159774 Mute This Topic: https://lists.openembedded.org/mt/87763768/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-