summary refs log tree commit diff
path: root/compiler/rustc_target/src/spec
AgeCommit message (Collapse)AuthorLines
2022-05-13Add LLVM based mingw-w64 targetsMateusz Mikuła-0/+91
2022-04-27Update data layout string for wasm64-unknown-unknownAlex Crichton-1/+1
Looks like this changed in a recent LLVM update but wasm64 isn't built on CI so it wasn't caught until now. Closes #96463
2022-04-18Remove unused macro rulesest31-4/+0
2022-04-03Cleanup after some refactoring in rustc_targetLoïc BRANSTETT-104/+65
2022-04-03Replace LinkArgs with Cow<'static, str>Loïc BRANSTETT-6/+6
2022-04-03Replace every Vec in Target(Options) with it's Cow equivalentLoïc BRANSTETT-50/+105
2022-04-03Replace every `String` in Target(Options) with `Cow<'static, str>`Loïc BRANSTETT-1216/+1216
2022-04-02Rollup merge of #95430 - ChrisDenton:disable-tls-i686-msvc, r=nagisaDylan DPC-0/+2
Disable #[thread_local] support on i686-pc-windows-msvc Fixes #95429
2022-03-30a few mode feedback fixes per @bjorn3Yuri Astrakhan-1/+1
2022-03-30Spellchecking compiler commentsYuri Astrakhan-6/+6
This PR cleans up the rest of the spelling mistakes in the compiler comments. This PR does not change any literal or code spelling issues.
2022-03-29Disable #[thread_local] support on i686-pc-windows-msvcChris Denton-0/+2
2022-03-27Rollup merge of #95341 - Meziu:armv6k-3ds-target, r=nagisaDylan DPC-0/+1
ARMv6K Horizon OS has_thread_local support cc. ```@ian-h-chamberlain``` cc. ```@AzureMarker``` Being an ARM target, it has always had built-in support for `#[thread_local]`. This PR comes in just now because we were testing `std::thread` support with `thread_local_dtor`s. This will hopefully be the last PR for the target specification, unless anymore features will be needed as time goes on.
2022-03-26Merge pull request #16 from ian-h-chamberlain/feature/target-thread-localMeziu-0/+1
Enable #[thread_local] on armv6k-nintendo-3ds
2022-03-26Enable #[thread_local] on armv6k-nintendo-3dsIan Chamberlain-0/+1
2022-03-25Remove hermitkernel targetsMartin Kröning-62/+0
RustyHermit now maintains custom json targets, which are distributed with the kernel. [1] [1]: https://github.com/hermitcore/libhermit-rs/pull/395
2022-03-09Add support for targeting riscv32im-unknown-none-elfridwanabdillahi-0/+27
Update riscv32im-unknown-none-elf to Tier2 support. Downgrade to Tier 3 platform support.
2022-03-05Auto merge of #94601 - csmoe:android-asan, r=nagisabors-7/+10
add address sanitizer fo android We have been being using asan to debug the rust/cpp/c mixed android application in production for months: recompile the rust library with a patched rustc, everything just works fine. The patch is really small thanks to `@nagisa` 's refactoring in https://github.com/rust-lang/rust/pull/81866 r? `@nagisa`
2022-03-04add address sanitizer fo androidcsmoe-7/+10
2022-03-04Add well known values to --check-cfg implementationLoïc BRANSTETT-2/+18
2022-02-23riscv32imc_esp_espidf: set max_atomic_width to 64Scott Mabin-2/+2
2022-02-18Rollup merge of #93814 - Itus-Shield:mips64-openwrt, r=bjorn3Matthias Krüger-1/+1
mips64-openwrt-linux-musl: correct soft-foat MIPS64 targets under OpenWrt require soft-float fpu support. Rust-lang requires soft-float defined in tuple definition and isn't over-ridden by toolchain compile-time CFLAGS/LDFLAGS Set explicit soft-float for tuple. Signed-off-by: Donald Hoskins <grommish@gmail.com>
2022-02-18Rollup merge of #91675 - ivanloz:memtagsan, r=nagisaMatthias Krüger-1/+8
Add MemTagSanitizer Support Add support for the LLVM [MemTagSanitizer](https://llvm.org/docs/MemTagSanitizer.html). On hardware which supports it (see caveats below), the MemTagSanitizer can catch bugs similar to AddressSanitizer and HardwareAddressSanitizer, but with lower overhead. On a tag mismatch, a SIGSEGV is signaled with code SEGV_MTESERR / SEGV_MTEAERR. # Usage `-Zsanitizer=memtag -C target-feature="+mte"` # Comments/Caveats * MemTagSanitizer is only supported on AArch64 targets with hardware support * Requires `-C target-feature="+mte"` * LLVM MemTagSanitizer currently only performs stack tagging. # TODO * Tests * Example
2022-02-17Auto merge of #93577 - nikic:llvm-14, r=nagisabors-5/+6
Upgrade to LLVM 14 LLVM patch state: * [x] https://github.com/llvm/llvm-project/commit/a55727f334b39600bfc71144b11b42aae6b94e0b Backported. * [x] https://github.com/rust-lang/llvm-project/commit/c3c82dc12402dd41441180c0c6cf7aed7e330c53 Backported as https://github.com/llvm/llvm-project/commit/917c47b3bf0dfc45a2a5ba12c1397d647ecf4017. * [x] https://github.com/rust-lang/llvm-project/commit/6e8f9ab632d12271355d10d34c9835a7ba14e4b9 No plan to upstream. * [x] https://github.com/llvm/llvm-project/commit/319f4b2d52e31b000db75a0a2484b5f2ab90534a Backported. * [x] https://github.com/rust-lang/llvm-project/commit/8b2c25d321f877161f85218479e2d1317d770e18 No plan to upstream. * [x] https://github.com/rust-lang/llvm-project/commit/75fef2efd427362c8f16b2d09e6ebf44069e3919 No plan to upstream. * [ ] https://github.com/rust-lang/llvm-project/commit/adef757547de5a570d9f6a00d3e6ac16c666ab79 Upstreamed as https://github.com/llvm/llvm-project/commit/2d2ef384b2f6e723edb793d08f52e7f4dc94ba3a. Needs backport. * [x] https://github.com/rust-lang/llvm-project/commit/4b7c1b4910e9fa9e04f23f06be078e168ef4c0ee No plan to upstream. * [x] https://github.com/rust-lang/llvm-project/commit/3f5ab0c061adb723f25b94243828b6b5407720c8 No plan to upstream. * [x] https://github.com/rust-lang/llvm-project/commit/514d05500e0e15e358f05f5c4cec78a805858f8e No plan to upstream. * [ ] https://github.com/rust-lang/llvm-project/commit/54c586958564582b3341d1838a5de86541e5fecf Under review at https://reviews.llvm.org/D119695 and https://reviews.llvm.org/D119856. Release timeline: * LLVM 14.0.0 final planned for Mar 15. * Rust 1.60.0 planned for Apr 7. Compile-time: * https://perf.rust-lang.org/compare.html?start=250384edc5d78533e993f38c60d64e42b21684b2&end=b87df8d2c7c5d9ac448c585de10927ab2ee1b864 * A slight improvement on average, though no big changes either way. * There are some larger max-rss improvements. r? `@ghost`
2022-02-16Update data layout for wasm32 targetsNikita Popov-3/+4
New address spaces were added in https://reviews.llvm.org/D111154.
2022-02-16Update data layout for 32-bit msvc targetsNikita Popov-2/+2
https://reviews.llvm.org/D115942 changed the alignment of f80.
2022-02-16MemTagSanitizer SupportIvan Lozano-1/+8
Adds support for the LLVM MemTagSanitizer.
2022-02-15Inline Target::derefTomasz Miąsko-0/+2
2022-02-13rustc_target: Remove compiler-rt linking hack on AndroidVadim Petrochenkov-7/+1
2022-02-09mips64-openwrt-linux-musl: correct soft-foatDonald Hoskins-1/+1
MIPS64 targets under OpenWrt require soft-float fpu support. Rust-lang requires soft-float defined in tuple definition and isn't over-ridden by toolchain compile-time CFLAGS/LDFLAGS Set explicit soft-float for tuple. Signed-off-by: Donald Hoskins <grommish@gmail.com>
2022-02-08rename file to use the correct naming conventionStefan Lankes-0/+0
2022-02-08add missing targert for library operating system RustyHermitStefan Lankes-0/+1
2022-02-08add kernel target for RustyHermitStefan Lankes-0/+17
Currently, we are thinking to use *-unknown-none targets instead to define for every platform our own one (see hermitcore/rusty-hermit#197). However, the current target aarch64-unknown-none-softfloat doesn't support dynamic relocation. Our kernel uses this feature and consequently we define a new target aarch64-unknown-hermitkernel to support it.
2022-02-08Auto merge of #93561 - Amanieu:more-unwind-abi, r=nagisabors-48/+60
Add more *-unwind ABI variants The following *-unwind ABIs are now supported: - "C-unwind" - "cdecl-unwind" - "stdcall-unwind" - "fastcall-unwind" - "vectorcall-unwind" - "thiscall-unwind" - "aapcs-unwind" - "win64-unwind" - "sysv64-unwind" - "system-unwind" cc `@rust-lang/wg-ffi-unwind`
2022-02-07Rollup merge of #93680 - Mark-Simulacrum:drop-json-reader, r=bjorn3Mara Bos-2/+2
Drop json::from_reader Just a small cleanup -- this was essentially unused; the one use site is better suited to reading from &str regardless.
2022-02-06Rollup merge of #92383 - lancethepants:armv7-unknown-linux-uclibceabi, r=nagisaMatthias Krüger-0/+24
Add new target armv7-unknown-linux-uclibceabi (softfloat) This adds the new target `armv7-unknown-linux-uclibceabi (softfloat)`. It is of course similar to `armv7-unknown-linux-uclibceabihf (hardfloat)` which was just recently added to rust except that it is `softfloat`. My interest lies in the Broadcom BCM4707/4708/BCM4709 family, notably found in some Netgear and Asus consumer routers. The armv7 Cortex-A9 cpus found in these devices do not have an fpu or NEON support. With this patch I've been able to bootstrap rustc, std and host tools `(extended = true)` to run on the target device for native compilation, allowing the target to be used as a development platform. With the recent addition of `armv7-unknown-linux-uclibceabihf (hardfloat)` it looks like many of the edge cases of using the uclibc c-library are getting worked out nicely. I've been able to compile some complex projects. Some patching still needed in some crates, but getting there for sure. I think `armv7-unknown-linux-uclibceabi` is ready to be a tier 3 target. I use a cross-toolchain from my project to bootstrap rust. https://github.com/lancethepants/tomatoware The goal of this project is to create a native development environment with support for various languages.
2022-02-06Rollup merge of #92300 - Itus-Shield:mips64-openwrt, r=nagisaMatthias Krüger-0/+28
mips64-openwrt-linux-musl: Add Tier 3 target Tier 3 tuple for Mips64 OpenWrt toolchain. This add first-time support for OpenWrt. Future Tier3 targets will be added as I test them. Signed-off-by: Donald Hoskins <grommish@gmail.com>
2022-02-05Drop json::from_readerMark Rousskov-2/+2
Performing UTF-8 decode outside the JSON module makes more sense in almost all cases.
2022-02-04Add new target armv7-unknown-linux-uclibceabi (softfloat)lancethepants-0/+24
2022-02-02Add more *-unwind ABI variantsAmanieu d'Antras-48/+60
The following *-unwind ABIs are now supported: - "C-unwind" - "cdecl-unwind" - "stdcall-unwind" - "fastcall-unwind" - "vectorcall-unwind" - "thiscall-unwind" - "aapcs-unwind" - "win64-unwind" - "sysv64-unwind" - "system-unwind"
2022-02-01Rollup merge of #86374 - bossmc:enable-static-pie-for-gnu, r=nagisaMatthias Krüger-0/+1
Enable combining `+crt-static` and `relocation-model=pic` on `x86_64-unknown-linux-gnu` Modern `gcc` versions support `-static-pie`, and `rustc` will already fall-back to `-static` if the local `gcc` is too old (and hence this change is optimistic rather than absolute). This brings the `-musl` and `-gnu` targets to feature compatibility (albeit with different default settings). Of note a `-static` or `-static-pie` binary based on glibc that uses NSS-backed functions (`gethostbyname` or `getpwuid` etc.) need to have access to the `libnss_X.so.2` libraries and any of their dynamic dependencies. I wasn't sure about the `# only`/`# ignore` changes (I've not got a `gnux32` toolchain to test with hence not also enabling `-static-pie` there).
2022-01-31[mips64-openwrt-musl] Tier 3 tuple for Mips64 OpenWrtDonald Hoskins-0/+28
This incorporates rust-lang into the OpenWrt build system for Mips64 targets. Signed-off-by: Donald Hoskins <grommish@gmail.com>
2022-01-21adapt L4Bender implementationBenjamin Lamowski-9/+8
- Fix style errors. - L4-bender does not yet support dynamic linking. - Stack unwinding is not yet supported for x86_64-unknown-l4re-uclibc. For now, just abort on panics. - Use GNU-style linker options where possible. As suggested by review: - Use standard GNU-style ld syntax for relro flags. - Use standard GNU-style optimization flags and logic. - Use standard GNU-style ld syntax for --subsystem. - Don't read environment variables in L4Bender linker. Thanks to CARGO_ENCODED_RUSTFLAGS introduced in #9601, l4-bender's arguments can now be passed from the L4Re build system without resorting to custom parsing of environment variables.
2022-01-21Add L4Bender as linker variantSebastian Humenda-16/+11
2022-01-16Rollup merge of #92581 - Meziu:armv6k-3ds-target, r=nagisaMatthias Krüger-0/+1
ARMv6K Horizon - Enable default libraries Due to the nature of the external gcc linker, default libraries are required, even for `no_std` programs.
2022-01-09eplace usages of vec![].into_iter with [].into_iterLucas Kent-8/+6
2022-01-06sess/cg: re-introduce split dwarf kindDavid Wood-1/+1
In #79570, `-Z split-dwarf-kind={none,single,split}` was replaced by `-C split-debuginfo={off,packed,unpacked}`. `-C split-debuginfo`'s packed and unpacked aren't exact parallels to single and split, respectively. On Unix, `-C split-debuginfo=packed` will put debuginfo into object files and package debuginfo into a DWARF package file (`.dwp`) and `-C split-debuginfo=unpacked` will put debuginfo into dwarf object files and won't package it. In the initial implementation of Split DWARF, split mode wrote sections which did not require relocation into a DWARF object (`.dwo`) file which was ignored by the linker and then packaged those DWARF objects into DWARF packages (`.dwp`). In single mode, sections which did not require relocation were written into object files but ignored by the linker and were not packaged. However, both split and single modes could be packaged or not, the primary difference in behaviour was where the debuginfo sections that did not require link-time relocation were written (in a DWARF object or the object file). This commit re-introduces a `-Z split-dwarf-kind` flag, which can be used to pick between split and single modes when `-C split-debuginfo` is used to enable Split DWARF (either packed or unpacked). Signed-off-by: David Wood <david.wood@huawei.com>
2022-01-05Enable default librariesAndrea Ciliberti-0/+1
2021-12-17Rename `has_elf_tls` to `has_thread_local`Chris Denton-21/+20
2021-12-17Enable `#[thread_local]` for all windows-msvc targetsChris Denton-6/+1
2021-12-13Revert "Set MACOSX_DEPLOYMENT_TARGET env var to default for linking if not set."Hans Kratz-15/+0
This reverts commit b376f5621b801460b911a75048a70698021bbc69, which is the main part of #90499, because it turns out that this causes a good amount of breakage in crates relying on the old behavior. Fixes #91372.