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=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,1ea992d578e9f621,start X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!postnews.google.com!l1g2000hsa.googlegroups.com!not-for-mail From: Lucretia Newsgroups: comp.lang.ada Subject: Restricted or no run time in Ada Date: Wed, 2 Jan 2008 11:19:51 -0800 (PST) Organization: http://groups.google.com Message-ID: NNTP-Posting-Host: 90.194.162.37 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: posting.google.com 1199301591 31889 127.0.0.1 (2 Jan 2008 19:19:51 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 2 Jan 2008 19:19:51 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: l1g2000hsa.googlegroups.com; posting-host=90.194.162.37; posting-account=L2-UcQkAAAAfd_BqbeNHs3XeM0jTXloS User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.10) Gecko/20061201 Firefox/2.0.0.10 (Ubuntu-feisty),gzip(gfe),gzip(gfe) Xref: g2news1.google.com comp.lang.ada:19149 Date: 2008-01-02T11:19:51-08:00 List-Id: Hi, I've posted this to the gcc ml as well, but I honestly don't think I'll get anywhere with that so I'm posting it here as well. I got a simple hello world style multiboot kernel working again recently and it has got me thinking about how I should be using GNAT. Basically, I built a cross compiler for binutils and gcc to target i386-elf (I will be wanting to play with other targets in the future, e.g. mips-elf, arm-elf, sparc-elf, etc.). This gives me the following toolset: i386-elf-addr2line i386-elf-gcc i386-elf-gprof i386-elf-ranlib i386-elf-ar i386-elf-gcc-4.2.2 i386-elf-ld i386-elf- readelf i386-elf-as i386-elf-gccbug i386-elf-nm i386-elf-size i386-elf-c++filt i386-elf-gcov i386-elf-objcopy i386-elf- strings i386-elf-cpp i386-elf-gnatbind i386-elf-objdump i386-elf-strip Which is fine enough as I can compile Ada sources with gcc. Now to get my kernel to compile I originally used pragma No_Run_Time which is now obsolete. I heard about the Zero Foot Print configurable runtime but couldn't get it to compile some of the source files and I couldn't figure out why. I then tried to use the new Ada 2005 pragma Restrictions and put the following in my gnat.adc: -- Basic stuff. pragma Restrictions(No_Obsolescent_Features); pragma Restrictions(No_Exceptions); pragma Restrictions(No_Recursion); -- Memory management. pragma Restrictions(No_Allocators); pragma Restrictions(No_Local_Allocators); pragma Restrictions(No_Unchecked_Deallocation); --pragma Restrictions(No_); -- Make sure we don't have tasking or any of it's features enabled. pragma Restrictions(Max_Tasks => 0); pragma Restrictions(No_Protected_Types); pragma Restrictions(No_Delay); pragma Restrictions(No_Task_Hierarchy); pragma Restrictions(No_Abort_Statements); pragma Restrictions(No_Implicit_Heap_Allocations); pragma Restrictions(No_Asynchronous_Control); I'm sure there are more I can use, I'm not sure about that. Now, AFAIK I'm fairly sure I don't need to use the binder as that will create a "main" including argc, argv, etc which you don't have in a kernel (obviously), but I'm sure there are some elaborations that aren't being done that I *should* have. I basically want to develop a microkernel that doesn't use the Ada runtime as an executive, I know this is the usual route, but I don't want to do that. An Ada runtime on top of my kernel is fine though. So, am I going the right way about this? Or is there something else I should be doing? Am I missing pragma's or using them wrong? Should I really be building a minimal runtime such that I can use Ada minus exceptions, tasking, etc? Thanks, Luke.