From 39b25b3d714d463a6803a64f437f1b9ba8ced7b8 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 26 Jan 2024 11:39:05 +0000 Subject: [PATCH] Don't emit unwind tables on macOS They don't work anyway as object misses support for emitting the particular format macOS expects. And on arm64 macOS it causes compilation to abort due to an unsupported relocation type. Fixes rust-lang/rustc_codegen_cranelift#1371 --- src/debuginfo/unwind.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/debuginfo/unwind.rs b/src/debuginfo/unwind.rs index 96ab7a29205..eebd181341d 100644 --- a/src/debuginfo/unwind.rs +++ b/src/debuginfo/unwind.rs @@ -38,6 +38,14 @@ pub(crate) fn new(isa: &dyn TargetIsa, pic_eh_frame: bool) -> Self { } pub(crate) fn add_function(&mut self, func_id: FuncId, context: &Context, isa: &dyn TargetIsa) { + if let target_lexicon::OperatingSystem::MacOSX { .. } = isa.triple().operating_system { + // The object crate doesn't currently support DW_GNU_EH_PE_absptr, which macOS + // requires for unwinding tables. In addition on arm64 it currently doesn't + // support 32bit relocations as we currently use for the unwinding table. + // See gimli-rs/object#415 and rust-lang/rustc_codegen_cranelift#1371 + return; + } + let unwind_info = if let Some(unwind_info) = context.compiled_code().unwrap().create_unwind_info(isa).unwrap() {