From bug-octave-request at bevo dot che dot wisc dot edu Mon Sep 15 07:57:18 1997 Subject: [50 character or so descriptive subject here (for reference)] From: hanke at wias-berlin dot de (Michael Hanke) To: bug-octave at bevo dot che dot wisc dot edu Date: Mon, 15 Sep 1997 14:56:36 +0200 Bug report for Octave 2.0.9 configured for mips-sgi-irix6.2 Description: ----------- I wrote some routines which are dynamically included into octave (a c++ wrapper for some Fortran programs). These routines consist of two user callable functions: A function to set and recall parameters and another function to make the numerical computations. These two routines communicate by a globally visible static array. In order to make them both visible to octave, I named the first one by routine.oct while the other one is a soft link routine_parameter.oct to routine.oct. While this works fine on a DEC Digital Unix 4.0 box, the IRIX loads two copies of that modul (having the same global symbols!) without looking first if the wanted symbol FS...Fv can already be resolved. So both routines cannot communicate with each other since they have different copies of their "global" parameters. Repeat-By: --------- The above mentioned behaviour can be simply reproduced: 1. Write a routine ROUTINE.cc as follows: #include #include static int par = 0; DEFUN_DLD(set_par, , , "SET") { par = 1; octave_value_list retval((double) par); return retval; } DEFUN_DLD(get_par, , , "GET") { octave_value_list retval((double) par); return retval; } 2. mkoctfile --output get_par.oct ROUTINE.cc 3. ln -s get_par.oct set_par.oct 4. Start octave. then: octave:1> set_par nas = 1 octave:2> get_par ans = 0 Fix: --- Urgently wanted, please. Is there a possibility to decide if an oct file contains more than one function definition? Configuration (please do not edit this section): ----------------------------------------------- uname output: IRIX quine 6.2 03131015 IP22 configure opts: --prefix=/home/unix/ode/hanke Fortran compiler: f77 FFLAGS: -O F2C: F2CFLAGS: FLIBS: -L/usr/lib/ -lftn -lm -lc CPPFLAGS: INCFLAGS: -I/home/unix/ode/hanke/include -I/home/unix/ode/hanke/include/octave-2.0.9 C compiler: gcc, version 2.7.2.3 CFLAGS: -DHAVE_CONFIG_H -O2 -Wall CPICFLAG: C++ compiler: c++, version 2.7.2.3 CXXFLAGS: -DHAVE_CONFIG_H -fno-implicit-templates -O2 -Wall CXXPICFLAG: LDFLAGS: -g LIBFLAGS: -L/home/unix/ode/hanke/lib RLD_FLAG: -L/home/unix/ode/hanke/lib CXXLIBS: -lsocket -lsun -lsocket -lsun -lstdc++ -lm -L/home/unix/ode/hanke/kde/lib -L/home/unix/ode/hanke/qt/lib -L/home/unix/ode/hanke/lib -L. -L/home/unix/ode/hanke/lib/gcc-lib/mips-sgi-irix5.3/2.7.2.3 -L/home/unix/ode/hanke/lib -lsocket -lsun -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/libsun.a /home/unix/ode/hanke/lib/libstdc++.a /home/unix/ode/hanke/lib/gcc-lib/mips-sgi-irix5.3/2.7.2.3/libgcc.a TERMLIBS: -lcurses LIBS: LEXLIB: LIBPLPLOT: LIBDLFCN: DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DHAVE_LIBSUN=1 -DHAVE_LIBSOCKET=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_IEEEFP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_PWD_H=1 -DHAVE_SGTTY_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_LIBM=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TZNAME=1 -DHAVE_GR_PASSWD=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DGNUPLOT_HAS_MULTIPLOT=1 -DGNUPLOT_HAS_FRAMES=1