From c0cec218d64e082c373a6f973d4cf2f5798f84fa Mon Sep 17 00:00:00 2001 From: Nikolay Nikolov Date: Tue, 5 Oct 2021 04:06:56 +0300 Subject: [PATCH] + added unhandled exception handling code for the branchful exceptions mode --- rtl/wasi/si_prc.pp | 17 +++++++++++++++++ rtl/wasm32/except_branchful.inc | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/rtl/wasi/si_prc.pp b/rtl/wasi/si_prc.pp index 5ac4903050..35d8a6e690 100644 --- a/rtl/wasi/si_prc.pp +++ b/rtl/wasi/si_prc.pp @@ -17,6 +17,10 @@ unit si_prc; +{$ifdef FPC_WASM_BRANCHFUL_EXCEPTIONS} + {$MODESWITCH EXCEPTIONS} +{$endif} + interface procedure _start; @@ -25,10 +29,23 @@ implementation procedure PASCALMAIN; external 'PASCALMAIN'; +{$ifdef FPC_WASM_BRANCHFUL_EXCEPTIONS} +Procedure DoUnHandledException; external name 'FPC_DOUNHANDLEDEXCEPTION'; + +procedure _start; +begin + try + PASCALMAIN; + except + DoUnhandledException; + end; +end; +{$else} procedure _start; begin PASCALMAIN; end; +{$endif} exports _start; diff --git a/rtl/wasm32/except_branchful.inc b/rtl/wasm32/except_branchful.inc index b8fbadce83..cfd0145c9d 100644 --- a/rtl/wasm32/except_branchful.inc +++ b/rtl/wasm32/except_branchful.inc @@ -134,7 +134,7 @@ begin Result:=NewObj; end; -Procedure DoUnHandledException; +Procedure DoUnHandledException;[Public, Alias : 'FPC_DOUNHANDLEDEXCEPTION']; var _ExceptObjectStack : PExceptObject; begin