mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

This is default in LLVM but rust does not use cmake to build itself so it needs to replicate the behavior Fixes rust build with clang/musl for aarch64 (From OE-Core rev: f05d42d11e56cbbda6034bd7f773dc690b68bdbd) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
47 lines
2.1 KiB
Diff
47 lines
2.1 KiB
Diff
From 56b669cd7adcc413bb1e64c3d2d7c347a82ae35a Mon Sep 17 00:00:00 2001
|
|
From: Khem Raj <raj.khem@gmail.com>
|
|
Date: Wed, 21 May 2025 18:47:09 -0700
|
|
Subject: [PATCH] Disable libunwind cross-architecture unwinding
|
|
|
|
Building with _LIBUNWIND_IS_NATIVE_ONLY disables code for cross-architecture unwinding
|
|
it is disabled by default in LLVM [1], replicate the cmake behavior in bootstrap process
|
|
|
|
It also enables some additional code that handles PAC-specific unwind info
|
|
it helps compiling with the -mbranch-protection=pac or -mbranch-protection=standard flags
|
|
|
|
This fixes build with clang/musl on aarch64
|
|
|
|
[1] https://github.com/llvm/llvm-project/commit/85624c5de3e831ffa01fdc2d159e3d69c30de08d
|
|
|
|
Upstream-Status: Submitted [https://github.com/rust-lang/rust/pull/141375]
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
---
|
|
src/bootstrap/src/core/build_steps/llvm.rs | 3 +--
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs
|
|
index a3788197471..5e4a1c7d9f0 100644
|
|
--- a/src/bootstrap/src/core/build_steps/llvm.rs
|
|
+++ b/src/bootstrap/src/core/build_steps/llvm.rs
|
|
@@ -1430,6 +1430,7 @@ fn run(self, builder: &Builder<'_>) -> Self::Output {
|
|
cfg.flag("-funwind-tables");
|
|
cfg.flag("-fvisibility=hidden");
|
|
cfg.define("_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS", None);
|
|
+ cfg.define("_LIBUNWIND_IS_NATIVE_ONLY", "1");
|
|
cfg.include(root.join("include"));
|
|
cfg.cargo_metadata(false);
|
|
cfg.out_dir(&out_dir);
|
|
@@ -1447,12 +1448,10 @@ fn run(self, builder: &Builder<'_>) -> Self::Output {
|
|
cfg.define("__NO_STRING_INLINES", None);
|
|
cfg.define("__NO_MATH_INLINES", None);
|
|
cfg.define("_LIBUNWIND_IS_BAREMETAL", None);
|
|
- cfg.define("__LIBUNWIND_IS_NATIVE_ONLY", None);
|
|
cfg.define("NDEBUG", None);
|
|
}
|
|
if self.target.is_windows() {
|
|
cfg.define("_LIBUNWIND_HIDE_SYMBOLS", "1");
|
|
- cfg.define("_LIBUNWIND_IS_NATIVE_ONLY", "1");
|
|
}
|
|
}
|
|
|