Tcl Source Code

View Ticket
Login
Ticket UUID: 874194
Title: missing -lm when building shared lib on OSF/1
Type: Patch Version: None
Submitter: rcalmbac Created on: 2004-01-10 00:08:48
Subsystem: 53. Configuration and Build Tools Assigned To: stwo
Priority: 5 Medium Severity: Minor
Status: Open Last Modified: 2016-08-25 10:56:14
Resolution: Fixed Closed By: nobody
    Closed on: 2006-03-28 22:49:35
Description:
For Tcl 8.4.5, when building the shared lib (configure
--enable-shared) on Digital OSF/1 V4.0, user
executables that link against libtcl8.4.so (-ltcl) and
that don't need the math library libm.so themselves,
suddenly need a -lm on the link command line, otherwise
there will be runtime errors due to unresolved symbols
from libm.so. Previously (with Tcl 8.3.4), it was not
necessary to have the -lm flag, so the Tcl upgrade
breaks existing user Makefiles.

I found that building libtcl8.4.so with -lm on the link
command line solves the problem. This seems to put
enough information into libtcl8.4.so for the runtime
linker to be able to resolve all symbols. So instead of

ld -shared -expect_unresolved "*" -o libtcl8.4.so 
${OBJS} -rpath
/work/cvim1/src/tcl/tcl8.4.5/install/osf1-alpha/lib

I do

ld -shared -expect_unresolved "*" -o libtcl8.4.so 
${OBJS} -lm -rpath
/work/cvim1/src/tcl/tcl8.4.5/install/osf1-alpha/lib

This is easily accomplished by doing

$ gmake SHLIB_LD_LIBS=-lm

So, a way to fix this problem would be to change line
1345 in unix/tcl.m4 from

            SHLIB_LD_LIBS=""

to

            SHLIB_LD_LIBS="-lm"
User Comments: rcalmbac added on 2006-03-30 02:41:37:
Logged In: YES 
user_id=687758

The output of

nm -Pn libm.a | grep sin

includes this line:

sin                   T 0x00000000000010 0x00000000000008

and the man page defines type 'T' as "External text". I
assume this means 'sin' is actually defined in libm.a.

We don't really use OSF1 any more, but if there is some
quick test you want me to do, let me know. All I know is
that the rather simple fix given solved the problem at the time.

hobbs added on 2006-03-29 05:49:35:
Logged In: YES 
user_id=72656

MATH_LIBS is included in TCL_LIBS for unix, which is where
-lm would be, unless 'sin' is in libc on OSF.