[Rd] alloca() on FreeBSD (PR#7890)
Rainer Hurling
rhurlin at gwdg.de
Tue Jun 7 22:30:03 CEST 2005
Simon Urbanek wrote:
> 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,
>>>> HAVE_DECL_ALLOCA
>>>> 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.
Simon,
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
More information about the R-devel
mailing list