comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Drummond <brian_drummond@btconnect.com>
Subject: Re: GNAT's stack checking in Ubuntu 9.04  (and Shootout regex-dna)
Date: Tue, 04 Aug 2009 12:59:56 +0100
Date: 2009-08-04T12:59:56+01:00	[thread overview]
Message-ID: <u18g75108pv06pegc2sk971n97fd11gfjk@4ax.com> (raw)
In-Reply-To: 4a776a94$0$31878$9b4e6d93@newsspool3.arcor-online.net

On Tue, 04 Aug 2009 00:54:11 +0200, Georg Bauhaus
<rm.tsoh.plus-bug.bauhaus@maps.futureapps.de> wrote:

>The GNAT that comes with Ubuntu 9.04 (GCC 4.3.3)
>produces storage errors where GNAT on Debian Lenny
>(GCC 4.3.2) and GNAT 2007 on Windows (4.3.1) don't.
>This happens with larger data structures.
>
>The workaround is to introduce an indirection ... (.-)

Default stack sizes may change between GCC versions and I've had trouble getting
the stack size flags to work on some versions. 

I've done this too. What I don't like is having to change every use of the
indirect variable, so I confine the changes to the declaration...

>--- regexdna.gnat       6d8829eff6a278659ecb6ebc0f03672662de39b8
>+++ regexdna.gnat       09cbee8b34b6bc62a921d8bfc66e2f18cb57eeb6
>@@ -120,7 +120,8 @@ begin
>       Num_Lines := Num_Lines + 1;
>    end if;
>    declare
>-      Sequence_Lines : Dna_Lines(1..Num_Lines);
>+      type Dna_Lines_Pointer is access Dna_Lines;  -- avoids stack issues
>+     -- Sequence_Lines : Dna_Lines_Pointer := new Dna_Lines(1..Num_Lines);
       Sequence_Lines_ptr : Dna_Lines_Pointer := new Dna_Lines(1..Num_Lines);
       Sequence_Lines : Dna_Lines(1..Num_Lines) renames Sequence_Lines_ptr.all;

and now no changes are necessary to the program (which may access the variable
many times)

>      Put(Item => Length(Sequence_Lines), Width => 1);

- Brian




  parent reply	other threads:[~2009-08-04 11:59 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-03 22:54 GNAT's stack checking in Ubuntu 9.04 (and Shootout regex-dna) Georg Bauhaus
2009-08-03 22:56 ` Georg Bauhaus
2009-08-04  7:50   ` Ludovic Brenta
2009-08-04  9:17     ` Georg Bauhaus
2009-08-04  9:58       ` Vadim Godunko
2009-08-04 10:44         ` Georg Bauhaus
2009-08-04 12:30           ` Vadim Godunko
2009-08-04 14:15             ` Georg Bauhaus
2009-08-04 22:20         ` Egil
2009-08-04 15:38       ` Robert A Duff
2009-08-04 11:59 ` Brian Drummond [this message]
2009-08-04 14:18   ` Georg Bauhaus
2009-08-09 19:13   ` Georg Bauhaus
2009-08-10 13:10     ` jonathan
2009-08-10 20:12     ` jonathan
2009-08-10 20:29       ` Ludovic Brenta
2009-08-10 23:34       ` Georg Bauhaus
2009-08-11 20:02         ` jonathan
2009-08-11 21:19           ` jonathan
2009-08-11 21:38           ` Georg Bauhaus
2009-08-11  0:27       ` Georg Bauhaus
2009-08-11 19:05         ` jonathan
2009-08-12  9:32           ` Ludovic Brenta
2009-08-12 16:37             ` jonathan
replies disabled

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