Issue
Building on an Apple M4 MacBook Pro running macOS Tahoe 26.3.1 fails with the following error:
AS src/core/shim.S
OBJCOPY build/shim.bin
GEN build/shim_blob.h
GEN build/dispatch.h
CC src/main.c
CC src/core/guest.c
CC src/core/elf.c
CC src/core/stack.c
CC src/core/vdso.c
CC src/core/bootstrap.c
CC src/runtime/thread.c
CC src/runtime/futex.c
CC src/runtime/forkipc.c
CC src/runtime/fork-state.c
CC src/runtime/procemu.c
CC src/runtime/proctitle.c
CC src/syscall/syscall.c
src/syscall/syscall.c:865:55: error: use of undeclared identifier 'HV_SYS_REG_ACTLR_EL1'; did you mean 'HV_SYS_REG_SCTLR_EL1'?
865 | hv_vcpu_get_sys_reg(current_thread->vcpu, HV_SYS_REG_ACTLR_EL1,
| ^~~~~~~~~~~~~~~~~~~~
| HV_SYS_REG_SCTLR_EL1
/nix/store/rcqgjj8hphkhqark1ibiwfaa7yrzniz3-apple-sdk-14.4/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Hypervisor.framework/Headers/hv_vcpu_types.h:271:5: note: 'HV_SYS_REG_SCTLR_EL1' declared here
271 | HV_SYS_REG_SCTLR_EL1 = 0xc080,
| ^
1 error generated.
make: *** [mk/common.mk:31: build/syscall/syscall.o] Error 1
Solution (is it though?)
If I patch the code and set HV_SYS_REG_SCTLR_EL1 instead, the build works but then runtime fails:
00:35:53 DEBUG src/core/bootstrap.c:219: ELF entry=0x92400, 3 segments, load range [0x10000, 0x38b2780), machine=aarch64
00:35:53 DEBUG src/core/bootstrap.c:228: IPA size: 40 bits (1024 GiB primary)
00:35:53 DEBUG src/core/bootstrap.c:257: shim loaded at offset 0x100000 (5656 bytes)
00:35:53 DEBUG src/core/bootstrap.c:329: TTBR0=0x10000, IPA base=0x0
00:35:53 DEBUG src/core/bootstrap.c:71: L0[0]=0x11003
00:35:53 DEBUG src/core/bootstrap.c:78: L1[0]=0x12003
00:35:53 DEBUG src/core/bootstrap.c:85: L2[0]=0x14003
00:35:53 DEBUG src/core/bootstrap.c:85: L2[1]=0x15003
00:35:53 DEBUG src/core/bootstrap.c:85: L2[2]=0x4007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[3]=0x6007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[4]=0x8007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[5]=0xa007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[6]=0xc007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[7]=0xe007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[8]=0x10007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[9]=0x12007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[10]=0x14007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[11]=0x16007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[12]=0x16003
00:35:53 DEBUG src/core/bootstrap.c:85: L2[13]=0x60000001a007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[14]=0x60000001c007e5
00:35:53 DEBUG src/core/bootstrap.c:85: L2[15]=0x60000001e007e5
00:35:53 DEBUG src/core/bootstrap.c:370: SP=0x7ffe5b0, entry=0x92400
00:35:53 DEBUG src/core/bootstrap.c:410: SCTLR_EL1 default=0x0
00:35:53 DEBUG src/core/bootstrap.c:428: vCPU configured: PC=0x100000 SCTLR=0x34d0d984 VBAR=0x100800 TTBR0=0x10000 TCR=0x25b5903510
00:35:53 DEBUG src/core/bootstrap.c:431: ELR_EL1=0x92400 SP_EL0=0x7ffe5b0 SP_EL1=0x400000
00:35:53 DEBUG src/core/bootstrap.c:435: main thread registered with SP_EL1=0x400000
00:35:53 DEBUG src/syscall/proc.c:1048: elfuse: [0] vcpu_run PC=0x100000
00:35:53 DEBUG src/syscall/proc.c:1105: elfuse: HVC #2
00:35:53 ERROR src/syscall/proc.c:1699: elfuse: guest exception vec=0x100 ESR=0x2000000 FAR=0x0 ELR=0x100000 SPSR=0x3c5
00:35:53 ERROR src/syscall/proc.c:1705: elfuse: SP_EL0=0x7ffe5b0
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X4 =0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X6 =0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X7 =0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X8 =0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X9 =0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X10=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X11=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X12=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X13=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X14=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X15=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X16=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X17=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X18=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X19=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X20=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X21=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X22=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X23=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X24=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X25=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X26=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X27=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X28=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X29=0x0000000000000000
00:35:53 ERROR src/syscall/proc.c:1713: elfuse: X30=0x0000000000000000
╔══════════════════════════════════════════════════════════╗
║ elfuse crash report ║
╚══════════════════════════════════════════════════════════╝
## Environment
- elfuse version: a49ea1d
- macOS: 26.3.1 (Darwin 25.3.0)
- hardware: Apple M4 Pro
## Crash
- type: BAD_EXCEPTION
- detail: vec=0x100 ESR=0x2000000 FAR=0x0
## Binary
- path: /Users/ngoudry/Downloads/linux-arm64/helm
- cmdline: /Users/ngoudry/Downloads/linux-arm64/helm
## Memory layout
guest_size = 0x10000000000 (1048576 MB, 40-bit IPA)
brk = 0x38b3000 .. 0x38b3000
mmap RW = 0x200000000 .. 0x200200000 (next 0x200000000)
mmap RX = 0x10000000 .. 0x10200000 (next 0x10000000)
interp_base = 0xff00000000 mmap_limit = 0xfe00000000
Runtime crash details
Command line used:
build/elfuse ~/Downloads/linux-arm64/helm
Statically linked binary:
/Users/ngoudry/Downloads/linux-arm64/helm: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, BuildID[sha1]=e6a067b04f6efc6d65ff97fd2a616696cc1f0c60, stripped
Reproducible: always
Guest binary: Helm 4.1.4 for Linux aarch64
Issue
Building on an Apple M4 MacBook Pro running macOS Tahoe 26.3.1 fails with the following error:
Solution (is it though?)
If I patch the code and set
HV_SYS_REG_SCTLR_EL1instead, the build works but then runtime fails:Runtime crash details
Command line used:
Statically linked binary:
Reproducible: always
Guest binary: Helm 4.1.4 for Linux aarch64