diff options
| author | Mike Pall <mike> | 2022-07-12 22:25:33 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2022-07-12 22:25:33 +0200 |
| commit | b98b37231bd2dcb79e10b0f974cefd91eb0d7b3a (patch) | |
| tree | 602d5e43e2d06af71b0102dd12f87c4585fbd7dd | |
| parent | 6bda30d8c745b3963ba870221b9be6acdffed9b1 (diff) | |
| download | luajit-b98b37231bd2dcb79e10b0f974cefd91eb0d7b3a.tar.gz luajit-b98b37231bd2dcb79e10b0f974cefd91eb0d7b3a.tar.bz2 luajit-b98b37231bd2dcb79e10b0f974cefd91eb0d7b3a.zip | |
OSX/iOS/ARM64: Fix bytecode embedding in Mach-O object file.
Thanks to Carlo Cabrera.
| -rw-r--r-- | src/jit/bcsave.lua | 14 |
1 files changed, 13 insertions, 1 deletions
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 { | |||
| 501 | mach_nlist sym_entry; | 501 | mach_nlist sym_entry; |
| 502 | uint8_t space[4096]; | 502 | uint8_t space[4096]; |
| 503 | } mach_fat_obj; | 503 | } mach_fat_obj; |
| 504 | typedef struct { | ||
| 505 | mach_fat_header fat; | ||
| 506 | mach_fat_arch fat_arch[2]; | ||
| 507 | struct { | ||
| 508 | mach_header_64 hdr; | ||
| 509 | mach_segment_command_64 seg; | ||
| 510 | mach_section_64 sec; | ||
| 511 | mach_symtab_command sym; | ||
| 512 | } arch[2]; | ||
| 513 | mach_nlist_64 sym_entry; | ||
| 514 | uint8_t space[4096]; | ||
| 515 | } mach_fat_obj_64; | ||
| 504 | ]] | 516 | ]] |
| 505 | local symname = '_'..LJBC_PREFIX..ctx.modname | 517 | local symname = '_'..LJBC_PREFIX..ctx.modname |
| 506 | local isfat, is64, align, mobj = false, false, 4, "mach_obj" | 518 | local isfat, is64, align, mobj = false, false, 4, "mach_obj" |
| @@ -509,7 +521,7 @@ typedef struct { | |||
| 509 | elseif ctx.arch == "arm" then | 521 | elseif ctx.arch == "arm" then |
| 510 | isfat, mobj = true, "mach_fat_obj" | 522 | isfat, mobj = true, "mach_fat_obj" |
| 511 | elseif ctx.arch == "arm64" then | 523 | elseif ctx.arch == "arm64" then |
| 512 | is64, align, isfat, mobj = true, 8, true, "mach_fat_obj" | 524 | is64, align, isfat, mobj = true, 8, true, "mach_fat_obj_64" |
| 513 | else | 525 | else |
| 514 | check(ctx.arch == "x86", "unsupported architecture for OSX") | 526 | check(ctx.arch == "x86", "unsupported architecture for OSX") |
| 515 | end | 527 | end |
