[Rd] Fixed: embedded R resolving wrong symbols

Warnes, Gregory R gregory_r_warnes@groton.pfizer.com
Thu, 9 May 2002 12:33:43 -0400


Hi Duncan

Your suggestion to use '-Bsymbolic' proved to be (almost) the solution.  I
tried that and it didn't work because I'm using gcc instead of Sun's
compilers.  It took me a bit of time to discoed that gcc uses '-symbolic'
rather than '-Bsymbolic'.

Once I figured that out, changing 
	LIBR_LDFLAGS = -shared
to
	LIBR_LDFLAGS = -symbolic -shared
in Makeconf resolves the problem, albeit generating a long list of undefined
reference warnings during the link.

-Greg


> -----Original Message-----
> From: Duncan Temple Lang [mailto:duncan@research.bell-labs.com]
> Sent: Wednesday, May 08, 2002 7:15 PM
> To: Warnes, Gregory R
> Cc: 'R-devel@stat.math.ethz.ch'; 'Walter Moreira'
> Subject: Re: embedded R resolving wrong symbols
> 
> 
> Hi Greg.
>   
>  Yes, there are some ways to arrange for tight/eager binding
> rather than dynamically loading libraries. They do depend on
> the linker being used and unfortunately precisely how the
> libraries containing the symbols are being "included".
> 
> One GNU linker option that is of relevance here is -Bsymbolic
> which is documented as
>  "When creating a shared library, bind references to global symbols
>  to the definition within the shared library, if any.  ....."
> 
> As a quick guess, I would add this to R's Makeconf for building
> libR.so so that all possible symbols are resolved locally within that 
> library. Then try linking again.
> 
> 
> I have seen this on several different systems over the past few years
> and I have written up _some_ of the details that I discovered 
> on this topic.
> Unfortunately,  I won't have time to dig them up until I get 
> back to the office at the 
> beginning of next week. Please remind me.
> 
>  D.
> 
> Warnes, Gregory R wrote:
> > 
> > Hi All,
> > 
> > When R is embedded in python on my system (Solaris 8), 
> calls to the c
> > functions 'regcomp' and 'regexec' are being resolved to the 
> c-library,
> > rather than the functions compiled from regex.c.  This 
> leads to segfaults
> > because the c-library functions have quite different semantics.
> > 
> > Is there any way to get around this, other than renaming 
> the offending
> > functions?  E.G., would it be possible to use the '-wrap' 
> argument to ld, or
> > perhaps there is another argument which says 'check inside 
> this library for
> > symbols before looking elsewhere'?
> > 
> > Thanks,
> > 
> > -Greg
> > 
> > ----------------- obligatory version information
> > 
> > R 1.4.1, 1.5.0,
> > gcc 2.95.2, 3.0.3,
> > python 2.1.1, 2.1.3
> > SunOs 5.8, sparc
> > 
> > 
> > 
> > 
> > LEGAL NOTICE
> > Unless expressly stated otherwise, this message is 
> confidential and may be privileged. It is intended for the 
> addressee(s) only. Access to this E-mail by anyone else is 
> unauthorized. If you are not an addressee, any disclosure or 
> copying of the contents of this E-mail or any action taken 
> (or not taken) in reliance on it is unauthorized and may be 
> unlawful. If you are not an addressee, please inform the 
> sender immediately.
> 
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._