This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: variable length automatic arrays.
- From: Nick Garnett <nickg at ecoscentric dot com>
- To: Andrew Lunn <andrew at lunn dot ch>
- Cc: Billy <billy at dadadada dot net>,eCos discussion <ecos-discuss at sources dot redhat dot com>
- Date: 18 Apr 2005 14:01:02 +0100
- Subject: Re: [ECOS] variable length automatic arrays.
- References: <42627DC6.8070006@dadadada.net> <20050417153843.GU21136@lunn.ch>
Andrew Lunn <andrew@lunn.ch> writes:
> On Sun, Apr 17, 2005 at 11:16:22AM -0400, Billy wrote:
> > Short question:
> >
> > Does eCos allocate dynamically sized arrays?
> >
> > Longer version:
> >
> > I'm worried about dynamic arrays under arm-elf-gcc 3.3.4.
> >
> > Looks like our application code, at least, is being adversely
> > affected by this bug:
> >
> > "gcc-3.3: Miscompiles automatic dynamic arrays"
> > http://lists.debian.org/debian-gcc/2004/07/msg00135.html
> >
> > So we're going through our app hunting these down. Upgrading
> > the compiler to 3.4 might fix it, but new parser fussiness
> > appears to be making that a more painful option than bughunting.
> >
> > Does eCos code rely on this gcc feature? Do we have
> > to audit eCos code for varlength automatic arrays
> > or just our app code?
>
> eCos should not be using this feature.
The failure referred to in the Debian list seems to be only under
specific conditions with -mpreferred-stack-boundary=2, which only
applied to x86 targets. The default value is 4, for 16 byte stack
alignment. This is also the stack alignment that eCos attempts to
maintain. So it it probably a good idea to remove that option.
On a general point, variable length auto arrays are a very bad idea in
embedded systems. It makes it very difficult to estimate stack usage,
which can result in stack overflow and memory corruption. Just say no.
--
Nick Garnett eCos Kernel Architect
http://www.ecoscentric.com The eCos and RedBoot experts
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss