Re: cvs commit: src/share/mk bsd.sys.mk

From: Peter Wemm <peter_at_wemm.org>
Date: Sat, 14 Jun 2003 00:01:35 -0700
Tim Robbins wrote:
> On Sat, Jun 14, 2003 at 12:39:33AM +0200, Dag-Erling Smorgrav wrote:
> 
> > Peter Wemm <peter_at_FreeBSD.org> writes:
> > >   Log:
> > >   We cannot use c99 on amd64 either due to lack of alloca().  libc:strpti
    me()
> > >   uses alloca() and alloca is impossible to implement as a callable funct
    ion
> > >   on amd64.  It has to be a compiler builtin.  Note that the bigger probl
    em
> > >   is that libc is not c99 clean internally.
> > 
> > #define alloca(sz) __builtin_alloca(sz)
> 
> That would be fine in the __GNUC__ >= 2 && __BSD_VISIBLE case.
> 
> For the other cases, I think we should also take the alloca() implementation
> from contrib/amd/libamu/alloca.c and throw out lib/libc/i386/gen/alloca.S.
> That way we get GCC's fast and conventional alloca() implementation for
> !CSTD=c?9 programs, and a slower alloca() that uses the heap and sometimes
> leaks memory for CSTD=c?9 programs (and programs that are compiled with
> non-GCC compilers without their own alloca() implementation).

We really really dont want to use that alloca.c except as an absolute last
resort.  I mean Really.  It is Nasty.  I would rather that we removed alloca()
entirely from the tree rather than use alloca.c by default for any of our
released platforms.

I'd even rather have /usr/include/alloca.h with
#define alloca(n) __builtin_alloca(n)  if there are namespace concerns.

Autoconf knows how to look for #include <alloca.h>, FWIW.

> > and please remove CSTD?=c99 from bsd.sys.mk, it was never intended to
> > be used that way.
> 
> I agree.

I think so too, or at the very least use gnu99.

Cheers,
-Peter
--
Peter Wemm - peter_at_wemm.org; peter_at_FreeBSD.org; peter_at_yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5
Received on Sat Jun 14 2003 - 00:01:36 UTC