From 856222987d08289ef03a06ebf7b59087e226e9e9 Mon Sep 17 00:00:00 2001 From: Vadim Chugunov Date: Mon, 30 Dec 2013 01:59:22 -0800 Subject: [PATCH] Revert "Embed Windows application manifest." --- src/librustc/back/link.rs | 7 --- src/librustc/back/manifest.rs | 106 ---------------------------------- src/librustc/lib.rs | 1 - src/test/run-pass/setup.rs | 19 ------ 4 files changed, 133 deletions(-) delete mode 100644 src/librustc/back/manifest.rs delete mode 100644 src/test/run-pass/setup.rs diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index 786c05de20465..6bd898879d126 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -11,7 +11,6 @@ use back::archive::{Archive, METADATA_FILENAME}; use back::rpath; -use back::manifest; use driver::driver::CrateTranslation; use driver::session::Session; use driver::session; @@ -828,12 +827,6 @@ fn link_binary_output(sess: Session, } session::OutputExecutable => { link_natively(sess, false, obj_filename, &out_filename); - // Windows linker will add an ".exe" extension if there was none - let out_filename = match out_filename.extension() { - Some(_) => out_filename.clone(), - None => out_filename.with_extension(win32::EXE_EXTENSION) - }; - manifest::postprocess_executable(sess, &out_filename); } session::OutputDylib => { link_natively(sess, true, obj_filename, &out_filename); diff --git a/src/librustc/back/manifest.rs b/src/librustc/back/manifest.rs deleted file mode 100644 index 8e85603b31cff..0000000000000 --- a/src/librustc/back/manifest.rs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2013 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - - -// To avoid problems with Windows UAC installer detection heuristics, -// Rust-produced executables need an application manifest. -// For details, see issue #10512. - -// No-op on other platforms. - -use driver::session::Session; -use std::path::Path; - -#[cfg(not(windows))] -pub fn postprocess_executable(_sess: Session, _filename: &Path) {} - -#[cfg(windows)] -pub fn postprocess_executable(sess: Session, filename: &Path) { - - let default_manifest = concat!( - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""); - - match windows::embed_manifest(filename, default_manifest) { - Ok(_) => (), - Err(msg) => sess.err(format!("Could not embed application manifest: {}", msg)) - } -} - -#[cfg(windows)] -mod windows { - use std::libc::types::os::arch::extra::{BOOL,WORD,DWORD,HANDLE,LPCWSTR,LPCVOID}; - use std::libc::consts::os::extra::FALSE; - use std::cast::transmute; - use std::os; - - // FIXME #9053: should import as_utf16_p from std rather than re-defining here - //use std::os::win32::as_utf16_p; - fn as_utf16_p(s: &str, f: |*u16| -> T) -> T { - let mut t = s.to_utf16(); - // Null terminate before passing on. - t.push(0u16); - f(t.as_ptr()) - } - - #[link_name = "kernel32"] - extern "system" { - pub fn BeginUpdateResourceW(pFileName: LPCWSTR, - bDeleteExistingResources: BOOL) -> HANDLE; - pub fn UpdateResourceW(hUpdate: HANDLE, - lpType: LPCWSTR, - lpName: LPCWSTR, - wLanguage: WORD, - lpData: LPCVOID, - cbData: DWORD) -> BOOL; - pub fn EndUpdateResourceW(hUpdate: HANDLE, - fDiscard: BOOL) -> BOOL; - } - - fn MAKEINTRESOURCEW(id: int) -> LPCWSTR { - unsafe{ transmute(id) } - } - - pub fn embed_manifest(filename: &Path, - manifest: &str) -> Result<(),~str> { - unsafe { - let hUpdate = as_utf16_p(filename.as_str().unwrap(), |path| { - BeginUpdateResourceW(path, FALSE) - }); - if hUpdate.is_null() { - return Err(format!("failure in BeginUpdateResourceW: {}", os::last_os_error())); - } - - let ok = UpdateResourceW(hUpdate, - MAKEINTRESOURCEW(24), // RT_MANIFEST - MAKEINTRESOURCEW(1), // CREATEPROCESS_MANIFEST_RESOURCE_ID - 0, // LANG_NEUTRAL, SUBLANG_NEUTRAL - manifest.as_ptr() as LPCVOID, - manifest.len() as u32); - if ok == FALSE { - return Err(format!("failure in UpdateResourceW: {}", os::last_os_error())); - } - - let ok = EndUpdateResourceW(hUpdate, FALSE); - if ok == FALSE { - return Err(format!("failure in EndUpdateResourceW: {}", os::last_os_error())); - } - Ok(()) - } - } -} diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 828e65b764870..a5ec422699d5e 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -88,7 +88,6 @@ pub mod front { pub mod back { pub mod archive; pub mod link; - pub mod manifest; pub mod abi; pub mod arm; pub mod mips; diff --git a/src/test/run-pass/setup.rs b/src/test/run-pass/setup.rs deleted file mode 100644 index 12231907940db..0000000000000 --- a/src/test/run-pass/setup.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2013 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// On Windows this test checks that Rust binaries have an embedded -// application manifest and don't trip UAC installer detection -// heuristics ("setup" is one of the "installer" keywords). -// For details, see issue #10512. - -// On other platforms this is a no-op. - -pub fn main() { -}