* call runerror(217) instead of halt(217) when using Dwarf-EH in similar

cases as where this happens with the standard SjLj-base exception handling

git-svn-id: branches/debug_eh@40419 -
This commit is contained in:
Jonas Maebe 2018-11-29 21:38:58 +00:00
parent df0a126064
commit aff3a15081

View File

@ -693,7 +693,7 @@ function _FPC_psabieh_personality_v0(version: longint; actions: FPC_Unwind_Actio
{$ifdef excdebug} {$ifdef excdebug}
writeln('foreign exception or force unwind, and found type = found terminate; actions = $',hexstr(actions,sizeof(actions)*2),'; foreign exception ', foreign_exception); writeln('foreign exception or force unwind, and found type = found terminate; actions = $',hexstr(actions,sizeof(actions)*2),'; foreign exception ', foreign_exception);
{$endif} {$endif}
halt(217); RunError(217);
end end
{ can only perform cleanups when force-unwinding } { can only perform cleanups when force-unwinding }
else if handler_switch_value<0 then else if handler_switch_value<0 then
@ -701,7 +701,7 @@ function _FPC_psabieh_personality_v0(version: longint; actions: FPC_Unwind_Actio
{$ifdef excdebug} {$ifdef excdebug}
writeln('foreign exception or force unwind, handler_switch_value < 0: ', handler_switch_value); writeln('foreign exception or force unwind, handler_switch_value < 0: ', handler_switch_value);
{$endif} {$endif}
halt(217) RunError(217)
end end
end end
else else
@ -711,7 +711,7 @@ function _FPC_psabieh_personality_v0(version: longint; actions: FPC_Unwind_Actio
{$ifdef excdebug} {$ifdef excdebug}
writeln('native exception and no force unwind, and force_terminate'); writeln('native exception and no force unwind, and force_terminate');
{$endif} {$endif}
halt(217); RunError(217);
end; end;
end; end;
{ For targets with pointers smaller than the word size, we must extend the { For targets with pointers smaller than the word size, we must extend the
@ -935,7 +935,7 @@ procedure FPC_psabi_end_catch; cdecl; compilerproc;
{$ifdef excdebug} {$ifdef excdebug}
writeln('refcount for exception is negative in end catch'); writeln('refcount for exception is negative in end catch');
{$endif} {$endif}
halt(217); RunError(217);
end; end;
end; end;
_ExceptObjectStack^.refcount:=refcount; _ExceptObjectStack^.refcount:=refcount;
@ -970,7 +970,7 @@ procedure fpc_ReRaise; [public,alias:'FPC_RERAISE']; compilerproc;
ExceptObjectStack:=nil; ExceptObjectStack:=nil;
__cxa_rethrow; __cxa_rethrow;
{ should never be reached } { should never be reached }
halt(217); RunError(217);
end end
{$endif FPC_PSABIEH_CPLUSPLUSSUPPORT} {$endif FPC_PSABIEH_CPLUSPLUSSUPPORT}
else else
@ -995,9 +995,9 @@ procedure fpc_ReRaise; [public,alias:'FPC_RERAISE']; compilerproc;
// #endif // #endif
// #endif // #endif
// Some sort of unwinding error. // Some sort of unwinding error.
halt(217); RunError(217);
end; end;
halt(217); RunError(217);
end; end;
@ -1013,7 +1013,7 @@ procedure fpc_raise_nested;compilerproc;
{$ifdef excdebug} {$ifdef excdebug}
writeln ('raise_nested: At end of ExceptionObjectStack'); writeln ('raise_nested: At end of ExceptionObjectStack');
{$endif} {$endif}
halt(217); halt(1);
end; end;
if _ExceptObjectStack^.unwind_exception.exception_class<>FPC_psabieh_exceptionClass_ID.u then if _ExceptObjectStack^.unwind_exception.exception_class<>FPC_psabieh_exceptionClass_ID.u then
@ -1021,7 +1021,7 @@ procedure fpc_raise_nested;compilerproc;
{$ifdef excdebug} {$ifdef excdebug}
writeln ('raise_nested: top of stack contains foreign exception'); writeln ('raise_nested: top of stack contains foreign exception');
{$endif} {$endif}
halt(217); halt(1);
end; end;
hp:=_ExceptObjectStack^.next; hp:=_ExceptObjectStack^.next;
@ -1037,7 +1037,7 @@ procedure fpc_raise_nested;compilerproc;
else else
dec(hp^.refcount); dec(hp^.refcount);
_Unwind_RaiseException(@_ExceptObjectStack^.unwind_exception); _Unwind_RaiseException(@_ExceptObjectStack^.unwind_exception);
halt(217); RunError(217);
end; end;
procedure FPC_DummyPotentialRaise; nostackframe; assembler; procedure FPC_DummyPotentialRaise; nostackframe; assembler;