From: anon@anon.org (anon)
Subject: Re: How do I go about creating a minimal GNAT runtime?
Date: Sun, 22 Feb 2009 01:36:38 GMT
Date: 2009-02-22T01:36:38+00:00 [thread overview]
Message-ID: <G_1ol.34072$4m1.12652@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: %8_nl.20866$Ws1.1319@nlpi064.nbdc.sbc.com
Well Ada has a set of rules, for Critical Mass. that insures that the critical
issues will be handle in a safe matter but Modula 3 and other languages are
not force to deal with these issues. These safety factors can cause a lot of
dead or not used code to be included in your project which means that Ada
may not give you a small footprint that your looking for, but Ravenscar and the
other pragma can decrease the footprint.
As for the free GPL GNAT series using the embedded uClibc, dietlibc or
Misra C libraries, you will have to write the links, or you can check with
Adacore to see if the GNAT PRO series contain those libraries. If they do,
you can look for a price tag of $15K or more per year to use them.
As for using direct C libraries, well there are many problems. One, is the
Tasking control, Ada has a set of packages to handle tasking which standard
C's fork routine can only wish for.
In <%8_nl.20866$Ws1.1319@nlpi064.nbdc.sbc.com>, Dimonax <dimonax@nospam.net> writes:
>On Sat, 21 Feb 2009 16:41:27 +0000, anon wrote:
>
>> First, thing you need to do, is to decide on what you want your RTL
>> system for. That we can not help you.
>>
>> As for the 64k RTL, Forget it. The size depends upon what you want the
>> RTL to be able to do. And are you talking about Stand-Alone OS or using
>> limited links into the OS.
>>
>> Well there are many ways to try to do the job. Here are a few ideas.
>>
>> First. Use "pagma Ravenscar ;". Limits some of the RTL. In some cases,
>> it can reduce the dead code.
>>
>> Second, use "pragma Restrictions" and "pragma Suppress" to remove
>> unused packages and checks that add a large group of routines that you
>> may not need, such as exceptions. Which means, trap your own errors
>> instead of letting the compiler do it.
>>
>> Third, use simple replacement packages like GNAT.IO instead of
>> Ada.Text_IO which contains routines for files and stream I/O as well
>> as exceptions. This, is not standard but it can remove alot of dead
>> code.
>>
>> Fourth, you can always fall back and use mix languages, like using C
>> for the RTL. But at some point you will use another lang. becase GNAT
>> and other version of Ada mostly use links to the OS. for files and
>> interrupts handling.
>>
>> One person, back in the late 1990s rewote the GNAT Ada RTL packages
>> to use mostly "pragma Import" statement to the C and OS compiler
>> libraries. But that not true Ada it C.
>>
>> And then there the obsolete feature "pragma No_Run_Time ;". This
>> statement allows the 4K footprint. Note: Will this feature be there in
>> the next version of GNAT Ada? Only time will tell.
>
>Alright, so maybe 64k is overkill(when was the last time a 3D app ran in
>less than 64k). I have been hacking the Critical Mass Modula 3 compiler
>to get it up to par.(The build system sucks.) That can potentially
>produce 64k executables.
>
>
>>
>> Now, for simpler full feature RTL (based on RM), you might rework the
>> GNAT RTL, but there is not a lot that you can do. You might save a
>> little memory but for the amount of time you spend, it not worth it. No
>> where near the limits you are looking for.
>
>Well, the nice thing is that the runtime footprint can be as large as I
>need it to be.(Could be gigabyte size if I were to do something that
>absurd.) Really I just need to be able to compress the generated binaries
>(executables and object files) down to thier smallest size possible.
>
>> The only way is to write a miminal RTL is to write a Stand-Alone OS. But
>> be prepared to spend years of research and writting code just to find
>> out your OS will no longer work on those PC at that time. Outdated
>> before you start! You need a plan wih team that can get job done within
>> a year or so. But that's a full time job.
>
>Given that Gnat typically does a lot of calls out to C, is it possible to
>hack Gnat to just use system calls? Also, can the RTL be linked with
>uClibc or dietlibc to provide the requisite C API?
>
>Maybe Adacore might want to do some experimentation with some embedded C
>libs like uClibc or a Misra C lib and tell us if they think it's
>worthwhile. I'd pay for it.
>
>I'm well aware of the usefullness of Pragma Restrictions in reducing
>executable size. Also such things as Pragma Discard_Names and other nifty
>things.
>I'll start digging into the Gnat libraries and see what those do.
>
>Thanks.
>
>Freejack
>
next prev parent reply other threads:[~2009-02-22 1:36 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-24 20:47 How do I go about creating a minimal GNAT runtime? Lucretia
2009-01-25 11:13 ` Ludovic Brenta
2009-01-25 11:18 ` Ludovic Brenta
2009-01-25 14:00 ` Lucretia
2009-01-25 14:00 ` Lucretia
2009-01-25 19:43 ` Ludovic Brenta
2009-01-25 20:30 ` xavier grave
2009-01-26 6:52 ` anon
2009-01-26 21:36 ` anon
2009-02-10 2:34 ` Exceptions (was Re: How do I go about creating a minimal GNAT runtime?) anon
2009-02-16 1:41 ` How do I go about creating a minimal GNAT runtime? Hibou57 (Yannick Duchêne)
2009-02-21 9:11 ` Dimonax
2009-02-21 16:41 ` anon
2009-02-21 21:14 ` Dimonax
2009-02-22 1:36 ` anon [this message]
2009-02-27 23:42 ` Randy Brukardt
2009-03-01 1:12 ` Dimonax
2009-03-01 19:13 ` anon
2009-03-02 22:07 ` Randy Brukardt
2009-03-03 2:00 ` anon
2009-03-03 22:23 ` lucretia
2009-03-04 0:03 ` anon
2009-03-11 12:54 ` gautier_niouzes
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox