Re: freetds on solaris 11: symbol scope specifies local binding (same problem)

Justin T Pryzby <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
On Mon, Sep 30, 2013 at 10:44:17AM +1300, Brent Jackson wrote:
> I vaguely recall encountering a similar problem when I compiled 
> FreeTDS 0.65 back in 2007.
> 
> I think I avoided the problem by setting the FREETDS_LIBGCC variable 
> in the dtlib/Makefile to explicitly specify my libgcc.a file, so as 
> to use the GCC version of strlen() instead of the Solaris one.

I tried this, it didn't really help; I believe libgcc is a gcc
runtime; there is no solaris libgcc, just solaris libc.

However, in the process of messing around with that idea, I tried
running:
gsed -i 's/strlen/zstrlen/g' src/ctlib/*.c

Which (amazingly) allows the whole thing to compiled (zstrlen is any
random symbol name, not some replacement defined somewhere).  That may
not help much, but it does mean the problem is specific to strlen().

After installing, I even succeeded in compiling DBD::Sybase with:
SYBASE=/usr/local perl Makefile.PL &&
  make CC='gcc -m64' LD='gcc -m64' OPTIMIZE=-O3 CCCDLFLAGS='-fPIC'

I nuked the TDS src dir for further testing; running James' ld command
without "-lc -lsocket -lnsl" confirms the above: many libc functions
are shown as undefined, but only strlen says "(symbol scope specifies
local binding)".

Justin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.