about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicholas Bishop <nbishop@nbishop.net>2022-11-20 00:03:10 +0000
committerNicholas Bishop <nbishop@nbishop.net>2022-11-20 00:03:10 +0000
commiteafe61d6bd9d983535a90b29ef5497b0a6e42019 (patch)
treee53f3a66bc88581d3071dfafed498a07ebf7cf89
parentcdb6907893da1d025eba2d8cd396db4e84bca98c (diff)
downloadrust-eafe61d6bd9d983535a90b29ef5497b0a6e42019.tar.gz
rust-eafe61d6bd9d983535a90b29ef5497b0a6e42019.zip
dist-various-2: Use clang for the UEFI targets
This fixes an issue where the C and asm sources built by
compiler_builtins were being compiled as ELF objects instead of PE
objects. This wasn't noticed before because it doesn't cause
compiler_builtins or rustc to fail to build. You only see a failure when
a program is built that references one of the symbols in an ELF object.

Compiling with clang fixes this because the `cc` crate converts the UEFI
targets into Windows targets that clang understands, causing it to
produce PE objects.

Note that this requires compiler_builtins >= 0.1.84.

Fixes https://github.com/rust-lang/rust/issues/104326
-rw-r--r--src/ci/docker/host-x86_64/dist-various-2/Dockerfile6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ci/docker/host-x86_64/dist-various-2/Dockerfile b/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
index e1adabaac9b..93ef7dfcbf5 100644
--- a/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
+++ b/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
@@ -61,6 +61,12 @@ ENV \
     AR_i686_unknown_freebsd=i686-unknown-freebsd12-ar \
     CC_i686_unknown_freebsd=i686-unknown-freebsd12-clang \
     CXX_i686_unknown_freebsd=i686-unknown-freebsd12-clang++ \
+    CC_aarch64_unknown_uefi=clang-11 \
+    CXX_aarch64_unknown_uefi=clang++-11 \
+    CC_i686_unknown_uefi=clang-11 \
+    CXX_i686_unknown_uefi=clang++-11 \
+    CC_x86_64_unknown_uefi=clang-11 \
+    CXX_x86_64_unknown_uefi=clang++-11 \
     CC=gcc-8 \
     CXX=g++-8