Re: [Rd] alloca() on FreeBSD (PR#7890)

From: Rainer Hurling <>
Date: Tue 07 Jun 2005 - 20:30:03 GMT

Simon Urbanek wrote:

> On Jun 7, 2005, at 12:36 PM, Rainer Hurling wrote:

>> One first reaction to your suggestions.
>> wrote:
>>> On Mon, 23 May 2005 wrote:
>>>> R-2.1.0 fails to compile on the newest release of FreeBSD,
>>>> complaining about
>>>> undefined references to __builtin_alloca. On FreeBSD, alloca() is
>>>> declared in
>>>> stdlib.h, not alloca.h as the R sources expect. Therefore,
>>>> does not get set, so the R sources declare alloca() after it has
>>>> already been
>>>> #defined by stdlib.h.
>>>> A possible fix is to modify the configure script to look for the
>>>> declaration of
>>>> alloca() in stdlib.h (perhaps after it fails to find it in alloca.h).
>>> It is already supposed to, so it is not finding the declaration
>>> there either. If you look up the definition of
>>> AC_CHECK_DECLS([alloca], , , [#include <alloca.h>])
>>> it searches in stdlib.h. Can you please send us the appropriate
>>> part of config.log? It may be that this is failing because alloca.h
>>> is not found
>>> (but AC_FUNC_ALLOCA is making the same assumptions).
>>> Perhaps the easiest way out is to override the setting on FreeBSD:
>>> can you please confirm that manually changing
>>> #define HAVE_DECL_ALLOCA 1
>>> in config.h works?
>> Changing "#define HAVE_DECL_ALLOCA" to 1
>> in line 81 of R-2.1.0/src/include/config.h
>> gives me the following stopping:
>> mkdir ../../../../library/grDevices/libs
>> building package 'graphics'
>> mkdir ../../../library/graphics
>> mkdir ../../../library/graphics/R
>> mkdir ../../../library/graphics/demo
>> mkdir ../../../library/graphics/po
>> mkdir ../../../library/graphics/man
>> Error in dyn.load(x, as.logical(local), as.logical(now)) :
>> unable to load shared library '/usr/local/R-2.1.0/library/
>> grDevices/libs/':
>> /usr/local/R-2.1.0/library/grDevices/libs/ Undefined
>> symbol "__builtin_alloca"
>> Execution halted
> Did you run a new, clean build? From the output it seems as if you  just 
> changed the file in your old build and typed make - obviously  that 
> doesn't help at all, because the setting must the changed  *before* you 
> start building. So if you didn't do so, please remove  the build, unpack 
> the sources again, run configure, change the ALLOCA  define and then build.

thank you, but I am absolute sure I made a new, clean built:

1.) untar R-2.1.0.tar.gz
2.) cd R-2.1.0
3.) ./configure
4.) edit src/include/config.h  [#define HAVE_DECL_ALLOCA 1]
5.) make

It seems to me that some files behave not like others in relation to alloca.h (resp. stdlib.h)?

Please tell me, if I can help in any way, Rainer mailing list Received on Wed Jun 08 06:34:59 2005

This archive was generated by hypermail 2.1.8 : Mon 24 Oct 2005 - 22:27:01 GMT