From b98b37231bd2dcb79e10b0f974cefd91eb0d7b3a Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 12 Jul 2022 22:25:33 +0200 Subject: [PATCH] OSX/iOS/ARM64: Fix bytecode embedding in Mach-O object file. Thanks to Carlo Cabrera. --- src/jit/bcsave.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/jit/bcsave.lua b/src/jit/bcsave.lua index 6227d136..adf197c6 100644 --- a/src/jit/bcsave.lua +++ b/src/jit/bcsave.lua @@ -501,6 +501,18 @@ typedef struct { mach_nlist sym_entry; uint8_t space[4096]; } mach_fat_obj; +typedef struct { + mach_fat_header fat; + mach_fat_arch fat_arch[2]; + struct { + mach_header_64 hdr; + mach_segment_command_64 seg; + mach_section_64 sec; + mach_symtab_command sym; + } arch[2]; + mach_nlist_64 sym_entry; + uint8_t space[4096]; +} mach_fat_obj_64; ]] local symname = '_'..LJBC_PREFIX..ctx.modname local isfat, is64, align, mobj = false, false, 4, "mach_obj" @@ -509,7 +521,7 @@ typedef struct { elseif ctx.arch == "arm" then isfat, mobj = true, "mach_fat_obj" elseif ctx.arch == "arm64" then - is64, align, isfat, mobj = true, 8, true, "mach_fat_obj" + is64, align, isfat, mobj = true, 8, true, "mach_fat_obj_64" else check(ctx.arch == "x86", "unsupported architecture for OSX") end