← board

Exception runtime on cross targets (i386 / ARM32 / AArch64)

Motivation

try/except, try/finally, and raise are unsupported on every cross target — EnableExceptionRuntime and the exception IR ops (IR_EXC_ENTER/LEAVE/MATCH/ STORE/CLEAR, IR_RAISE) are x86-64 machine code only. compiler.pas itself is built around try/except (the Error path), so this is the dominant wall for the cross self-host (see feature-cross-bootstrap-selfhost). Cross compiling the compiler currently fails fast: target arm32: builtin/exception runtime not yet supported.

Scope

Acceptance

A program using try/except/raise compiles and runs on i386, ARM32, AArch64 with output identical to x86-64 (oracle). New test/test_cross_exception.pas joins the cross suites.

Notes

Log