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

Simon Urbanek simon.urbanek at r-project.org
Tue Jun 7 19:52:49 CEST 2005

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

> One first reaction to your suggestions.
> ripley at stats.ox.ac.uk wrote:
>> On Mon, 23 May 2005 vangyzen at stat.duke.edu 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/grDevices.so':
>   /usr/local/R-2.1.0/library/grDevices/libs/grDevices.so: 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.


More information about the R-devel mailing list