about summary refs log tree commit diff
path: root/compiler/rustc_target
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2021-06-06 18:13:27 +0300
committerSimonas Kazlauskas <git@kazlauskas.me>2021-07-08 23:50:12 +0300
commitf4701cd65cf6b3f9707b2bd20865d462f758a7f5 (patch)
treed9bfa7502c8932a361df3f3333190fde3e7b5d38 /compiler/rustc_target
parent6440785304a4cfff75d707f33bc2105ecfec0004 (diff)
downloadrust-f4701cd65cf6b3f9707b2bd20865d462f758a7f5.tar.gz
rust-f4701cd65cf6b3f9707b2bd20865d462f758a7f5.zip
Do not allow JSON targets to set is-builtin: true
Diffstat (limited to 'compiler/rustc_target')
-rw-r--r--compiler/rustc_target/src/spec/mod.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index 0a5f8c17c63..5ad5168a517 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -2010,6 +2010,10 @@ impl Target {
         key!(supported_sanitizers, SanitizerSet)?;
         key!(default_adjusted_cabi, Option<Abi>)?;
 
+        if base.is_builtin {
+            // This can cause unfortunate ICEs later down the line.
+            return Err(format!("may not set is_builtin for targets not built-in"));
+        }
         // Each field should have been read using `Json::remove_key` so any keys remaining are unused.
         let remaining_keys = obj.as_object().ok_or("Expected JSON object for target")?.keys();
         Ok((