comp.lang.ada
 help / color / mirror / Atom feed
From: Lucretia <lucretia9@lycos.co.uk>
Subject: Restricted or no run time in Ada
Date: Wed, 2 Jan 2008 11:19:51 -0800 (PST)
Date: 2008-01-02T11:19:51-08:00	[thread overview]
Message-ID: <dcc6d7b5-fb5b-4096-a066-85f6168a094d@l1g2000hsa.googlegroups.com> (raw)

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.



             reply	other threads:[~2008-01-02 19:19 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-02 19:19 Lucretia [this message]
2008-01-02 20:49 ` Restricted or no run time in Ada anon
2008-01-02 21:33   ` Lucretia
2008-01-03  3:50     ` anon
2008-01-02 22:23   ` Simon Wright
2008-01-02 23:06     ` Lucretia
2008-01-03  5:14       ` roderick.chapman
2008-01-03  7:30         ` Lucretia
2008-01-03  8:00         ` Lucretia
2008-01-03  8:40           ` Lucretia
2008-01-03  9:58         ` anon
2008-01-03 10:22           ` Lucretia
2008-01-03 17:30             ` anon
2008-01-03 20:05               ` Vadim Godunko
2008-01-03 20:22                 ` Lucretia
2008-01-04  9:23                   ` Maxim Reznik
2008-01-04 23:23                     ` Brian May
2008-01-04 12:46                   ` Georg Bauhaus
2008-01-04 13:53                     ` Vadim Godunko
2008-01-04 14:13                     ` Maxim Reznik
2008-01-04 14:15   ` Lucretia
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox