[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210323032624.1039422-4-mpe@ellerman.id.au>
Date: Tue, 23 Mar 2021 14:26:23 +1100
From: Michael Ellerman <mpe@...erman.id.au>
To: rust-for-linux@...r.kernel.org
Cc: linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org
Subject: [PATCH 3/4] powerpc/rust: Add target.json for ppc64le
Based on the x86 and arm64 versions, as well as output from:
$ rustc +nightly -Z unstable-options --target=powerpc64le-unknown-linux-gnu --print target-spec-json
Notably disables altivec, vsx and hard-float.
The very cryptic data-layout:
"data-layout": "e-m:e-i64:64-n32:64-S128",
Has the following meaning:
e: little endian
m:e ELF name mangling
i64:64 64-bit integers 64-bit aligned
n32:64 Native integer widths, 32-bit and 64-bit.
S128 16-byte stack alignment
Those all come from the rustc output, with the exception of the stack
alignment. We obviously do have 8-bit & 16-bit integer types, but I'm
not sure if there's any need to specify that.
ppc64le only for now. We'll eventually need to come up with some way to
change the target.json that's used based on more than just $(ARCH).
Signed-off-by: Michael Ellerman <mpe@...erman.id.au>
---
arch/powerpc/rust/target.json | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 arch/powerpc/rust/target.json
diff --git a/arch/powerpc/rust/target.json b/arch/powerpc/rust/target.json
new file mode 100644
index 000000000000..1e53f8308092
--- /dev/null
+++ b/arch/powerpc/rust/target.json
@@ -0,0 +1,30 @@
+{
+ "arch": "powerpc64",
+ "code-mode": "kernel",
+ "cpu": "ppc64le",
+ "data-layout": "e-m:e-i64:64-n32:64",
+ "env": "gnu",
+ "features": "-altivec,-vsx,-hard-float",
+ "function-sections": false,
+ "is-builtin": true,
+ "linker-flavor": "gcc",
+ "linker-is-gnu": true,
+ "llvm-target": "powerpc64le-elf",
+ "max-atomic-width": 64,
+ "os": "none",
+ "panic-strategy": "abort",
+ "position-independent-executables": true,
+ "pre-link-args": {
+ "gcc": [
+ "-Wl,--as-needed",
+ "-Wl,-z,noexecstack",
+ "-m64"
+ ]
+ },
+ "relocation-model": "static",
+ "relro-level": "full",
+ "target-family": "unix",
+ "target-mcount": "_mcount",
+ "target-endian": "little",
+ "target-pointer-width": "64"
+}
--
2.25.1
Powered by blists - more mailing lists