Subject: Re: bug#6170: 24.0.50; Compiling on solaris2.10 with gcc doesn't define alloca

From: Lawrence Mitchell <[email-masked]>
Date: Mon, 31 May 2010 17:42:34 +0100

Dan Nicolaescu wrote:
> Lawrence Mitchell <[email-masked]> writes:

>> On this system, <stdlib.h> is provided by Sun and therefore
>> doesn't define alloca, unlike on a typical GNU/linux system where
>> <stdlib.h> contains the following:

>> | #if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC
>> | # include <alloca.h>
>> | #endif /* Use GNU, BSD, or misc.  */

>> When compiling emacs with gcc, alloca is therefore undefined.
>> The culprit is this snippet in configure.in:

>> | #ifndef __GNUC__
>> | # ifdef HAVE_ALLOCA_H
>> | #  include <alloca.h>
>> | # else /* AIX files deal with #pragma.  */
>> | #  ifndef alloca /* predefined by HP cc +Olibcalls */
>> | char *alloca ();
>> | #  endif
>> | # endif /* HAVE_ALLOCA_H */
>> | #endif /* __GNUC__ */

> "info autoconf" says that this is the proper way to do it:

>           #ifdef HAVE_ALLOCA_H
>           # include <alloca.h>
>           #elif defined __GNUC__
>           # define alloca __builtin_alloca
>           #elif defined _AIX
>           # define alloca __alloca
>           #elif defined _MSC_VER
>           # include <malloc.h>
>           # define alloca _alloca
>           #else
>           # include <stddef.h>
>           # ifdef  __cplusplus
>           extern "C"
>           # endif
>           void *alloca (size_t);
>           #endif

> Not sure we need the last #else part, or the _MSC_VER part...

Is there any movement on getting this fix, or something like it,
installed?  It doesn't seem like a controversial change.

Cheers,
Lawrence

-- 
Lawrence Mitchell <[email-masked]>