905bf8
--- rustc-1.48.0-src/compiler/rustc_codegen_ssa/src/back/link.rs.orig	2020-11-16 06:01:53.000000000 -0800
905bf8
+++ rustc-1.48.0-src/compiler/rustc_codegen_ssa/src/back/link.rs	2020-11-16 09:37:15.779516797 -0800
905bf8
@@ -1185,10 +1185,12 @@
f7bb61
 }
f7bb61
 
f7bb61
 fn link_output_kind(sess: &Session, crate_type: CrateType) -> LinkOutputKind {
f7bb61
-    let kind = match (crate_type, sess.crt_static(Some(crate_type)), sess.relocation_model()) {
f7bb61
-        (CrateType::Executable, false, RelocModel::Pic) => LinkOutputKind::DynamicPicExe,
f7bb61
+    // Only use PIE if explicity specified.
f7bb61
+    let explicit_pic = matches!(sess.opts.cg.relocation_model, Some(RelocModel::Pic));
f7bb61
+    let kind = match (crate_type, sess.crt_static(Some(crate_type)), explicit_pic) {
f7bb61
+        (CrateType::Executable, false, true) => LinkOutputKind::DynamicPicExe,
f7bb61
         (CrateType::Executable, false, _) => LinkOutputKind::DynamicNoPicExe,
f7bb61
-        (CrateType::Executable, true, RelocModel::Pic) => LinkOutputKind::StaticPicExe,
f7bb61
+        (CrateType::Executable, true, true) => LinkOutputKind::StaticPicExe,
f7bb61
         (CrateType::Executable, true, _) => LinkOutputKind::StaticNoPicExe,
f7bb61
         (_, true, _) => LinkOutputKind::StaticDylib,
f7bb61
         (_, false, _) => LinkOutputKind::DynamicDylib,