* [PATCH 1/2] rust: Upgrade 1.91.1 -> 1.92.0
@ 2025-12-22 9:38 Yash.Shinde
2025-12-22 9:38 ` [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test Yash.Shinde
0 siblings, 1 reply; 5+ messages in thread
From: Yash.Shinde @ 2025-12-22 9:38 UTC (permalink / raw)
To: openembedded-core
Cc: Sundeep.Kokkonda, randy.macleod, Yash.Shinde, SunilKumar.Dora,
hemanth.250302
From: Hemanth Kumar M D <hemanth.250302@gmail.com>
https://blog.rust-lang.org/2025/12/11/Rust-1.92.0/
Rust changes: https://github.com/rust-lang/rust/releases/tag/1.92.0
Cargo changes: https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-192-2025-12-11
Test results summary:
rust v1.92.0
+-----------+--------+---------+
| Machine | Passed | Ignored |
+-----------+--------+---------+
| arm-32 | 30,317 | 1,687 |
| arm-64 | 30,426 | 1,617 |
| x86-32 | 30,335 | 1,664 |
| x86-64 | 30,587 | 1,414 |
| riscv-64 | 30,426 | 1,617 |
+-----------+--------+---------+
Test results difference (1.92.0-1.91.1):
+-----------+--------+---------+
| Machine | Passed | Ignored |
+-----------+--------+---------+
| arm-32 | +349 | +177 |
| arm-64 | +516 | +170 |
| x86-32 | +264 | +217 |
| x86-64 | +358 | +167 |
| riscv-64 | +281 | +145 |
+-----------+--------+---------+
Note: The increase in ignored tests is not due to any additional ignores added in OE.
These are primarily upstream-defined ignores introduced in Rust 1.92.0, likely due to
architecture-specific constraints or target configuration differences. The only OE-side
ignore added is for the no_std simple-runs test on 32-bit ARM, limited to a known upstream
issue (rust-lang/rust#146996) and can be reverted once the issue is resolved.
Signed-off-by: Hemanth Kumar M D <hemanth.250302@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
---
meta/conf/distro/include/tcmode-default.inc | 2 +-
.../rust/{cargo_1.91.1.bb => cargo_1.92.0.bb} | 0
...ibstd-rs_1.91.1.bb => libstd-rs_1.92.0.bb} | 0
....91.1.bb => rust-cross-canadian_1.92.0.bb} | 0
meta/recipes-devtools/rust/rust-snapshot.inc | 78 +++++++++----------
meta/recipes-devtools/rust/rust-source.inc | 2 +-
.../rust/{rust_1.91.1.bb => rust_1.92.0.bb} | 0
7 files changed, 41 insertions(+), 41 deletions(-)
rename meta/recipes-devtools/rust/{cargo_1.91.1.bb => cargo_1.92.0.bb} (100%)
rename meta/recipes-devtools/rust/{libstd-rs_1.91.1.bb => libstd-rs_1.92.0.bb} (100%)
rename meta/recipes-devtools/rust/{rust-cross-canadian_1.91.1.bb => rust-cross-canadian_1.92.0.bb} (100%)
rename meta/recipes-devtools/rust/{rust_1.91.1.bb => rust_1.92.0.bb} (100%)
diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 20acf3524f..c6e00dea5e 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -12,7 +12,7 @@ PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
GCCVERSION ?= "15.%"
SDKGCCVERSION ?= "${GCCVERSION}"
GLIBCVERSION ?= "2.42%"
-RUSTVERSION ?= "1.91.1%"
+RUSTVERSION ?= "1.92.0%"
PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
diff --git a/meta/recipes-devtools/rust/cargo_1.91.1.bb b/meta/recipes-devtools/rust/cargo_1.92.0.bb
similarity index 100%
rename from meta/recipes-devtools/rust/cargo_1.91.1.bb
rename to meta/recipes-devtools/rust/cargo_1.92.0.bb
diff --git a/meta/recipes-devtools/rust/libstd-rs_1.91.1.bb b/meta/recipes-devtools/rust/libstd-rs_1.92.0.bb
similarity index 100%
rename from meta/recipes-devtools/rust/libstd-rs_1.91.1.bb
rename to meta/recipes-devtools/rust/libstd-rs_1.92.0.bb
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian_1.91.1.bb b/meta/recipes-devtools/rust/rust-cross-canadian_1.92.0.bb
similarity index 100%
rename from meta/recipes-devtools/rust/rust-cross-canadian_1.91.1.bb
rename to meta/recipes-devtools/rust/rust-cross-canadian_1.92.0.bb
diff --git a/meta/recipes-devtools/rust/rust-snapshot.inc b/meta/recipes-devtools/rust/rust-snapshot.inc
index c6f9031e65..4314734df4 100644
--- a/meta/recipes-devtools/rust/rust-snapshot.inc
+++ b/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -4,56 +4,56 @@
## The exact (previous) version that has been used is specified in the source tarball.
## The version is replicated here.
-SNAPSHOT_VERSION = "1.90.0"
+SNAPSHOT_VERSION = "1.91.0"
-SRC_URI[rustc-snapshot-aarch64.sha256sum] = "4e1a9987a11d7d91f0d5afbf5333feb62f44172e4a31f33ce7246549003217f2"
-SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "4952abb7d9d3ed7cea4f7ea44dcb23dc67631fae4ac44a5f059b90a4b5e9223f"
-SRC_URI[cargo-snapshot-aarch64.sha256sum] = "bd8d1da6fe88ea7e29338f24277c22156267447adbfc47d690467ad32d02c2a7"
-SRC_URI[clippy-snapshot-aarch64.sha256sum] = "1a7f969c5712c17d960d6fba8235b33f264a9484b369dc388766a540f1ba464f"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "f3ea3c964b7f3b884337f2d411764032bbd1722d7f55592a547cbb29afd87c03"
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "ff23dc81f796d64e34e866a44fd0bcae726e34014835369b8f9393a544167eca"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "003d7008219ca0d225ad1dfa301f7c079b123499430ee0780c85782e0878eeff"
+SRC_URI[clippy-snapshot-aarch64.sha256sum] = "a5f8bd961fb30962144d2f68be0bdd1014cf07110323087b0d6a68251a7a4eca"
-SRC_URI[rustc-snapshot-i686.sha256sum] = "3b33cef77f9a57d592beb5117d933134bc76258006e6d4f9aed2969d20c75742"
-SRC_URI[rust-std-snapshot-i686.sha256sum] = "dc4bffa768326e0cc47d6b129bcb891af6e7b7bf09ec92bca45e49420b9837bd"
-SRC_URI[cargo-snapshot-i686.sha256sum] = "c1e9b24bbfa95550b5dba9de2045a4c906bea108625781758692b2a407428391"
-SRC_URI[clippy-snapshot-i686.sha256sum] = "3e902971ef6b44ccb804af73aba5dc8c6199ed09a76f178b0eed6f53f7f56eab"
+SRC_URI[rustc-snapshot-i686.sha256sum] = "bf718b184d6ace8fab0012835d129130a6dd6a8d78f4f742ae9308a86b96dfc5"
+SRC_URI[rust-std-snapshot-i686.sha256sum] = "059fe4b9802c3cb64b539cc501ff5e64f8d750573009c3004fd0b583b3f50d39"
+SRC_URI[cargo-snapshot-i686.sha256sum] = "92486e31c070667681328ad57dd3bd4ca1e3d37958540d622b2afda9b67fbe3d"
+SRC_URI[clippy-snapshot-i686.sha256sum] = "14cae2980accb8536ae700bb7ec6a3b540a06d84e7a4c71db1c7f05a17b1edbd"
-SRC_URI[rustc-snapshot-loongarch64.sha256sum] = "aca7ee7f0d98e34dafa367cef9c35626d37cf8334f356498aa2bda2fc02206b3"
-SRC_URI[rust-std-snapshot-loongarch64.sha256sum] = "cb779575cec151223c3c144bc9ca957530fa510e36b32bc9f35bbb1b7dde9e2f"
-SRC_URI[cargo-snapshot-loongarch64.sha256sum] = "6ae37dc8eb3ff4655053a39d5f973613a82a8a8e2fff42c423ca33d8cf19e6c1"
-SRC_URI[clippy-snapshot-loongarch64.sha256sum] = "847b3d4bd3d2be23bafbb90cd2ed5e1bf1aacb2e7152e7d2f99bee1078aa0eaa"
+SRC_URI[rustc-snapshot-loongarch64.sha256sum] = "04bdbb954f48fcd0b125fbddbf3e59841ec81c58ff858471f7977c8343d9a73c"
+SRC_URI[rust-std-snapshot-loongarch64.sha256sum] = "cb0c3c2704add4d1271713ff87e1b7a8a4f756b4dc9f580b62953532efd0f7b9"
+SRC_URI[cargo-snapshot-loongarch64.sha256sum] = "9437727091d30d73a987e2c56463a2de4f01fb69cfd229617e2f8a7d8de5c05a"
+SRC_URI[clippy-snapshot-loongarch64.sha256sum] = "060a0eb3ee236e8a3bfb2cad9495165d755ea60d32e62ce85f12ad17c26afedf"
-SRC_URI[rustc-snapshot-powerpc.sha256sum] = "c5d898ca92063d634011525557f2acabc65d4ea268022e7005f99b6ba917357b"
-SRC_URI[rust-std-snapshot-powerpc.sha256sum] = "756d1bbd66ebb0d4d575b650a8a94d52546f6892bd2f864410411f6027ed879f"
-SRC_URI[cargo-snapshot-powerpc.sha256sum] = "5b160a2bf0e6f470b83c5988db5b6f02b6d65d3d97a9b965acbfe940b4143b34"
-SRC_URI[clippy-snapshot-powerpc.sha256sum] = "42ac7480dcac12a843803f5ee398d2a42389359178774cab20c66eda4f6927a5"
+SRC_URI[rustc-snapshot-powerpc.sha256sum] = "c625de10cbfd21031f71fa6fdd50ccaffd449744614ef1f57ee3cefe80c57792"
+SRC_URI[rust-std-snapshot-powerpc.sha256sum] = "d5ecd84b78eefaf30fb65ec169af1806bd06d0b5bbe166bf010b058c9c59d27f"
+SRC_URI[cargo-snapshot-powerpc.sha256sum] = "1f8f0ac1b05acb7cc50592ca39ec78e374093a0701405e8ea1894bb64a7422cd"
+SRC_URI[clippy-snapshot-powerpc.sha256sum] = "425e5a1a72cc20c476416682cb5df4222c0b9c28fbb9818d4d8f505ccea578e3"
-SRC_URI[rustc-snapshot-powerpc64.sha256sum] = "7adbc3c317a73b7d504e171d65a2b0e93953e3e572dab99acabe91140101f81d"
-SRC_URI[rust-std-snapshot-powerpc64.sha256sum] = "16daac5dc6994c03ab3b8c4e6e5e52c41f5fc5846acea08f4fdf0759cc273aa2"
-SRC_URI[cargo-snapshot-powerpc64.sha256sum] = "fdf90d22476c88d5b9cf8a3ac0937d0b9c6b7dafbf6b3afde369c2f5b8faec88"
-SRC_URI[clippy-snapshot-powerpc64.sha256sum] = "071e06a50d5b2975905bb2d6211f2d2372ab0dbd50b7b0097168cb64e77a4bb0"
+SRC_URI[rustc-snapshot-powerpc64.sha256sum] = "139a077f72197ce73031dae7cd2156fb6718b09fe9a3f4008266d34fb8d09ae6"
+SRC_URI[rust-std-snapshot-powerpc64.sha256sum] = "ac046a72a957bf9fd1213e95d46d7ca431a6704f63e99c759ccdd9ae7c07f7d9"
+SRC_URI[cargo-snapshot-powerpc64.sha256sum] = "abc14cced999e0d5f0ec75f10af33998dcaef39fab27b8e2c63b93ca0b79f2ab"
+SRC_URI[clippy-snapshot-powerpc64.sha256sum] = "b8129667c5b30963698466b7edeef4c5a1c869e78b5f9218fcf1426defa5cea9"
-SRC_URI[rustc-snapshot-powerpc64le.sha256sum] = "e87b8eb926a65211a99f6712ff376c5950b4b11c67ed7f92019da27a34ae7085"
-SRC_URI[rust-std-snapshot-powerpc64le.sha256sum] = "eac29f92ccd335c51553c362c7a6d3de2eb7071b5ae3839470e351a6a3ebdb77"
-SRC_URI[cargo-snapshot-powerpc64le.sha256sum] = "f029151dfeed6570b8b347e04a5bb7dcb9c59d8e5454c535c05bb5069c216354"
-SRC_URI[clippy-snapshot-powerpc64le.sha256sum] = "12d19dbec34c5a35cd285fe74dcd0226563c0b25be5d041479744060e9374c98"
+SRC_URI[rustc-snapshot-powerpc64le.sha256sum] = "c526302dcf4f1627525b0eef3ef4181bea801f119c4a0963c3675b390cba164f"
+SRC_URI[rust-std-snapshot-powerpc64le.sha256sum] = "c79c071fd14ef094c1a2e750f19795e7e162f4237bf92299885c0d56fa6017fe"
+SRC_URI[cargo-snapshot-powerpc64le.sha256sum] = "704bfa80ffeeafacb8f13043873e20e1b9c4a5e785ee6c5e7d0e5828fc1f0c8b"
+SRC_URI[clippy-snapshot-powerpc64le.sha256sum] = "1571b18b39f97d808b9f10ed2697b9d87bc3959abf858bfcd3baf9eaf8d5d548"
-SRC_URI[rustc-snapshot-riscv64gc.sha256sum] = "11ae522969c6b18ad4b5a1ae229473de59406af7ab2e831acb43ee247a16b58d"
-SRC_URI[rust-std-snapshot-riscv64gc.sha256sum] = "675dc5556d9d879101d2401b693fcf79edac8f00a49249e2e0f19cecd172ce51"
-SRC_URI[cargo-snapshot-riscv64gc.sha256sum] = "8a09de014f7cec749b338c6636d190a1b73fd377bab6a223eb715d3c76c49e79"
-SRC_URI[clippy-snapshot-riscv64gc.sha256sum] = "02338e25b3d2b61d9dbee7bee4c9ed148f18e2d010c6297ffd36df98042f41a2"
+SRC_URI[rustc-snapshot-riscv64gc.sha256sum] = "7c3d4ceaa630ddb45bcd538c687637a349b2c3e18634a2b944178a7b4b42a4cc"
+SRC_URI[rust-std-snapshot-riscv64gc.sha256sum] = "7486237c83844d48ac96b67241ef0c1f4f702ceb74c44721f6f8660c3068dede"
+SRC_URI[cargo-snapshot-riscv64gc.sha256sum] = "8946ea952e5a516e8bb6fd859d9798902877e01bd4508b717f8b9fd915019ad5"
+SRC_URI[clippy-snapshot-riscv64gc.sha256sum] = "97feb6d6b2158b410a83c40d7eeba1e97220e505eae6666aa09d112665cc8dc1"
-SRC_URI[rustc-snapshot-s390x.sha256sum] = "274daef5a69c8812411248a4afea4f58a096c978dffba6b1198da8e3b5a02de7"
-SRC_URI[rust-std-snapshot-s390x.sha256sum] = "e3e7e3dbc65616eebc69e642d9042363ec38d7f50393ef816cc5238ec475f3f5"
-SRC_URI[cargo-snapshot-s390x.sha256sum] = "468ace270ee4edac0a10185ea876ea555e41bacc0137ff08985d2155fe8cc777"
-SRC_URI[clippy-snapshot-s390x.sha256sum] = "bb0a9483a36fdbdab08b433613b374c036779d247a8d508e31265193c3759a8d"
+SRC_URI[rustc-snapshot-s390x.sha256sum] = "073c3817f91ff425ffa141a6db215d54b50db5a8abe08fed593b7597687bdf94"
+SRC_URI[rust-std-snapshot-s390x.sha256sum] = "454ecc9a53dda63762f3d1d92b7e4f4459c58c89d39a4178cce1fd9fd0ce09b5"
+SRC_URI[cargo-snapshot-s390x.sha256sum] = "3af10597a739402d6ecb3db85abaf62e12f7b298d2df6377c3c80e09a54f91b6"
+SRC_URI[clippy-snapshot-s390x.sha256sum] = "8d3bb8aa79abcfe5c24a37651d09dd356f994663699e65e7dd9978514a5ebf31"
-SRC_URI[rustc-snapshot-x86_64.sha256sum] = "48c2a42de9e92fcae8c24568f5fe40d5734696a6f80e83cc6d46eef1a78f13c9"
-SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "663f4ab7945b392d5e5294dec1b050a66820a20e86f084ec37eeb0f2f7ff5569"
-SRC_URI[cargo-snapshot-x86_64.sha256sum] = "9853db03d68578a30972e2755c89c66aec035fec641cf8f3a7117c81eec2578d"
-SRC_URI[clippy-snapshot-x86_64.sha256sum] = "5b6466419693a05365827378145014a37ae74fb2948fab390d5210a524792ed8"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "a7169e8cb6174af2f45717703370363d8de82ce55f6ccba185893045b9370874"
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "89e6520b16c12b43526440298d2da0dcb70747c5cc2d0b8e47d39b5da9aeef49"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "7103c03fb8abe85b23307005a9dfe4f01c826a89945d84b96fa2d03fd4d2d138"
+SRC_URI[clippy-snapshot-x86_64.sha256sum] = "0087c3d58d2fdeafa89830c299b1026c9f981b49835db89c922b3c6a299b3225"
-SRC_URI[rust-std-snapshot-i586.sha256sum] = "46eab5c41bf9160a31a53560ff5fc43308c0998cde952533e76fadef66799553"
+SRC_URI[rust-std-snapshot-i586.sha256sum] = "47e91cba208b1f87348e7b6a49274ebb4364651a4191fa67e6850e7813e26ad5"
-SRC_URI[rust-std-snapshot-sparc64.sha256sum] = "c204ecb424090cc6c0100cef3013f8636d29f288db99c037578aee7d2672a711"
+SRC_URI[rust-std-snapshot-sparc64.sha256sum] = "4f7bffb09cf5a0c25dda9b51811c60996eb1ae06a277c1e836980c21b3a44766"
SRC_URI += " \
${RUST_DIST_SERVER}/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
index f714487428..d7d44510e4 100644
--- a/meta/recipes-devtools/rust/rust-source.inc
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -9,7 +9,7 @@ SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;n
file://revert-link-std-statically-in-rustc_driver-feature.patch;patchdir=${RUSTSRC} \
file://0001-riscv32-Define-plain-syscalls-as-their-time64-varian.patch;patchdir=${RUSTSRC} \
"
-SRC_URI[rust.sha256sum] = "66401bb815e236cc6b2aacbbe23b61b286c1fe27a67902e7c0222cfe77b3dbab"
+SRC_URI[rust.sha256sum] = "ebee170bfe4c4dfc59521a101de651e5534f4dae889756a5c97ca9ea40d0c307"
RUSTSRC = "${UNPACKDIR}/rustc-${RUST_VERSION}-src"
diff --git a/meta/recipes-devtools/rust/rust_1.91.1.bb b/meta/recipes-devtools/rust/rust_1.92.0.bb
similarity index 100%
rename from meta/recipes-devtools/rust/rust_1.91.1.bb
rename to meta/recipes-devtools/rust/rust_1.92.0.bb
--
2.49.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test
2025-12-22 9:38 [PATCH 1/2] rust: Upgrade 1.91.1 -> 1.92.0 Yash.Shinde
@ 2025-12-22 9:38 ` Yash.Shinde
2025-12-22 22:40 ` Randy MacLeod
0 siblings, 1 reply; 5+ messages in thread
From: Yash.Shinde @ 2025-12-22 9:38 UTC (permalink / raw)
To: openembedded-core
Cc: Sundeep.Kokkonda, randy.macleod, Yash.Shinde, SunilKumar.Dora,
hemanth.250302
From: Hemanth Kumar M D <hemanth.250302@gmail.com>
Rust 1.92.0 adds new test that require unwind table support to be
enabled by default. Set `default-uwtable = true` in the generated
target spec to match upstream behavior.
ref:https://github.com/rust-lang/rust/commit/fe66eaa67acc47525db6f13cf97d54780d87b805
Also ignore the no_std simple-runs UI test on ARM targets. The test
fails with panic=abort due to a known unwind table issue on 32-bit ARM
https://github.com/rust-lang/rust/issues/146996
Signed-off-by: Hemanth Kumar M D <hemanth.250302@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
---
meta/classes-recipe/rust-target-config.bbclass | 1 +
.../rust/files/rust-oe-selftest.patch | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass
index 33a290412e..2a06c4ae8b 100644
--- a/meta/classes-recipe/rust-target-config.bbclass
+++ b/meta/classes-recipe/rust-target-config.bbclass
@@ -418,6 +418,7 @@ def rust_gen_target(d, thing, wd, arch):
tspec['llvm-floatabi'] = "soft"
elif fpu == "hard":
tspec['llvm-floatabi'] = "hard"
+ tspec['default-uwtable'] = True
tspec['dynamic-linking'] = True
tspec['executables'] = True
tspec['linker-is-gnu'] = True
diff --git a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
index b39b326455..d1fba81612 100644
--- a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
+++ b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
@@ -254,3 +254,15 @@ index a3562f2fd93..d4e52ed91be 100644
fn linux_hwcap2_aarch64() {
let file =
concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv");
+diff --git a/tests/ui/no_std/simple-runs.rs b/tests/ui/no_std/simple-runs.rs
+index af44dfe..e6674e5 100644
+--- a/tests/ui/no_std/simple-runs.rs
++++ b/tests/ui/no_std/simple-runs.rs
+@@ -2,6 +2,7 @@
+
+ //@ run-pass
+ //@ compile-flags: -Cpanic=abort
++//@ ignore-arm FIXME(#146996)
+ //@ ignore-wasm different `main` convention
+
+ #![feature(lang_items)]
--
2.49.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test
2025-12-22 9:38 ` [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test Yash.Shinde
@ 2025-12-22 22:40 ` Randy MacLeod
2025-12-23 6:10 ` Yash Shinde
2025-12-24 4:03 ` Sunil Kumar Dora
0 siblings, 2 replies; 5+ messages in thread
From: Randy MacLeod @ 2025-12-22 22:40 UTC (permalink / raw)
To: Yash.Shinde, openembedded-core
Cc: Sundeep.Kokkonda, SunilKumar.Dora, hemanth.250302, nick.owens
[-- Attachment #1: Type: text/plain, Size: 3045 bytes --]
On 2025-12-22 4:38 a.m., Yash.Shinde@windriver.com wrote:
> From: Hemanth Kumar M D<hemanth.250302@gmail.com>
>
> Rust 1.92.0 adds new test that require unwind table support to be
> enabled by default. Set `default-uwtable = true` in the generated
> target spec to match upstream behavior.
>
> ref:https://github.com/rust-lang/rust/commit/fe66eaa67acc47525db6f13cf97d54780d87b805
>
> Also ignore the no_std simple-runs UI test on ARM targets. The test
> fails with panic=abort due to a known unwind table issue on 32-bit ARM
>
> https://github.com/rust-lang/rust/issues/146996
Okay and I'm glad to see the upstream issues linked.
Should we make some of these tspec decisions set-able by well-informed
users?
Maybe they can already do that using this horridly named "FEATURES"
variable.
(rename to RUST_FEATURES maybe ?)
For example, this bug:
Unable to produce a Rust static binary with TCLIBC=musl (oe-core/master)
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16076
seems to be due to hard-coding dynamic-linking to True below just after
your:
+ tspec['default-uwtable'] = True
change.
I've CCed Nick in case you guys have a quick work-around to enable
static linking.
../Randy
>
> Signed-off-by: Hemanth Kumar M D<hemanth.250302@gmail.com>
> Signed-off-by: Yash Shinde<Yash.Shinde@windriver.com>
> ---
> meta/classes-recipe/rust-target-config.bbclass | 1 +
> .../rust/files/rust-oe-selftest.patch | 12 ++++++++++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass
> index 33a290412e..2a06c4ae8b 100644
> --- a/meta/classes-recipe/rust-target-config.bbclass
> +++ b/meta/classes-recipe/rust-target-config.bbclass
> @@ -418,6 +418,7 @@ def rust_gen_target(d, thing, wd, arch):
> tspec['llvm-floatabi'] = "soft"
> elif fpu == "hard":
> tspec['llvm-floatabi'] = "hard"
> + tspec['default-uwtable'] = True
> tspec['dynamic-linking'] = True
> tspec['executables'] = True
> tspec['linker-is-gnu'] = True
> diff --git a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
> index b39b326455..d1fba81612 100644
> --- a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
> +++ b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
> @@ -254,3 +254,15 @@ index a3562f2fd93..d4e52ed91be 100644
> fn linux_hwcap2_aarch64() {
> let file =
> concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv");
> +diff --git a/tests/ui/no_std/simple-runs.rs b/tests/ui/no_std/simple-runs.rs
> +index af44dfe..e6674e5 100644
> +--- a/tests/ui/no_std/simple-runs.rs
> ++++ b/tests/ui/no_std/simple-runs.rs
> +@@ -2,6 +2,7 @@
> +
> + //@ run-pass
> + //@ compile-flags: -Cpanic=abort
> ++//@ ignore-arm FIXME(#146996)
> + //@ ignore-wasm different `main` convention
> +
> + #![feature(lang_items)]
--
# Randy MacLeod
# Wind River Linux
[-- Attachment #2: Type: text/html, Size: 4624 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test
2025-12-22 22:40 ` Randy MacLeod
@ 2025-12-23 6:10 ` Yash Shinde
2025-12-24 4:03 ` Sunil Kumar Dora
1 sibling, 0 replies; 5+ messages in thread
From: Yash Shinde @ 2025-12-23 6:10 UTC (permalink / raw)
To: Randy MacLeod, openembedded-core
Cc: Sundeep.Kokkonda, SunilKumar.Dora, hemanth.250302, nick.owens
[-- Attachment #1: Type: text/plain, Size: 3389 bytes --]
On 23-12-2025 04:10, Randy MacLeod wrote:
> On 2025-12-22 4:38 a.m., Yash.Shinde@windriver.com wrote:
>> From: Hemanth Kumar M D<hemanth.250302@gmail.com>
>>
>> Rust 1.92.0 adds new test that require unwind table support to be
>> enabled by default. Set `default-uwtable = true` in the generated
>> target spec to match upstream behavior.
>>
>> ref:https://github.com/rust-lang/rust/commit/fe66eaa67acc47525db6f13cf97d54780d87b805
>>
>> Also ignore the no_std simple-runs UI test on ARM targets. The test
>> fails with panic=abort due to a known unwind table issue on 32-bit ARM
>>
>> https://github.com/rust-lang/rust/issues/146996
>
> Okay and I'm glad to see the upstream issues linked.
>
> Should we make some of these tspec decisions set-able by well-informed
> users?
>
> Maybe they can already do that using this horridly named "FEATURES"
> variable.
> (rename to RUST_FEATURES maybe ?)
>
Most of the tspec features are set explicitly here.
We are analyzing on the possibility to check and set them using FEATURES
to make
user-configurable.
Regards,
Yash
>
> For example, this bug:
>
> Unable to produce a Rust static binary with TCLIBC=musl (oe-core/master)
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=16076
>
> seems to be due to hard-coding dynamic-linking to True below just
> after your:
>
> + tspec['default-uwtable'] = True
>
>
> change.
>
> I've CCed Nick in case you guys have a quick work-around to enable
> static linking.
>
> ../Randy
>
>> Signed-off-by: Hemanth Kumar M D<hemanth.250302@gmail.com>
>> Signed-off-by: Yash Shinde<Yash.Shinde@windriver.com>
>> ---
>> meta/classes-recipe/rust-target-config.bbclass | 1 +
>> .../rust/files/rust-oe-selftest.patch | 12 ++++++++++++
>> 2 files changed, 13 insertions(+)
>>
>> diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass
>> index 33a290412e..2a06c4ae8b 100644
>> --- a/meta/classes-recipe/rust-target-config.bbclass
>> +++ b/meta/classes-recipe/rust-target-config.bbclass
>> @@ -418,6 +418,7 @@ def rust_gen_target(d, thing, wd, arch):
>> tspec['llvm-floatabi'] = "soft"
>> elif fpu == "hard":
>> tspec['llvm-floatabi'] = "hard"
>> + tspec['default-uwtable'] = True
>> tspec['dynamic-linking'] = True
>> tspec['executables'] = True
>> tspec['linker-is-gnu'] = True
>> diff --git a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> index b39b326455..d1fba81612 100644
>> --- a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> +++ b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> @@ -254,3 +254,15 @@ index a3562f2fd93..d4e52ed91be 100644
>> fn linux_hwcap2_aarch64() {
>> let file =
>> concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv");
>> +diff --git a/tests/ui/no_std/simple-runs.rs b/tests/ui/no_std/simple-runs.rs
>> +index af44dfe..e6674e5 100644
>> +--- a/tests/ui/no_std/simple-runs.rs
>> ++++ b/tests/ui/no_std/simple-runs.rs
>> +@@ -2,6 +2,7 @@
>> +
>> + //@ run-pass
>> + //@ compile-flags: -Cpanic=abort
>> ++//@ ignore-arm FIXME(#146996)
>> + //@ ignore-wasm different `main` convention
>> +
>> + #![feature(lang_items)]
>
>
> --
> # Randy MacLeod
> # Wind River Linux
--
Regards,
Yash Shinde
[-- Attachment #2: Type: text/html, Size: 5546 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test
2025-12-22 22:40 ` Randy MacLeod
2025-12-23 6:10 ` Yash Shinde
@ 2025-12-24 4:03 ` Sunil Kumar Dora
1 sibling, 0 replies; 5+ messages in thread
From: Sunil Kumar Dora @ 2025-12-24 4:03 UTC (permalink / raw)
To: Randy MacLeod, Yash.Shinde, openembedded-core
Cc: Sundeep.Kokkonda, hemanth.250302, nick.owens
[-- Attachment #1: Type: text/plain, Size: 4912 bytes --]
Hi Randy,
On 12/23/2025 4:10 AM, Randy MacLeod wrote:
> On 2025-12-22 4:38 a.m., Yash.Shinde@windriver.com wrote:
>> From: Hemanth Kumar M D<hemanth.250302@gmail.com>
>>
>> Rust 1.92.0 adds new test that require unwind table support to be
>> enabled by default. Set `default-uwtable = true` in the generated
>> target spec to match upstream behavior.
>>
>> ref:https://github.com/rust-lang/rust/commit/fe66eaa67acc47525db6f13cf97d54780d87b805
>>
>> Also ignore the no_std simple-runs UI test on ARM targets. The test
>> fails with panic=abort due to a known unwind table issue on 32-bit ARM
>>
>> https://github.com/rust-lang/rust/issues/146996
>
> Okay and I'm glad to see the upstream issues linked.
>
> Should we make some of these tspec decisions set-able by well-informed
> users?
>
> Maybe they can already do that using this horridly named "FEATURES"
> variable.
> (rename to RUST_FEATURES maybe ?)
>
The existing FEATURES variables in the .bbclass is currently used for
low-level CPU instructions.
As you suggested, RUST_FEATURE variable will allow us to keep H/W tuning
separate from
high-level compiler policy. I will discuss with team.
>
>
> For example, this bug:
>
> Unable to produce a Rust static binary with TCLIBC=musl (oe-core/master)
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=16076
>
Although the bug report did not include a specific recipe, I used
ripgrep as a reference
to validate the issue and was able to build a fully static musl binary.
I found that changing *tspec['dynamic-linking']* from *true *to *false
*in the .bbclass alone was not enough
to produce static binary. The problem had two parts.
First, at the target specification level, rust-target-config.bbclass
forces dynamic-linking to true.
Because of this, the compiler assumes the target is dynamic and ignores
requests for static linking.
As a result, it still produces a dynamic PIE binary that depends on the
musl dynamic loader (ld-musl.so).
Second, at the linker wrapper level, *target-rust-ccld* enforces dynamic
linking by default.
It automatically adds flags such as*-Wl,-Bdynamic* and *-pie*. This
conflicts with the compiler’s static intent
and causes it to pick shared libraries from the sysroot, which leads to
the error
“*attempted static linking of dynamic object*”.
To work around this and meet static musl requirements, I applied
recipe-specific changes to bypass the wrapper’s
enforcement and handle circular dependencies and crate-level leakage.
With these adjustments, the final link correctly uses static archives
instead of falling back to shared objects.
I will update the bug report with these findings.
>
>
> seems to be due to hard-coding dynamic-linking to True below just
> after your:
>
> + tspec['default-uwtable'] = True
>
>
> change.
>
> I've CCed Nick in case you guys have a quick work-around to enable
> static linking.
>
> ../Randy
>
>> Signed-off-by: Hemanth Kumar M D<hemanth.250302@gmail.com>
>> Signed-off-by: Yash Shinde<Yash.Shinde@windriver.com>
>> ---
>> meta/classes-recipe/rust-target-config.bbclass | 1 +
>> .../rust/files/rust-oe-selftest.patch | 12 ++++++++++++
>> 2 files changed, 13 insertions(+)
>>
>> diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass
>> index 33a290412e..2a06c4ae8b 100644
>> --- a/meta/classes-recipe/rust-target-config.bbclass
>> +++ b/meta/classes-recipe/rust-target-config.bbclass
>> @@ -418,6 +418,7 @@ def rust_gen_target(d, thing, wd, arch):
>> tspec['llvm-floatabi'] = "soft"
>> elif fpu == "hard":
>> tspec['llvm-floatabi'] = "hard"
>> + tspec['default-uwtable'] = True
>> tspec['dynamic-linking'] = True
>> tspec['executables'] = True
>> tspec['linker-is-gnu'] = True
>> diff --git a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> index b39b326455..d1fba81612 100644
>> --- a/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> +++ b/meta/recipes-devtools/rust/files/rust-oe-selftest.patch
>> @@ -254,3 +254,15 @@ index a3562f2fd93..d4e52ed91be 100644
>> fn linux_hwcap2_aarch64() {
>> let file =
>> concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv");
>> +diff --git a/tests/ui/no_std/simple-runs.rs b/tests/ui/no_std/simple-runs.rs
>> +index af44dfe..e6674e5 100644
>> +--- a/tests/ui/no_std/simple-runs.rs
>> ++++ b/tests/ui/no_std/simple-runs.rs
>> +@@ -2,6 +2,7 @@
>> +
>> + //@ run-pass
>> + //@ compile-flags: -Cpanic=abort
>> ++//@ ignore-arm FIXME(#146996)
>> + //@ ignore-wasm different `main` convention
>> +
>> + #![feature(lang_items)]
>
>
> --
> # Randy MacLeod
> # Wind River Linux
[-- Attachment #2: Type: text/html, Size: 7504 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-12-24 4:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-22 9:38 [PATCH 1/2] rust: Upgrade 1.91.1 -> 1.92.0 Yash.Shinde
2025-12-22 9:38 ` [PATCH 2/2] rust: enable default uwtable and ignore arm no_std test Yash.Shinde
2025-12-22 22:40 ` Randy MacLeod
2025-12-23 6:10 ` Yash Shinde
2025-12-24 4:03 ` Sunil Kumar Dora
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox