From: Deepesh Varatharajan Date: Thu, 17 Oct 2024 12:32:44 +0000 (-0700) Subject: rust-target-config: Update the data layout for x86-64 target X-Git-Tag: yocto-5.2~1556 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=96f11d299b32a32086eb3d890c88eb7ce42057b0;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git rust-target-config: Update the data layout for x86-64 target The data layout for x86-64 target was different in rust from llvm. It resulted in the following data layout error: -------------------------------------------------------------------------------------- error: data-layout for target `x86_64-linux`, `e-m:e-i64:64-f80:128-n8:16:32:64-S128`, differs from LLVM target's `x86_64-unknown-linux-gnu` default layout, `e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128` -------------------------------------------------------------------------------------- The issue was reported in meta-rust layer as: https://github.com/meta-rust/meta-rust/pull/442 Hence, the data layout for x86-64 is modified as per the llvm sources which fixes the issue. After running the testsuite with the modified data layout; it was observed that the "tests/codegen/i128-x86-align.rs" passed. The modified data layout fixed the scalar pair which resolved the testcase failure. Hence, the testcase has been removed from the exclude list. Signed-off-by: Deepesh Varatharajan Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass index 334f2e7d5fc..f7aa6c74d86 100644 --- a/meta/classes-recipe/rust-target-config.bbclass +++ b/meta/classes-recipe/rust-target-config.bbclass @@ -153,7 +153,7 @@ TARGET_C_INT_WIDTH[aarch64] = "32" MAX_ATOMIC_WIDTH[aarch64] = "128" ## x86_64-unknown-linux-{gnu, musl} -DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +DATA_LAYOUT[x86_64] = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" TARGET_ENDIAN[x86_64] = "little" TARGET_POINTER_WIDTH[x86_64] = "64" TARGET_C_INT_WIDTH[x86_64] = "32" diff --git a/meta/lib/oeqa/selftest/cases/rust.py b/meta/lib/oeqa/selftest/cases/rust.py index cbe6366f759..88d7bb95189 100644 --- a/meta/lib/oeqa/selftest/cases/rust.py +++ b/meta/lib/oeqa/selftest/cases/rust.py @@ -83,7 +83,6 @@ class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase): 'src/tools/tidy/src/', 'tests/assembly/asm/aarch64-outline-atomics.rs', 'tests/codegen/abi-main-signature-32bit-c-int.rs', - 'tests/codegen/i128-x86-align.rs', 'tests/codegen/issues/issue-122805.rs', 'tests/codegen/thread-local.rs', 'tests/mir-opt/',