Contents of /trunk/rust/patches/rust-1.73.0-0003-compiler-Change-LLVM-targets.patch
Parent Directory | Revision Log
Revision 3792 -
(show annotations)
(download)
Thu Oct 19 14:30:57 2023 UTC (7 months ago) by niro
File size: 3979 byte(s)
Thu Oct 19 14:30:57 2023 UTC (7 months ago) by niro
File size: 3979 byte(s)
-rediffed for 1.73.0
1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
2 | From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org> |
3 | Date: Fri, 12 Mar 2021 17:31:56 +0100 |
4 | Subject: [PATCH] compiler: Change LLVM targets |
5 | |
6 | - Change x86_64-unknown-linux-gnu to use x86_64-pc-linux-gnu |
7 | - Change i686-unknown-linux-gnu to use i686-pc-linux-gnu |
8 | |
9 | Reintroduce the aliasing that was removed in 1.52.0 and alias the -pc- |
10 | triples to the -unknown- triples. This avoids defining proper -pc- |
11 | targets, as things break when this is done: |
12 | |
13 | - The crate ecosystem expects the -unknown- targets. Making -pc- |
14 | rustc's host triple (and thus default target) would break various |
15 | crates. |
16 | - Firefox's build breaks when the host triple (from |
17 | `rustc --version --verbose`) is different from the target triple |
18 | (from `rustc --print target-list`) that best matches autoconf. |
19 | --- |
20 | compiler/rustc_session/src/config.rs | 2 +- |
21 | compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs | 2 +- |
22 | compiler/rustc_target/src/spec/mod.rs | 9 +++++++++ |
23 | .../rustc_target/src/spec/x86_64_unknown_linux_gnu.rs | 2 +- |
24 | 4 files changed, 12 insertions(+), 3 deletions(-) |
25 | |
26 | diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs |
27 | index f00472f181d8..1aae877a275a 100644 |
28 | --- a/compiler/rustc_session/src/config.rs |
29 | +++ b/compiler/rustc_session/src/config.rs |
30 | @@ -2225,7 +2225,7 @@ pub fn parse_target_triple( |
31 | handler.early_error(format!("target file {path:?} does not exist")) |
32 | }) |
33 | } |
34 | - Some(target) => TargetTriple::TargetTriple(target), |
35 | + Some(target) => TargetTriple::from_alias(target), |
36 | _ => TargetTriple::from_triple(host_triple()), |
37 | } |
38 | } |
39 | diff --git a/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs |
40 | index 73e536a7e4d9..af48d437533c 100644 |
41 | --- a/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs |
42 | +++ b/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs |
43 | @@ -9,7 +9,7 @@ pub fn target() -> Target { |
44 | base.stack_probes = StackProbeType::X86; |
45 | |
46 | Target { |
47 | - llvm_target: "i686-unknown-linux-gnu".into(), |
48 | + llvm_target: "i686-pc-linux-gnu".into(), |
49 | pointer_width: 32, |
50 | data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\ |
51 | f64:32:64-f80:32-n8:16:32-S128" |
52 | diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs |
53 | index 31b6961bb622..24e7b156b1c5 100644 |
54 | --- a/compiler/rustc_target/src/spec/mod.rs |
55 | +++ b/compiler/rustc_target/src/spec/mod.rs |
56 | @@ -3254,6 +3254,15 @@ pub fn from_path(path: &Path) -> Result<Self, io::Error> { |
57 | Ok(TargetTriple::TargetJson { path_for_rustdoc: canonicalized_path, triple, contents }) |
58 | } |
59 | |
60 | + /// Creates a target triple from its alias |
61 | + pub fn from_alias(triple: String) -> Self { |
62 | + match triple.as_str() { |
63 | + "x86_64-pc-linux-gnu" => TargetTriple::from_triple("x86_64-unknown-linux-gnu"), |
64 | + "i686-pc-linux-gnu" => TargetTriple::from_triple("i686-unknown-linux-gnu"), |
65 | + _ => TargetTriple::TargetTriple(triple), |
66 | + } |
67 | + } |
68 | + |
69 | /// Returns a string triple for this target. |
70 | /// |
71 | /// If this target is a path, the file name (without extension) is returned. |
72 | diff --git a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs |
73 | index 2f970f87cc64..f8a5eec3ad6c 100644 |
74 | --- a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs |
75 | +++ b/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs |
76 | @@ -17,7 +17,7 @@ pub fn target() -> Target { |
77 | base.supports_xray = true; |
78 | |
79 | Target { |
80 | - llvm_target: "x86_64-unknown-linux-gnu".into(), |
81 | + llvm_target: "x86_64-pc-linux-gnu".into(), |
82 | pointer_width: 64, |
83 | data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" |
84 | .into(), |