mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 10:59:18 +02:00
* change the exception address is only useful if a valid frame is passed
git-svn-id: branches/debug_eh@41377 -
This commit is contained in:
parent
a24d75ed3d
commit
9e67e7311a
@ -981,9 +981,15 @@ procedure fpc_RaiseException_Internal(Obj: TObject; AnAddr: CodePointer; AFrame:
|
|||||||
{ tweak stack, so we get the correct context, this requires assembly }
|
{ tweak stack, so we get the correct context, this requires assembly }
|
||||||
procedure fpc_RaiseException(Obj: TObject; AnAddr: CodePointer; AFrame: Pointer); compilerproc;assembler; nostackframe;
|
procedure fpc_RaiseException(Obj: TObject; AnAddr: CodePointer; AFrame: Pointer); compilerproc;assembler; nostackframe;
|
||||||
asm
|
asm
|
||||||
movl AFrame,%ebp
|
{ loading the address makes only sense if a frame is passed, else unwinding is completly mixed up }
|
||||||
movl AnAddr,(%esp)
|
orl AFrame,AFrame
|
||||||
jmpl fpc_RaiseException_Internal
|
je .L1
|
||||||
|
movl AFrame,%ebp
|
||||||
|
orl AnAddr,AnAddr
|
||||||
|
je .L1
|
||||||
|
movl AnAddr,(%esp)
|
||||||
|
.L1:
|
||||||
|
jmpl fpc_RaiseException_Internal
|
||||||
end;
|
end;
|
||||||
{$define PSABI_HANDLESCONTEXT}
|
{$define PSABI_HANDLESCONTEXT}
|
||||||
{$endif CPUI386}
|
{$endif CPUI386}
|
||||||
|
Loading…
Reference in New Issue
Block a user