Re: [fpc-pascal] question about _fpc_local_unwind

2018-02-01 Thread Jonas Maebe

On 01/02/18 16:24, Matias Vara wrote:
I partial answered my question by reading 
https://www.freepascal.org/docs-html/ref/refse114.html. So I think 
_fpc_local_unwind() is used to call the finally section when "Exit" is 
executed in the "Try" section. It is not clear yet what the parameters 
"frame,target: Pointer" are meant to. I checked the code generated in 
Linux and is a bit different. It is base on the functions 
FPC_PUSHEXCEPTADDR and FPC_POPADDRSTACK, which It seems much more clear. 
Is it possible to generate a similar code in the case of Win64? In other 
words, is it possible to tell the compiler "generate the 
'try-finally-end' block as in Linux"? I don't think so but It is worth 
to ask.


No, it is not possible. On Win64 the compiler and RTL use so-called 
structured exception handling (SEH), which is required to interoperate 
with code generated by other compilers. See 
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680657(v=vs.85).aspx 
for more information.



Jonas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] question about _fpc_local_unwind

2018-02-01 Thread Matias Vara
Hello,
I partial answered my question by reading
https://www.freepascal.org/docs-html/ref/refse114.html. So I think
_fpc_local_unwind() is used to call the finally section when "Exit" is
executed in the "Try" section. It is not clear yet what the parameters
"frame,target: Pointer" are meant to. I checked the code generated in Linux
and is a bit different. It is base on the functions FPC_PUSHEXCEPTADDR
and FPC_POPADDRSTACK, which It seems much more clear. Is it possible to
generate a similar code in the case of Win64? In other words, is it
possible to tell the compiler "generate the 'try-finally-end' block as in
Linux"? I don't think so but It is worth to ask.

Thanks, Matias.


2018-01-31 11:17 GMT+01:00 Matias Vara :

> Hello eveyryone,
>
> in my rtl for torokernel, I have to implement "_fpc_local_unwind()"
> however I am not sure about the expected behavior of this function. It
> appers in the code when I use "Exit" inside a "try finally" structure. I
> would like to know what this function should do. So if someone can point me
> to some documetation would be very helpful,
>
> Thanks, Matias.
>
>
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal