From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.36.51.196 with SMTP id k187mr522008itk.18.1498727393334; Thu, 29 Jun 2017 02:09:53 -0700 (PDT) X-Received: by 10.36.88.206 with SMTP id f197mr316402itb.10.1498727393260; Thu, 29 Jun 2017 02:09:53 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.glorb.com!185no2065214itv.0!news-out.google.com!s132ni1463itb.0!nntp.google.com!188no41434itx.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Thu, 29 Jun 2017 02:09:52 -0700 (PDT) In-Reply-To: <12108259-486f-4958-b779-4814ad9a5853@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=144.132.203.17; posting-account=wavAeAoAAAAZF_sXSZepBukuPCBO0Zqt NNTP-Posting-Host: 144.132.203.17 References: <8e27f6c4-050d-4005-ab87-7d9981712c77@googlegroups.com> <12108259-486f-4958-b779-4814ad9a5853@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: gnat-2017 - ZFP add tasking support From: alby.gamper@gmail.com Injection-Date: Thu, 29 Jun 2017 09:09:53 +0000 Content-Type: text/plain; charset="UTF-8" Xref: news.eternal-september.org comp.lang.ada:47169 Date: 2017-06-29T02:09:52-07:00 List-Id: On Monday, June 26, 2017 at 11:35:38 PM UTC+10, Mark Lorenzen wrote: > On Monday, June 26, 2017 at 12:20:49 PM UTC+2, alby....@gmail.com wrote: > > On Monday, June 26, 2017 at 5:56:18 PM UTC+10, Mark Lorenzen wrote: > > > On Monday, June 26, 2017 at 3:20:22 AM UTC+2, alby....@gmail.com wrote: > > > > I was pleasantly surprised that the recent distribution of gnat-2017 (GPL) > > > > included a ZFP for native platforms (mine is windows x86). And the project(s) > > > > compiled cleanly, even on my personal x64 gnat build > > > > > > > > Using this ZFP, along with my WinRT/UWP library, I was a able to build a > > > > simple Hello World (XAML based) that now PASSES the "Windows Store app Certification". Note this is a true blue native Windows Store app, and does > > > > NOT use the bridging/Centennial technology. > > > > > > > > The main caveat in all this is, the use of the ZFP which is fairly > > > > restrictive, and does not allow me to use features of Ada that I feel would be > > > > a must have running under this environment. In particular "Tasking and maybe > > > > controlled types" > > > > > > > > Could someone give me guidance on how to add "Tasking" support to the ZFP ? > > > > I can use the Mingw-64 code base, I assume its not just as simple as adding > > > > these source files to the ZFP source tree ? Is their any other configuration > > > > changes needed other than in system.ads ? > > > > > > > > Thanks > > > > > > > > Alex > > > > > > So you want to use the ZERO footprint run-time system, but at the same time you want to use tasks and controlled types? How does this stack up? > > > > > > Why don't you simply use the default run-time system? > > > > > > Regards, > > > > > > Mark L > > > > Hi Mark > > > > Apologies for the slight confusion, what I should have said/meant was that I > > would like to use the ZFP as a base for a new runtime profile (similar to > > what AdaCore do for some of their non default run-time systems, such as the > > various flavours of Ravenscar and high integrity run-time systems) > > > > And yes I could use the default run-time, but in its current form on mingw-64 > > its NOT certified to be distributed via "Windows Store" since it uses parts > > of the "C/C++" runtime that are not compatible with that environment. > > > > So I have 2 options > > > > 1) Start from the ZFP and add the relevant features such as Tasking > > or > > 2) Use the default runtime and strip out all the "Windows Store" functions > > that are not compatible > > > > I would tend to favour the second approach, but the intent of my original > > question was to try and determine the amount of effort needed for option 1) > > > > Please note that the central theme of incompatibles with the default run-time > > and "windows store" are the following > > > > a) Store apps have no notion of a "Console" so "C" functions like printf > > and family wont work. > > b) "C" functions such as memcpy, memset are NOT supported in "Windows Store" > > c) There are some other functions in libgnat to do with exception handling > > that are also NOT supported in "Windows Store" > > > > I hope this helps in clarifying what I am trying to achieve > > > > Thanks > > > > Alex > > OK that makes sense. I would definately try option 2! > > Try and look in this document for information on restricted run-time systems: http://docs.adacore.com/gnathie_ug-docs/html/gnathie_ug/gnathie_ug.html You should especially check chapter 5. > > Regards, > > Mark L Hi Mark and Simon Thanks for your valued advise, Option 2) was a lot easier to implement than I thought it would be. However in removing the "restricted" functions, and I believe this centres around the SEH (ie exception handling API's such as RtlVirtualUnwind and RtlCaptureContext) I have inadvertently screwed up Ada's exception handling ! I'll try and dig deeper and analyse the issue more deeply, But if anyone could give me pointers on the SEH code in "raise_gcc.c", "unwind_seh.c" and "traceback.c", that would be greatly appreciated. Thanks Alex