From 76307ea58e1ca12d3a4bdc003556d3c7c39f5794 Mon Sep 17 00:00:00 2001
From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Date: Wed, 5 Jun 2019 15:41:44 +0200
Subject: [PATCH] libunwind: use correct compiler for cross compilation

Fixes #59917

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
---
 src/bootstrap/compile.rs | 5 +++++
 src/libunwind/build.rs   | 6 ++++++
 2 files changed, 11 insertions(+)

diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
index 4515c7d672d8a..af80c8a6bd78b 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
@@ -185,6 +185,11 @@ pub fn std_cargo(builder: &Builder<'_>,
         String::new()
     };
 
+    if let Some(ar) = builder.ar(target) {
+        cargo.env("RUSTBUILD_AR", ar);
+    }
+    cargo.env("RUSTBUILD_CC", builder.cc(target));
+
     if builder.no_std(target) == Some(true) {
         let mut features = "compiler-builtins-mem".to_string();
         features.push_str(&compiler_builtins_c_feature);
diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs
index 20280aa3c4130..763799988d25f 100644
--- a/src/libunwind/build.rs
+++ b/src/libunwind/build.rs
@@ -53,6 +53,12 @@ mod llvm_libunwind {
         let target_vendor = env::var("CARGO_CFG_TARGET_VENDOR").unwrap();
         let cfg = &mut cc::Build::new();
 
+        if let Ok(build_ar) = env::var("RUSTBUILD_AR") {
+            cfg.archiver(build_ar);
+        }
+        if let Ok(build_cc) = env::var("RUSTBUILD_CC") {
+            cfg.compiler(build_cc);
+        }
         cfg.cpp(true);
         cfg.cpp_set_stdlib(None);
         cfg.warnings(false);