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
next prev 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