Rollup merge of #39193 - pepyakin:emcc-strip-panic-rt, r=alexcrichton
Tell emscripten to remove exception handling code when panic=abort Fixes #36900
This commit is contained in:
commit
49cd748a07
@ -22,6 +22,7 @@ pub fn target() -> Result<Target, String> {
|
||||
linker_is_gnu: true,
|
||||
allow_asm: false,
|
||||
obj_is_bitcode: true,
|
||||
is_like_emscripten: true,
|
||||
max_atomic_width: Some(32),
|
||||
post_link_args: vec!["-s".to_string(), "ERROR_ON_UNDEFINED_SYMBOLS=1".to_string()],
|
||||
target_family: Some("unix".to_string()),
|
||||
|
@ -330,6 +330,10 @@ pub struct TargetOptions {
|
||||
/// Whether the target toolchain is like Android's. Only useful for compiling against Android.
|
||||
/// Defaults to false.
|
||||
pub is_like_android: bool,
|
||||
/// Whether the target toolchain is like Emscripten's. Only useful for compiling with
|
||||
/// Emscripten toolchain.
|
||||
/// Defaults to false.
|
||||
pub is_like_emscripten: bool,
|
||||
/// Whether the linker support GNU-like arguments such as -O. Defaults to false.
|
||||
pub linker_is_gnu: bool,
|
||||
/// The MinGW toolchain has a known issue that prevents it from correctly
|
||||
@ -428,6 +432,7 @@ impl Default for TargetOptions {
|
||||
is_like_solaris: false,
|
||||
is_like_windows: false,
|
||||
is_like_android: false,
|
||||
is_like_emscripten: false,
|
||||
is_like_msvc: false,
|
||||
linker_is_gnu: false,
|
||||
allows_weak_linkage: true,
|
||||
@ -603,6 +608,7 @@ impl Target {
|
||||
key!(is_like_solaris, bool);
|
||||
key!(is_like_windows, bool);
|
||||
key!(is_like_msvc, bool);
|
||||
key!(is_like_emscripten, bool);
|
||||
key!(is_like_android, bool);
|
||||
key!(linker_is_gnu, bool);
|
||||
key!(allows_weak_linkage, bool);
|
||||
@ -767,6 +773,7 @@ impl ToJson for Target {
|
||||
target_option_val!(is_like_solaris);
|
||||
target_option_val!(is_like_windows);
|
||||
target_option_val!(is_like_msvc);
|
||||
target_option_val!(is_like_emscripten);
|
||||
target_option_val!(is_like_android);
|
||||
target_option_val!(linker_is_gnu);
|
||||
target_option_val!(allows_weak_linkage);
|
||||
|
@ -24,6 +24,7 @@ pub fn target() -> Result<Target, String> {
|
||||
linker_is_gnu: true,
|
||||
allow_asm: false,
|
||||
obj_is_bitcode: true,
|
||||
is_like_emscripten: true,
|
||||
max_atomic_width: Some(32),
|
||||
post_link_args: vec!["-s".to_string(), "BINARYEN=1".to_string(),
|
||||
"-s".to_string(), "ERROR_ON_UNDEFINED_SYMBOLS=1".to_string()],
|
||||
|
@ -29,6 +29,7 @@ use rustc::dep_graph::DepNode;
|
||||
use rustc::hir::def_id::CrateNum;
|
||||
use rustc::hir::svh::Svh;
|
||||
use rustc_back::tempdir::TempDir;
|
||||
use rustc_back::PanicStrategy;
|
||||
use rustc_incremental::IncrementalHashesMap;
|
||||
|
||||
use std::ascii;
|
||||
@ -714,6 +715,11 @@ fn link_natively(sess: &Session,
|
||||
cmd.arg(root.join(obj));
|
||||
}
|
||||
|
||||
if sess.target.target.options.is_like_emscripten &&
|
||||
sess.panic_strategy() == PanicStrategy::Abort {
|
||||
cmd.args(&["-s", "DISABLE_EXCEPTION_CATCHING=1"]);
|
||||
}
|
||||
|
||||
{
|
||||
let mut linker = trans.linker_info.to_linker(&mut cmd, &sess);
|
||||
link_args(&mut *linker, sess, crate_type, tmpdir,
|
||||
|
Loading…
Reference in New Issue
Block a user