Re: [fpc-pascal] question about _fpc_local_unwind
Am 02.02.2018 18:12 schrieb "Matias Vara": Hello, 2018-02-02 17:17 GMT+01:00 Sven Barth via fpc-pascal < fpc-pascal@lists.freepascal.org>: > Am 02.02.2018 15 <02%2002%2020%2018%2015>:50 schrieb "Matias Vara" < > matiasev...@gmail.com>: > > Thanks for the answer, I will imitate in Toro the behavior of Win64. > > > Maybe it wound be better if you try to use the i386-embedded or > x86_64-embedded targets. The non-embedded targets are simply not geared > towards usage on a bare platform > > Thanks for the suggestion, I don't think I am able to do that since the whole kernel compiles well by using the Win64 target. So I am not planing to change the target. I notice that the code is in rtl/win64/seh64.inc so I am starting to try to understand it. Most of the exception handling and unwinding is done by Windows, relying on specific sections in the binary. You essentially picked one of the worst targets to implement your kernel with... Another plus of the embedded target: you can disable RTL features that you don't need (e.g. RTTI, threading, etc.). Regards, Sven Regards, Sven ___ 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
Hello, 2018-02-02 17:17 GMT+01:00 Sven Barth via fpc-pascal < fpc-pascal@lists.freepascal.org>: > Am 02.02.2018 15 <02%2002%2020%2018%2015>:50 schrieb "Matias Vara" < > matiasev...@gmail.com>: > > Thanks for the answer, I will imitate in Toro the behavior of Win64. > > > Maybe it wound be better if you try to use the i386-embedded or > x86_64-embedded targets. The non-embedded targets are simply not geared > towards usage on a bare platform > > Thanks for the suggestion, I don't think I am able to do that since the whole kernel compiles well by using the Win64 target. So I am not planing to change the target. I notice that the code is in rtl/win64/seh64.inc so I am starting to try to understand it. Matias > Regards, > Sven > > ___ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal > ___ 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
Am 02.02.2018 15:50 schrieb "Matias Vara": Thanks for the answer, I will imitate in Toro the behavior of Win64. Maybe it wound be better if you try to use the i386-embedded or x86_64-embedded targets. The non-embedded targets are simply not geared towards usage on a bare platform. Regards, Sven ___ 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
Thanks for the answer, I will imitate in Toro the behavior of Win64. Matias 2018-02-01 20:49 GMT+01:00 Jonas Maebe: > On 01/02/18 16:24, Matias Vara wrote: > >> I partial answered my question by reading https://www.freepascal.org/doc >> s-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 ___ 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
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
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
[fpc-pascal] question about _fpc_local_unwind
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