Skip to content

Commit 2133fb9

Browse files
committed
Disable PIC when jitting
This fixes jitting on non-x86_64 targets.
1 parent 15fff5d commit 2133fb9

File tree

4 files changed

+6
-8
lines changed

4 files changed

+6
-8
lines changed

build_system/tests.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,10 +325,8 @@ impl<'a> TestRunner<'a> {
325325
target_compiler.rustflags.extend(rustflags_from_env("RUSTFLAGS"));
326326
target_compiler.rustdocflags.extend(rustflags_from_env("RUSTDOCFLAGS"));
327327

328-
let jit_supported = use_unstable_features
329-
&& is_native
330-
&& target_compiler.triple.contains("x86_64")
331-
&& !target_compiler.triple.contains("windows");
328+
let jit_supported =
329+
use_unstable_features && is_native && !target_compiler.triple.contains("windows");
332330

333331
Self { is_native, jit_supported, skip_tests, dirs, target_compiler, stdlib_source }
334332
}

src/driver/aot.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ fn produce_final_output_artifacts(
329329
}
330330

331331
fn make_module(sess: &Session, name: String) -> UnwindModule<ObjectModule> {
332-
let isa = crate::build_isa(sess);
332+
let isa = crate::build_isa(sess, false);
333333

334334
let mut builder =
335335
ObjectBuilder::new(isa, name + ".o", cranelift_module::default_libcall_names()).unwrap();

src/driver/jit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::unwind_module::UnwindModule;
1818
fn create_jit_module(tcx: TyCtxt<'_>) -> (UnwindModule<JITModule>, CodegenCx) {
1919
let crate_info = CrateInfo::new(tcx, "dummy_target_cpu".to_string());
2020

21-
let isa = crate::build_isa(tcx.sess);
21+
let isa = crate::build_isa(tcx.sess, true);
2222
let mut jit_builder = JITBuilder::with_isa(isa, cranelift_module::default_libcall_names());
2323
crate::compiler_builtins::register_functions_for_jit(&mut jit_builder);
2424
jit_builder.symbol_lookup_fn(dep_symbol_lookup_fn(tcx.sess, crate_info));

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,13 @@ fn target_triple(sess: &Session) -> target_lexicon::Triple {
250250
}
251251
}
252252

253-
fn build_isa(sess: &Session) -> Arc<dyn TargetIsa + 'static> {
253+
fn build_isa(sess: &Session, jit: bool) -> Arc<dyn TargetIsa + 'static> {
254254
use target_lexicon::BinaryFormat;
255255

256256
let target_triple = crate::target_triple(sess);
257257

258258
let mut flags_builder = settings::builder();
259-
flags_builder.enable("is_pic").unwrap();
259+
flags_builder.set("is_pic", if jit { "false" } else { "true" }).unwrap();
260260
let enable_verifier = if enable_verifier(sess) { "true" } else { "false" };
261261
flags_builder.set("enable_verifier", enable_verifier).unwrap();
262262
flags_builder.set("regalloc_checker", enable_verifier).unwrap();

0 commit comments

Comments
 (0)