summary refs log tree commit diff
path: root/src/librustc_trans/back
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-02-27 16:44:59 +0000
committerbors <bors@rust-lang.org>2018-02-27 16:44:59 +0000
commitd3ae9a9e08edf12de0ed82af57ba2a56c26496ea (patch)
treede72b3163b47f646b717f1f809d1315b9bf49da9 /src/librustc_trans/back
parent4d90ac38c0b61bb69470b61ea2cccea0df48d9e5 (diff)
parent9853d20e4d054207c54b62e3fb700106652bcac9 (diff)
downloadrust-1.24.1.tar.gz
rust-1.24.1.zip
Auto merge of #48445 - Mark-Simulacrum:stable-next, r=alexcrichton 1.24.1
[stable] 1.24.1 stable release

The includes the following commits:
 - 6a600f827b632fb798b9ca52345130748fe86a30: Fixes #48251, unwinding through FFI no longer aborts
 - https://github.com/cuviper/rust/commit/b445a52ea322758fb7b60fab5f890ef8c0f8df9c: Fixes https://github.com/rust-lang/rust/issues/48308, fixing the error index generator
 - f8e00d0dc221564701ecdbb6dde57e0e9dd12900: Fixes https://github.com/rust-lang/rust/issues/48318 by emitting UTF-16 output on MSVC targets.
 - 2a0af8c448: Bumps the version number to 1.24.1.
 - 93220f0f45: Release notes
 - 6031718d8836f95bbfeddfaa63f1ee1d66e53f26: Cargo TLS warnings on Windows.
Diffstat (limited to 'src/librustc_trans/back')
-rw-r--r--src/librustc_trans/back/link.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index 360f85d78f1..abd02e719fa 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -776,7 +776,19 @@ fn exec_linker(sess: &Session, cmd: &mut Command, tmpdir: &Path)
         args.push_str("\n");
     }
     let file = tmpdir.join("linker-arguments");
-    fs::write(&file, args.as_bytes())?;
+    let bytes = if sess.target.target.options.is_like_msvc {
+        let mut out = vec![];
+        // start the stream with a UTF-16 BOM
+        for c in vec![0xFEFF].into_iter().chain(args.encode_utf16()) {
+            // encode in little endian
+            out.push(c as u8);
+            out.push((c >> 8) as u8);
+        }
+        out
+    } else {
+        args.into_bytes()
+    };
+    fs::write(&file, &bytes)?;
     cmd2.arg(format!("@{}", file.display()));
     return cmd2.output();