diff --git a/crates/compiler/gen_dev/src/lib.rs b/crates/compiler/gen_dev/src/lib.rs index 87a341d230..efd734864f 100644 --- a/crates/compiler/gen_dev/src/lib.rs +++ b/crates/compiler/gen_dev/src/lib.rs @@ -45,6 +45,13 @@ impl AssemblyBackendMode { AssemblyBackendMode::Test => true, } } + + fn generate_roc_panic(self) -> bool { + match self { + AssemblyBackendMode::Binary => false, + AssemblyBackendMode::Test => true, + } + } } pub struct Env<'a> { diff --git a/crates/compiler/gen_dev/src/object_builder.rs b/crates/compiler/gen_dev/src/object_builder.rs index d3b79d14c8..8b92fad67c 100644 --- a/crates/compiler/gen_dev/src/object_builder.rs +++ b/crates/compiler/gen_dev/src/object_builder.rs @@ -1,5 +1,5 @@ use crate::generic64::{aarch64, new_backend_64bit, x86_64}; -use crate::{Backend, Env, Relocation}; +use crate::{AssemblyBackendMode, Backend, Env, Relocation}; use bumpalo::collections::Vec; use object::write::{self, SectionId, SymbolId}; use object::write::{Object, StandardSection, StandardSegment, Symbol, SymbolSection}; @@ -312,11 +312,13 @@ fn build_object<'a, B: Backend<'a>>( ); */ - define_setlongjmp_buffer(&mut output); + if backend.env().mode.generate_roc_panic() { + define_setlongjmp_buffer(&mut output); - generate_roc_panic(&mut backend, &mut output); - generate_setjmp(&mut backend, &mut output); - generate_longjmp(&mut backend, &mut output); + generate_roc_panic(&mut backend, &mut output); + generate_setjmp(&mut backend, &mut output); + generate_longjmp(&mut backend, &mut output); + } if backend.env().mode.generate_allocators() { generate_wrapper( @@ -402,15 +404,17 @@ fn build_object<'a, B: Backend<'a>>( // println!("{}", test_helper.to_pretty(backend.interner(), 200, true)); - build_proc_symbol( - &mut output, - &mut layout_ids, - &mut procs, - &mut backend, - layout, - test_helper, - Exposed::TestMain, - ); + if let AssemblyBackendMode::Test = backend.env().mode { + build_proc_symbol( + &mut output, + &mut layout_ids, + &mut procs, + &mut backend, + layout, + test_helper, + Exposed::TestMain, + ); + } build_proc_symbol( &mut output,