From bug-octave-request at bevo dot che dot wisc dot edu Sun Oct 19 03:10:53 1997 Subject: Unidentified subject! From: Vincent Cautaerts To: bug-octave at bevo dot che dot wisc dot edu Date: Sun, 19 Oct 1997 17:09:01 +0900 To: bug-octave at bevo dot che dot wisc dot edu Subject: Changing of C++ function not seen by octave Bug report for Octave 2.0.9 configured for i586-pc-linux-gnu Description: ----------- When writing a function in C++, and compiling it with "mkoctfile", if an octave session is running, it doesn't see the "new" function. Repeat-By: --------- Write a function, say "hello.cc" that outputs "Hello" Compile it with "mkoctfile hello.cc" Run octave, and call the function "hello" => it prints "hello" In another shell, change the function to print "Good morning" Recompile it with "mkoctfile hello.cc" Return to the previous octave session, and call "hello" => it still prints "Hello" [it doesn't see the new version] Exit octave, and re-enter it immediately. Call "hello" => it prints "Good morning" Even if I enter "clear hello" after having compiled the new version of the program, it still does use the old version (that's even not anymore on the hard-disk) => octave does not seem to check the time stamp of the dynamically linked functions. It does not therefore unlink them. Even if this is not automatic, the command "clear hello" should really unlink the function. This is particularly useful when debugging a C++ function. Fix: --- Sorry, I've no idea. Unlinking a dynamically linked function should be possible, since the Linux kernel does it. Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux kid2 2.0.30 #6 Tue Sep 9 11:10:53 JST 1997 i586 unknown configure opts: --prefix=/usr/local --enable-dl --enable-shared --enable-lite-kernel Fortran compiler: FFLAGS: F2C: f2c F2CFLAGS: FLIBS: -lf2c CPPFLAGS: INCFLAGS: -I/usr/local/include -I/usr/local/include/octave-2.0.9 C compiler: gcc, version 2.7.2.2.f.2 CFLAGS: -DHAVE_CONFIG_H -g -O2 -Wall CPICFLAG: -fPIC C++ compiler: c++, version 2.7.2.2.f.2 CXXFLAGS: -DHAVE_CONFIG_H -fno-implicit-templates -g -O2 -Wall CXXPICFLAG: -fPIC LDFLAGS: -g LIBFLAGS: -L/usr/local/lib RLD_FLAG: -Xlinker -rpath -Xlinker /usr/local/lib CXXLIBS: -lstdc++ -lm -L/home/vincent/lib -L. -L/usr/lib/gcc-lib/i586-unknown-linuxlibc1/2.7.2.2.f.2 -lstdc++ -lm -lgcc -lc -lgcc TERMLIBS: -ltermcap LIBS: LEXLIB: LIBPLPLOT: LIBDLFCN: DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DOCTAVE_LITE=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_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_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_TERMCAP_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_ON_EXIT=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_PROGRAM_INVOCATION_NAME=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_ISINF=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 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 User-preferences (please do not edit this section): -------------------------------------------------- EDITOR = "/usr/bin/joe" IMAGEPATH = ".:/usr/local/share/octave/2.0.9/imagelib//" INFO_FILE = "/usr/local/info/octave.info" LOADPATH = ".:~/doctor/octave:~/doctor/octave/functions:/usr/local/libexec/octave/site/oct/i586-pc-linux-gnu//:/usr/local/share/octave/site/m//:/usr/local/libexec/octave/2.0.9/oct/i586-pc-linux-gnu//:/usr/local/share/octave/2.0.9/m//" OCTAVE_VERSION = "2.0.9" PAGER = "less" PS1 = "\\s:\\#> " PS2 = "> " automatic_replot = 0 whitespace_in_literal_matrix = "" default_save_format = "ascii" do_fortran_indexing = 0 empty_list_elements_ok = "warn" eps = 2.22045e-16 gnuplot_binary = "/usr/bin/gnuplot -name Gnuplot[octave]" ignore_function_time_stamp = "system" implicit_str_to_num_ok = 0 ok_to_lose_imaginary_part = "warn" output_max_field_width = 10 output_precision = 5 page_screen_output = 1 prefer_column_vectors = 1 prefer_zero_one_indexing = 0 print_answer_id_name = 1 print_empty_dimensions = 1 propagate_empty_matrices = 1 resize_on_range_error = 1 return_last_computed_value = 0 save_precision = 15 silent_functions = 0 split_long_rows = 1 treat_neg_dim_as_zero = 0 warn_assign_as_truth_value = 1 warn_comma_in_global_decl = 1 warn_divide_by_zero = 1