s390x-unknown-linux-musl
Tier: 3
IBM z/Architecture (s390x) targets (including IBM Z and LinuxONE) running Linux.
Target maintainers
- Ulrich Weigand, ulrich.weigand@de.ibm.com, @uweigand
Requirements
This target requires:
- Linux Kernel version 3.2 or later
- musl 1.2.3 or later
Code generated by the target uses the z/Architecture ISA assuming a minimum architecture level of z10 (Eighth Edition of the z/Architecture Principles of Operation), and is compliant with the s390x ELF ABI.
Reference material:
Building the target
Because it is Tier 3, Rust does not yet ship pre-compiled artifacts for this target.
Therefore, you can build Rust with support for the target by adding it to the
target list in config.toml
, a sample configuration is shown below.
[build]
target = ["s390x-unknown-linux-musl"]
Building Rust programs
Rust does not yet ship pre-compiled artifacts for this target. To compile for this target, you will first need to build Rust with the target enabled (see "Building the target" above).
Testing
There are no special requirements for testing and running the target. For testing cross builds on the host, please refer to the "Cross-compilation toolchains and C code" section below.
Cross-compilation toolchains and C code
Rust code built using the target is compatible with C code compiled with
GCC or Clang using the s390x-unknown-linux-musl
target triple (via either
native or cross-compilation).
Depending on your system, you may need to configure the target to use the GNU
GCC linker. To use it, add the following to your .cargo/config.toml
:
[target.s390x-unknown-linux-musl]
linker = "s390x-linux-musl-gcc"
If your s390x-linux-musl-*
toolchain is not in your PATH
you may need to
configure additional settings:
[target.s390x-unknown-linux-musl]
# Adjust the paths to point at your toolchain
cc = "/TOOLCHAIN_PATH/bin/s390x-linux-musl-gcc"
cxx = "/TOOLCHAIN_PATH/bin/s390x-linux-musl-g++"
ar = "/TOOLCHAIN_PATH/bin/s390x-linux-musl-ar"
ranlib = "/TOOLCHAIN_PATH/bin/s390x-linux-musl-ranlib"
linker = "/TOOLCHAIN_PATH/bin/s390x-linux-musl-gcc"
To test cross compiled binaries on a non-s390x host, you can use
qemu
.