#37 undefined symbol TCL_REG_BOSONLY

closed-fixed
None
5
2010-08-28
2007-01-12
Larry W. Virden
No

expect being built with tcl 8.5a6 cvs head (jan 12, 2007), on sparc solaris 9 (on sun's c compiler).
tcl was configure with:
--prefix=/projects/sprs_lwv/tcl85 \ --enable-shared --enable-threads \ --enable-64bit

expect was configured with the same arguments.
Here's the compile error I see:

cc -DPACKAGE_NAME=\"expect\" -DPACKAGE_TARNAME=\"expect\" -DPACKAGE_VERSION=\"5.
43.0\" -DPACKAGE_STRING=\"expect\ 5.43.0\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADE
RS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=
1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_UNISTD_H=1 -DW
ORDS_BIGENDIAN=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_
REENTRANT=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 -D_REE
NTRANT=1 -D_POSIX_PTHREAD_SEMANTICS=1 -DTCL_WIDE_INT_IS_LONG=1 -DUSE_TCL_STUBS=1
-DHAVE_SYS_SELECT_H=1 -DHAVE_SYSMACROS_H=1 -DHAVE_VARARGS_H=1 -DHAVE_STROPTS_H=
1 -DHAVE_SYSCONF_H=1 -DHAVE_SYS_FCNTL_H=1 -DHAVE_SYS_PTEM_H=1 -DHAVE_STRREDIR_H=
1 -DRETSIGTYPE=void -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TZNAME=1 -
DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_TIMEZONE_VAR=1 -DNO_UNION_WAIT=1 -D
SOLARIS=1 -DHAVE_MEMMOVE=1 -DHAVE_SYSCONF=1 -DHAVE_STRFTIME=1 -DHAVE_STRCHR=1 -D
HAVE_TIMEZONE=1 -DHAVE_SIGLONGJMP=1 -DHAVE_MEMCPY=1 -DWNOHANG_BACKUP_VALUE=64 -D
SELECT_MASK_TYPE=fd_set -DREARM_SIG=1 -DHAVE_PTMX=1 -DHAVE_TCSETATTR=1 -DPOSIX=1
-DHAVE_SGTTYB=1 -DHAVE_TERMIO=1 -DHAVE_TERMIOS=1 -DHAVE_TCGETS_OR_TCGETA_IN_TER
MIOS_H=1 -DHAVE_TIOCGWINSZ_IN_TERMIOS_H=1 -DSETPGRP_VOID=1 -DHAVE_SV_TIMEZONE=1
-DHAVE_LONG_FILE_NAMES=1 -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR=\"/projects
/sprs_lwv/tcl85/lib/expect5.43.0\" -DEXECSCRIPTDIR=\"/projects/sprs_lwv/tcl85/li
b/expect5.43.0\" -DSTTY_BIN=\"/bin/stty\" -DDFLT_STTY="\"sane\"" -I. -I".." -I"/
vol/tclsrcsol/tcl85/tcl/generic" -I"/vol/tclsrcsol/tcl85/tcl/unix" -I"/vol/tclsr
csol/tcl85/tk/generic" -xarch=v9 -KPIC -c `echo ../exp_inter.c` -o exp_inte
r.o
"../exp_inter.c", line 294: undefined symbol: TCL_REG_BOSONLY
"../exp_inter.c", line 866: undefined symbol: TCL_REG_BOSONLY

Discussion

  • Don Porter
    Don Porter
    2007-01-16

    Logged In: YES
    user_id=80530
    Originator: NO

    See Tcl Bug 926500 and
    ChangeLog entry for 2006-11-22.

    Fix is for the source code
    file exp_inter.c to change
    its line

    #include "tcl.h"

    to

    #include "tclInt.h"

     
  • Logged In: YES
    user_id=15949
    Originator: YES

    After making this change to the cvs head copy of expect, the module compiled. However, the code did not link. Here is the error that I received:
    /usr/ccs/bin/ld -G -z text -o libexpect5.43.0.so exp_command.o expect.o exp_inte
    r.o exp_regexp.o exp_tty.o exp_log.o exp_main_sub.o exp_pty.o exp_trap.o exp_str
    f.o exp_console.o exp_glob.o exp_win.o exp_clib.o exp_closetcl.o exp_memmove.o e
    xp_tty_comm.o exp_chan.o Dbg.o pty_termios.o exp_select.o exp_event.o -ldl -lso
    cket -lnsl -lm -R /projects/sprs_lwv/tcl85/lib -L/vol/tclsrcsol/tcl85/tcl/unix -
    ltclstub8.5 -L/vol/tclsrcsol/tcl85/tk/unix -ltkstub8.5
    ld: fatal: relocation error: R_SPARC_64: file /vol/tclsrcsol/tcl85/tcl/unix/libt
    clstub8.5.a(tclStubLib.o): symbol <unknown>: offset 0xffffffff7c36d9e9 is non-al
    igned
    gmake: *** [libexpect5.43.0.so] Error 1

     
  • Logged In: YES
    user_id=15949
    Originator: YES

    I found the solution to the last problem. While my expect was being build with Sun's C compiler, this morning's cvs head got built in a different window - one without CC=cc exported :-( and so it was built with gcc. That resulted in the symbol problem.

    After rebuilding tcl with cc, and after the edit to expect previously mentioned in this but report, it now builds without error. There's a couple failed test suite cases, but that is likely more a factor of this being Tcl 8.5 than expect...

     
  • Logged In: YES
    user_id=75003
    Originator: NO

    Fixed in head, 5.44.1.4 now. Needed header tclInt.h instead of plain tcl.h.

     
    • assigned_to: nobody --> andreas_kupries
    • status: open --> open-fixed
     
  • Jeffrey Hobbs
    Jeffrey Hobbs
    2010-08-28

    • status: open-fixed --> closed-fixed