Skip to content

add dynamically-linked musl targets #82556

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 13 commits into from
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/aarch64_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::aarch64_unknown_linux_musl::target();

base.llvm_target = "aarch64-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::arm_unknown_linux_musleabihf::target();

base.llvm_target = "armv6-unknown-linux-musleabihf".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::armv7_unknown_linux_musleabihf::target();

base.llvm_target = "armv7-unknown-linux-musleabihf".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
12 changes: 12 additions & 0 deletions compiler/rustc_target/src/spec/i586_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::i686_unknown_linux_musl::target();

base.options.cpu = "pentium4".to_string();
base.llvm_target = "i586-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::mips64_unknown_linux_muslabi64::target();

base.llvm_target = "mips64-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::mips64el_unknown_linux_muslabi64::target();

base.llvm_target = "mips64el-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/mips_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::mips_unknown_linux_musl::target();

base.llvm_target = "mips-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/mipsel_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::mipsel_unknown_linux_musl::target();

base.llvm_target = "mipsel-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
13 changes: 13 additions & 0 deletions compiler/rustc_target/src/spec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -626,22 +626,28 @@ supported_targets! {
("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
("mips-unknown-linux-dynmusl", mips_unknown_linux_dynmusl),
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
("mips64el-unknown-linux-gnuabi64", mips64el_unknown_linux_gnuabi64),
("mipsisa32r6-unknown-linux-gnu", mipsisa32r6_unknown_linux_gnu),
("mipsisa32r6el-unknown-linux-gnu", mipsisa32r6el_unknown_linux_gnu),
("mipsisa64r6-unknown-linux-gnuabi64", mipsisa64r6_unknown_linux_gnuabi64),
("mipsisa64r6el-unknown-linux-gnuabi64", mipsisa64r6el_unknown_linux_gnuabi64),
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
("mipsel-unknown-linux-dynmusl", mipsel_unknown_linux_dynmusl),
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
("powerpc-unknown-linux-dynmusl", powerpc_unknown_linux_dynmusl),
("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
("powerpc64-unknown-linux-dynmusl", powerpc64_unknown_linux_dynmusl),
("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
("powerpc64le-unknown-linux-dynmusl", powerpc64le_unknown_linux_dynmusl),
("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
("s390x-unknown-linux-musl", s390x_unknown_linux_musl),
("s390x-unknown-linux-dynmusl", s390x_unknown_linux_dynmusl),
("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu),
("sparc64-unknown-linux-gnu", sparc64_unknown_linux_gnu),
("arm-unknown-linux-gnueabi", arm_unknown_linux_gnueabi),
Expand All @@ -656,17 +662,24 @@ supported_targets! {
("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf),
("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf),
("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf),
("armv6-unknown-linux-dynmusleabihf", armv6_unknown_linux_dynmusleabihf),
("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi),
("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf),
("armv7-unknown-linux-dynmusleabihf", armv7_unknown_linux_dynmusleabihf),
("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu),
("aarch64-unknown-linux-musl", aarch64_unknown_linux_musl),
("aarch64-unknown-linux-dynmusl", aarch64_unknown_linux_dynmusl),
("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
("x86_64-unknown-linux-dynmusl", x86_64_unknown_linux_dynmusl),
("i686-unknown-linux-musl", i686_unknown_linux_musl),
("i586-unknown-linux-musl", i586_unknown_linux_musl),
("i586-unknown-linux-dynmusl", i586_unknown_linux_dynmusl),
("mips-unknown-linux-musl", mips_unknown_linux_musl),
("mipsel-unknown-linux-musl", mipsel_unknown_linux_musl),
("mips64-unknown-linux-muslabi64", mips64_unknown_linux_muslabi64),
("mips64-unknown-linux-dynmuslabi64", mips64_unknown_linux_dynmuslabi64),
("mips64el-unknown-linux-muslabi64", mips64el_unknown_linux_muslabi64),
("mips64el-unknown-linux-dynmuslabi64", mips64el_unknown_linux_dynmuslabi64),
("hexagon-unknown-linux-musl", hexagon_unknown_linux_musl),

("mips-unknown-linux-uclibc", mips_unknown_linux_uclibc),
Expand Down
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/powerpc64_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::powerpc64_unknown_linux_musl::target();

base.llvm_target = "powerpc64-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::powerpc64le_unknown_linux_musl::target();

base.llvm_target = "powerpc64le-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/powerpc_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::powerpc_unknown_linux_musl::target();

base.llvm_target = "powerpc-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/s390x_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::s390x_unknown_linux_musl::target();

base.llvm_target = "s390x-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/x86_64_unknown_linux_dynmusl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use crate::spec::Target;

pub fn target() -> Target {
let mut base = super::x86_64_unknown_linux_musl::target();

base.llvm_target = "x86_64-unknown-linux-musl".to_string();
base.options.crt_static_default = false;
base.options.static_position_independent_executables = true;

base
}
13 changes: 13 additions & 0 deletions src/doc/rustc/src/platform-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ target | std | host | notes
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
`aarch64-unknown-hermit` | ? | |
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
`aarch64-unknown-linux-dynmusl` | | | ARM64 Linux (Musl with dynamic linking)
`aarch64-unknown-netbsd` | ✓ | ✓ |
`aarch64-unknown-openbsd` | ✓ | ✓ | ARM64 OpenBSD
`aarch64-unknown-redox` | ? | | ARM64 Redox OS
Expand All @@ -168,16 +169,19 @@ target | std | host | notes
`armv4t-unknown-linux-gnueabi` | ? | |
`armv5te-unknown-linux-uclibceabi` | ? | | ARMv5TE Linux with uClibc
`armv6-unknown-freebsd` | ✓ | ✓ | ARMv6 FreeBSD
`armv6-unknown-linux-dynmusleabihf` | | | ARMv6 Linux (Musl with dynamic linking)
`armv6-unknown-netbsd-eabihf` | ? | |
`armv7-apple-ios` | ✓ | | ARMv7 iOS, Cortex-a8
`armv7-unknown-freebsd` | ✓ | ✓ | ARMv7 FreeBSD
`armv7-unknown-linux-dynmusleabihf` | | | ARMv7 Linux (Musl with dynamic linking)
`armv7-unknown-netbsd-eabihf` | ✓ | ✓ |
`armv7-wrs-vxworks-eabihf` | ? | |
`armv7a-none-eabihf` | * | | ARM Cortex-A, hardfloat
`armv7s-apple-ios` | ✓ | |
`avr-unknown-gnu-atmega328` | ✗ | | AVR. Requires `-Z build-std=core`
`hexagon-unknown-linux-musl` | ? | |
`i386-apple-ios` | ✓ | | 32-bit x86 iOS
`i586-unknown-linux-dynmusl` | | | 32-bit Pentium-class x86 Linux (Musl with dynamic linking)
`i686-apple-darwin` | ✓ | ✓ | 32-bit macOS (10.7+, Lion+)
`i686-pc-windows-msvc` | ✓ | | 32-bit Windows XP support
`i686-unknown-uefi` | ? | | 32-bit UEFI
Expand All @@ -187,28 +191,36 @@ target | std | host | notes
`i686-uwp-windows-gnu` | ? | |
`i686-uwp-windows-msvc` | ? | |
`i686-wrs-vxworks` | ? | |
`mips-unknown-linux-dynmusl` | | | MIPS Linux, o32 ABI, MUSL with dynamic linking
`mips-unknown-linux-uclibc` | ✓ | | MIPS Linux with uClibc
`mipsel-unknown-linux-dynmusl` | | | MIPS (LE) Linux, o32 ABI, MUSL with dynamic linking
`mipsel-unknown-linux-uclibc` | ✓ | | MIPS (LE) Linux with uClibc
`mipsel-unknown-none` | * | | Bare MIPS (LE) softfloat
`mipsel-sony-psp` | * | | MIPS (LE) Sony PlayStation Portable (PSP)
`mips64-unknown-linux-dynmuslabi64` | | | MIPS64 Linux, n64 ABI, MUSL with dynamic linking
`mips64el-unknown-linux-dynmuslabi64` | | | MIPS64 (LE) Linux, n64 ABI, MUSL with dynamic linking
`mipsisa32r6-unknown-linux-gnu` | ? | |
`mipsisa32r6el-unknown-linux-gnu` | ? | |
`mipsisa64r6-unknown-linux-gnuabi64` | ? | |
`mipsisa64r6el-unknown-linux-gnuabi64` | ? | |
`msp430-none-elf` | * | | 16-bit MSP430 microcontrollers
`powerpc-unknown-linux-gnuspe` | ✓ | | PowerPC SPE Linux
`powerpc-unknown-linux-musl` | ? | |
`powerpc-unknown-linux-dynmusl` | | |
`powerpc-unknown-netbsd` | ✓ | ✓ |
`powerpc-wrs-vxworks` | ? | |
`powerpc-wrs-vxworks-spe` | ? | |
`powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv1 and ELFv2)
`powerpc64-unknown-linux-musl` | ? | |
`powerpc64-unknown-linux-dynmusl` | | |
`powerpc64-wrs-vxworks` | ? | |
`powerpc64le-unknown-linux-musl` | ? | |
`powerpc64le-unknown-linux-dynmusl` | | |
`riscv64gc-unknown-linux-musl` | | | RISC-V Linux (kernel 4.20, musl 1.2.0)
`riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33)
`riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl + RISCV32 support patches)
`s390x-unknown-linux-musl` | | | S390x Linux (kernel 2.6.32, MUSL)
`s390x-unknown-linux-dynmusl` | | | S390x Linux (kernel 2.6.32, MUSL with dynamic linking)
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux
`sparc64-unknown-netbsd` | ✓ | ✓ | NetBSD/sparc64
`sparc64-unknown-openbsd` | ? | |
Expand All @@ -226,6 +238,7 @@ target | std | host | notes
`x86_64-unknown-hermit` | ? | |
`x86_64-unknown-hermit-kernel` | ? | | HermitCore kernel
`x86_64-unknown-l4re-uclibc` | ? | |
`x86_64-unknown-linux-dynmusl` | | | 64-bit x86 Linux, MUSL with dynamic linking
`x86_64-unknown-openbsd` | ✓ | ✓ | 64-bit OpenBSD
`x86_64-unknown-uefi` | ? | |
`x86_64-uwp-windows-gnu` | ✓ | |
Expand Down