workarounds to make link guards work on windows
Link guards cause problems in some specific scenarios on windows because they force libcore to be instantiated, since we do not GC functions effectively on windows. The changes here are two: 1. disable core for rsbegin/rsend 2. make panic_fmt an extern fn for smallest-hello-world so that it is not marked as "internal" for LLVM
This commit is contained in:
parent
751c24d345
commit
b385ce1223
|
@ -23,9 +23,20 @@
|
||||||
// of other runtime components (registered via yet another special image section).
|
// of other runtime components (registered via yet another special image section).
|
||||||
|
|
||||||
#![crate_type="rlib"]
|
#![crate_type="rlib"]
|
||||||
#![no_std]
|
#![feature(no_core, lang_items, optin_builtin_traits)]
|
||||||
|
#![no_core]
|
||||||
#![allow(non_camel_case_types)]
|
#![allow(non_camel_case_types)]
|
||||||
|
|
||||||
|
#[lang="sized"]
|
||||||
|
trait Sized {}
|
||||||
|
|
||||||
|
#[lang="copy"]
|
||||||
|
trait Copy {}
|
||||||
|
|
||||||
|
#[lang="sync"]
|
||||||
|
trait Sync {}
|
||||||
|
impl Sync for .. {}
|
||||||
|
|
||||||
#[cfg(all(target_os="windows", target_arch = "x86", target_env="gnu"))]
|
#[cfg(all(target_os="windows", target_arch = "x86", target_env="gnu"))]
|
||||||
pub mod eh_frames
|
pub mod eh_frames
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,7 +11,12 @@
|
||||||
// See rsbegin.rs for details.
|
// See rsbegin.rs for details.
|
||||||
|
|
||||||
#![crate_type="rlib"]
|
#![crate_type="rlib"]
|
||||||
#![no_std]
|
#![feature(no_core, lang_items, optin_builtin_traits)]
|
||||||
|
#![no_core]
|
||||||
|
|
||||||
|
#[lang="sync"]
|
||||||
|
trait Sync {}
|
||||||
|
impl Sync for .. {}
|
||||||
|
|
||||||
#[cfg(all(target_os="windows", target_arch = "x86", target_env="gnu"))]
|
#[cfg(all(target_os="windows", target_arch = "x86", target_env="gnu"))]
|
||||||
pub mod eh_frames
|
pub mod eh_frames
|
||||||
|
|
|
@ -22,7 +22,7 @@ extern "rust-intrinsic" { fn transmute<T, U>(t: T) -> U; }
|
||||||
|
|
||||||
#[lang = "eh_personality"] extern fn eh_personality() {}
|
#[lang = "eh_personality"] extern fn eh_personality() {}
|
||||||
#[lang = "eh_unwind_resume"] extern fn eh_unwind_resume() {}
|
#[lang = "eh_unwind_resume"] extern fn eh_unwind_resume() {}
|
||||||
#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} }
|
#[lang = "panic_fmt"] extern fn panic_fmt() -> ! { loop {} }
|
||||||
#[no_mangle] pub extern fn rust_eh_register_frames () {}
|
#[no_mangle] pub extern fn rust_eh_register_frames () {}
|
||||||
#[no_mangle] pub extern fn rust_eh_unregister_frames () {}
|
#[no_mangle] pub extern fn rust_eh_unregister_frames () {}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue