Hi Bruno,
Thank you for quick the response.
There is no sigprocmask.lo in this list. This is normal; gnulib's sigprocmask.c
is not compiled on glibc systems. You can see from the gnulib documentation
<http://www.gnu.org/software/gnulib/manual/html_node/sigprocmask.html>
that this source file is only compiled on mingw platforms.
Indeed. Placing an "#error" line in sigprocmask.cc did not disrupt the
build.
Also, the generated signal.h is built with HAVE_SIGSET_T being replaced with 1,
therefore it does not redefine the 'sigset_t' type.
In<https://savannah.gnu.org/bugs/?30685> you write:
A change (similar to Leonardo's) that seems to work while theoretically
maintaining sigaction
functionality is to explicitly call the sigemptyset macro (bits/sigset.h):
octave-3.4.0/src/sighandlers.cc line 225
//gnulib::sigemptyset (&act.sa_mask);
//gnulib::sigemptyset (&oact.sa_mask);
//gnulib::sigaction (sig,&act,&oact);
__sigemptyset (&act.sa_mask);
__sigemptyset (&oact.sa_mask);
sigaction (sig,&act,&oact);
(only removing the namespace didn't work for me either)
This indicates that the crucial difference is between the __sigemptyset
macro and the sigemptyset functions, both from glibc.
This report might be misleading, and there might not be a difference.
When I removed the gnulib namespace from the file entirely, and
recompiled, octave started and ran. The problem with this report was
that there were still some instances of "gnulib::" on other function
calls. I suspect this was also the case when others removed "gnulib" on
sigemptyset and it still crashed (presumably on the subsequent
gnulib::sigaction).
Or if 'sigemptyset' would work fine, then the crucial difference would
be in the function pointer indirection by which gnulib implements the
'gnulib::sigemptyset' function in term of the 'sigemptyset' function
pointer.
In order to debug this, I would recommend to look at
- the source code of the __sigemptyset macro and of the sigemptyset
function,
From /usr/include/bits/sigset.h
# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
{
unsigned long int __val[_SIGSET_NWORDS];
} __sigset_t;
# define __sigemptyset(set) \
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
sigset_t *__set = (set); \
while (--__cnt >= 0) __set->__val[__cnt] = 0; \
0; }))
I am unable to find source code for the sigemptyset function of glibc.
- the assembly level instructions where it crashes:
#0 0xb785896c in sigemptyset () from
/home/muttoni/a/octave-3.3.53/src/.libs/liboctinterp-3.3.53.so
because it's not clear why liboctinterp-3.3.53.so would contain
a sigemptyset function at all (since gnulib's one is not being
compiled).
This is naive speculation, but perhaps liboctinterp is involved because
"gnulib::sigemptyset" is being called, instead of simply "sigemptyset"?
As mentioned above, I removed all references of "gnulib::" from the
problem file and recompiled, and it seemed to run fine. With the
namespace declared, it reliably crashes. Perhaps a link issue? This
speculation is discrepant with reports in the original octave bug, but
in those cases people (seem to have) only removed "gnulib::" from
sigemptyset, leaving the other instances intact. If I do that, it does
crash.
Assembly instructions at breakpoint shortly before crash. Crash occurs
stepping past instruction at 0x2b630861baff.
Breakpoint 1, octave_set_signal_handler (sig=2,
handler=0x2b630861c080 <sigint_handler>, restart_syscalls=true)
at sighandlers.cc:206
206 act.sa_flags = 0;
2: x/10i $pc
0x2b630861bae3 <_Z25octave_set_signal_handleriPFviEb+35>:
---Type <return> to continue, or q <return> to quit---
movl $0x0,0x128(%rsp)
0x2b630861baee <_Z25octave_set_signal_handleriPFviEb+46>:
je 0x2b630861bb50 <_Z25octave_set_signal_handleriPFviEb+144>
0x2b630861baf0 <_Z25octave_set_signal_handleriPFviEb+48>: test %dl,%dl
0x2b630861baf2 <_Z25octave_set_signal_handleriPFviEb+50>:
je 0x2b630861baff <_Z25octave_set_signal_handleriPFviEb+63>
0x2b630861baf4 <_Z25octave_set_signal_handleriPFviEb+52>:
movl $0x10000000,0x128(%rsp)
0x2b630861baff <_Z25octave_set_signal_handleriPFviEb+63>:
lea 0xa0(%rsp),%r12
0x2b630861bb07 <_Z25octave_set_signal_handleriPFviEb+71>:
lea 0x8(%r12),%rdi
0x2b630861bb0c <_Z25octave_set_signal_handleriPFviEb+76>:
callq 0x2b630905ede8 <sigemptyset>
0x2b630861bb11 <_Z25octave_set_signal_handleriPFviEb+81>:
lea 0x8(%rsp),%rdi
0x2b630861bb16 <_Z25octave_set_signal_handleriPFviEb+86>:
callq 0x2b630905ede8 <sigemptyset>
1: x/3i $pc
0x2b630861bae3 <_Z25octave_set_signal_handleriPFviEb+35>:
movl $0x0,0x128(%rsp)
0x2b630861baee <_Z25octave_set_signal_handleriPFviEb+46>:
je 0x2b630861bb50 <_Z25octave_set_signal_handleriPFviEb+144>
---Type <return> to continue, or q <return> to quit---
0x2b630861baf0 <_Z25octave_set_signal_handleriPFviEb+48>: test %dl,%dl
Current language: auto; currently c++
(gdb)
-------------------------------------
Assembly instructions at crash
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
0x00002b630905ede8 in sigemptyset ()
from
/global/home/keith/software/octave-3.4.0/src/.libs/liboctinterp-3.4.0.so
2: x/10i $pc
0x2b630905ede8 <sigemptyset>: callq 0x2b636c0ef3da
0x2b630905eded <sigemptyset+5>: sub (%rax),%eax
0x2b630905edef <sigemptyset+7>: add %dh,%al
0x2b630905edf1 <sigaction+1>: in (%dx),%eax
0x2b630905edf2 <sigaction+2>: add $0x2b6309,%eax
0x2b630905edf7 <sigaction+7>: add %bh,%al
0x2b630905edf9 <sigaddset+1>: in (%dx),%eax
0x2b630905edfa <sigaddset+2>: add $0x2b6309,%eax
0x2b630905edff <sigaddset+7>: add %al,(%rax)
0x2b630905ee01 <sigprocmask+1>: out %al,(%dx)
1: x/3i $pc
0x2b630905ede8 <sigemptyset>: callq 0x2b636c0ef3da
0x2b630905eded <sigemptyset+5>: sub (%rax),%eax
0x2b630905edef <sigemptyset+7>: add %dh,%al
(gdb)
- the preprocessed source file (g++ -E -dD) of the compilation unit
that contains the gnulib::sigemptyset invocation.
It's beyond my mental capacity right now to parse the make command and
set up the proper environment to do this manually. I've attached make
output that includes "sighandlers", in case that might be of help. If
it's necessary, I can try to get preprocessor output.
Keith
Bruno
-DMAKE_BUILTINS sighandlers.cc | ./mkdefs . sighandlers.cc >
sighandlers.df-t
mv sighandlers.df-t sighandlers.df
./mkbuiltins bitfcns.df data.df debug.df defaults.df dirfns.df error.df
file-io.df graphics.df help.df input.df lex.df load-path.df load-save.df
ls-oct-ascii.df mappers.df oct-hist.df oct-parse.df octave.df pager.df
pr-output.df sighandlers.df sparse.df strfns.df symtab.df syscalls.df sysdep.df
toplev.df utils.df variables.df ov-base.df ov-bool-mat.df ov-cell.df
ov-class.df ov-fcn-handle.df ov-fcn-inline.df ov-flt-re-mat.df ov-null-mat.df
ov-range.df ov-re-mat.df ov-struct.df ov-typeinfo.df ov-usr-fcn.df ov.df
ov-int16.df ov-int32.df ov-int64.df ov-int8.df ov-uint16.df ov-uint32.df
ov-uint64.df ov-uint8.df pt-arg-list.df pt-binop.df pt-eval.df pt-mat.df >
builtins.cc-t
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I..
-I../libgnu -I../libgnu -I../libcruft/misc -I../liboctave -I../liboctave -I.
-I. -g -O2 -DHAVE_CONFIG_H -Wall -W -Wshadow -Wold-style-cast -Wformat
-Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2 -pthread -g -O2
-MT liboctinterp_la-sighandlers.lo -MD -MP -MF
.deps/liboctinterp_la-sighandlers.Tpo -c -o liboctinterp_la-sighandlers.lo
`test -f 'sighandlers.cc' || echo './'`sighandlers.cc
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I../libgnu -I../libgnu
-I../libcruft/misc -I../liboctave -I../liboctave -I. -I. -g -O2 -DHAVE_CONFIG_H
-Wall -W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings
-Wcast-align -Wcast-qual -g -O2 -pthread -g -O2 -MT
liboctinterp_la-sighandlers.lo -MD -MP -MF
.deps/liboctinterp_la-sighandlers.Tpo -c sighandlers.cc -fPIC -DPIC -o
.libs/liboctinterp_la-sighandlers.o
mv -f .deps/liboctinterp_la-sighandlers.Tpo
.deps/liboctinterp_la-sighandlers.Plo
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -DHAVE_CONFIG_H -Wall
-W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings
-Wcast-align -Wcast-qual -g -O2 -pthread -g -O2 -release 3.4.0 -bindir
/global/home/keith/local/bin -L/usr/lib64/atlas_GenuineIntel_x86_64/ -o
liboctinterp.la -rpath /global/home/keith/local/lib/octave-3.4.0
liboctinterp_la-Cell.lo liboctinterp_la-bitfcns.lo
liboctinterp_la-c-file-ptr-stream.lo liboctinterp_la-comment-list.lo
liboctinterp_la-cutils.lo liboctinterp_la-data.lo liboctinterp_la-debug.lo
liboctinterp_la-defaults.lo liboctinterp_la-defun.lo liboctinterp_la-dirfns.lo
liboctinterp_la-display.lo liboctinterp_la-dynamic-ld.lo
liboctinterp_la-error.lo liboctinterp_la-file-io.lo
liboctinterp_la-gl-render.lo liboctinterp_la-gl2ps-renderer.lo
liboctinterp_la-graphics.lo liboctinterp_la-gripes.lo liboctinterp_la-help.lo
liboctinterp_la-input.lo liboctinterp_la-lex.lo liboctinterp_la-load-path.lo
liboctinterp_la-load-save.lo liboctinterp_la-ls-ascii-helper.lo
liboctinterp_la-ls-hdf5.lo liboctinterp_la-ls-mat-ascii.lo
liboctinterp_la-ls-mat4.lo liboctinterp_la-ls-mat5.lo
liboctinterp_la-ls-oct-ascii.lo liboctinterp_la-ls-oct-binary.lo
liboctinterp_la-ls-utils.lo liboctinterp_la-mappers.lo
liboctinterp_la-matherr.lo liboctinterp_la-mex.lo liboctinterp_la-oct-fstrm.lo
liboctinterp_la-oct-hist.lo liboctinterp_la-oct-iostrm.lo
liboctinterp_la-oct-lvalue.lo liboctinterp_la-oct-map.lo
liboctinterp_la-oct-obj.lo liboctinterp_la-oct-parse.lo
liboctinterp_la-oct-prcstrm.lo liboctinterp_la-oct-procbuf.lo
liboctinterp_la-oct-stream.lo liboctinterp_la-oct-strstrm.lo
liboctinterp_la-octave.lo liboctinterp_la-pager.lo liboctinterp_la-pr-output.lo
liboctinterp_la-procstream.lo liboctinterp_la-sighandlers.lo
liboctinterp_la-siglist.lo liboctinterp_la-sparse.lo
liboctinterp_la-sparse-xdiv.lo liboctinterp_la-sparse-xpow.lo
liboctinterp_la-strfns.lo liboctinterp_la-symtab.lo liboctinterp_la-syscalls.lo
liboctinterp_la-sysdep.lo liboctinterp_la-token.lo liboctinterp_la-toplev.lo
liboctinterp_la-txt-eng-ft.lo liboctinterp_la-unwind-prot.lo
liboctinterp_la-utils.lo liboctinterp_la-variables.lo liboctinterp_la-xdiv.lo
liboctinterp_la-xgl2ps.lo liboctinterp_la-xnorm.lo liboctinterp_la-xpow.lo
liboctinterp_la-zfstream.lo liboctinterp_la-ov-base.lo
liboctinterp_la-ov-bool-mat.lo liboctinterp_la-ov-bool.lo
liboctinterp_la-ov-builtin.lo liboctinterp_la-ov-cell.lo
liboctinterp_la-ov-ch-mat.lo liboctinterp_la-ov-class.lo
liboctinterp_la-ov-colon.lo liboctinterp_la-ov-complex.lo
liboctinterp_la-ov-cs-list.lo liboctinterp_la-ov-cx-diag.lo
liboctinterp_la-ov-cx-mat.lo liboctinterp_la-ov-dld-fcn.lo
liboctinterp_la-ov-fcn-handle.lo liboctinterp_la-ov-fcn-inline.lo
liboctinterp_la-ov-fcn.lo liboctinterp_la-ov-float.lo
liboctinterp_la-ov-flt-complex.lo liboctinterp_la-ov-flt-cx-diag.lo
liboctinterp_la-ov-flt-cx-mat.lo liboctinterp_la-ov-flt-re-diag.lo
liboctinterp_la-ov-flt-re-mat.lo liboctinterp_la-ov-lazy-idx.lo
liboctinterp_la-ov-mex-fcn.lo liboctinterp_la-ov-null-mat.lo
liboctinterp_la-ov-perm.lo liboctinterp_la-ov-range.lo
liboctinterp_la-ov-re-diag.lo liboctinterp_la-ov-re-mat.lo
liboctinterp_la-ov-scalar.lo liboctinterp_la-ov-str-mat.lo
liboctinterp_la-ov-struct.lo liboctinterp_la-ov-typeinfo.lo
liboctinterp_la-ov-usr-fcn.lo liboctinterp_la-ov.lo liboctinterp_la-ov-int16.lo
liboctinterp_la-ov-int32.lo liboctinterp_la-ov-int64.lo
liboctinterp_la-ov-int8.lo liboctinterp_la-ov-uint16.lo
liboctinterp_la-ov-uint32.lo liboctinterp_la-ov-uint64.lo
liboctinterp_la-ov-uint8.lo liboctinterp_la-ov-base-sparse.lo
liboctinterp_la-ov-bool-sparse.lo liboctinterp_la-ov-cx-sparse.lo
liboctinterp_la-ov-re-sparse.lo liboctinterp_la-pt-arg-list.lo
liboctinterp_la-pt-assign.lo liboctinterp_la-pt-binop.lo
liboctinterp_la-pt-bp.lo liboctinterp_la-pt-cbinop.lo
liboctinterp_la-pt-cell.lo liboctinterp_la-pt-check.lo
liboctinterp_la-pt-cmd.lo liboctinterp_la-pt-colon.lo
liboctinterp_la-pt-const.lo liboctinterp_la-pt-decl.lo
liboctinterp_la-pt-eval.lo liboctinterp_la-pt-except.lo
liboctinterp_la-pt-exp.lo liboctinterp_la-pt-fcn-handle.lo
liboctinterp_la-pt-id.lo liboctinterp_la-pt-idx.lo liboctinterp_la-pt-jump.lo
liboctinterp_la-pt-loop.lo liboctinterp_la-pt-mat.lo liboctinterp_la-pt-misc.lo
liboctinterp_la-pt-pr-code.lo liboctinterp_la-pt-select.lo
liboctinterp_la-pt-stmt.lo liboctinterp_la-pt-unop.lo liboctinterp_la-pt.lo
OPERATORS/liboctinterp_la-op-b-b.lo OPERATORS/liboctinterp_la-op-b-bm.lo
OPERATORS/liboctinterp_la-op-b-sbm.lo OPERATORS/liboctinterp_la-op-bm-b.lo
OPERATORS/liboctinterp_la-op-bm-bm.lo OPERATORS/liboctinterp_la-op-bm-sbm.lo
OPERATORS/liboctinterp_la-op-cdm-cdm.lo OPERATORS/liboctinterp_la-op-cdm-cm.lo
OPERATORS/liboctinterp_la-op-cdm-cs.lo OPERATORS/liboctinterp_la-op-cdm-dm.lo
OPERATORS/liboctinterp_la-op-cdm-m.lo OPERATORS/liboctinterp_la-op-cdm-s.lo
OPERATORS/liboctinterp_la-op-cell.lo OPERATORS/liboctinterp_la-op-chm.lo
OPERATORS/liboctinterp_la-op-class.lo OPERATORS/liboctinterp_la-op-cm-cdm.lo
OPERATORS/liboctinterp_la-op-cm-cm.lo OPERATORS/liboctinterp_la-op-cm-cs.lo
OPERATORS/liboctinterp_la-op-cm-dm.lo OPERATORS/liboctinterp_la-op-cm-m.lo
OPERATORS/liboctinterp_la-op-cm-pm.lo OPERATORS/liboctinterp_la-op-cm-s.lo
OPERATORS/liboctinterp_la-op-cm-scm.lo OPERATORS/liboctinterp_la-op-cm-sm.lo
OPERATORS/liboctinterp_la-op-cs-cm.lo OPERATORS/liboctinterp_la-op-cs-cs.lo
OPERATORS/liboctinterp_la-op-cs-m.lo OPERATORS/liboctinterp_la-op-cs-s.lo
OPERATORS/liboctinterp_la-op-cs-scm.lo OPERATORS/liboctinterp_la-op-cs-sm.lo
OPERATORS/liboctinterp_la-op-dm-cdm.lo OPERATORS/liboctinterp_la-op-dm-cm.lo
OPERATORS/liboctinterp_la-op-dm-cs.lo OPERATORS/liboctinterp_la-op-dm-dm.lo
OPERATORS/liboctinterp_la-op-dm-m.lo OPERATORS/liboctinterp_la-op-dm-s.lo
OPERATORS/liboctinterp_la-op-dm-scm.lo OPERATORS/liboctinterp_la-op-dm-sm.lo
OPERATORS/liboctinterp_la-op-double-conv.lo
OPERATORS/liboctinterp_la-op-fcdm-fcdm.lo
OPERATORS/liboctinterp_la-op-fcdm-fcm.lo
OPERATORS/liboctinterp_la-op-fcdm-fcs.lo
OPERATORS/liboctinterp_la-op-fcdm-fdm.lo
OPERATORS/liboctinterp_la-op-fcdm-fm.lo OPERATORS/liboctinterp_la-op-fcdm-fs.lo
OPERATORS/liboctinterp_la-op-fcm-fcdm.lo
OPERATORS/liboctinterp_la-op-fcm-fcm.lo OPERATORS/liboctinterp_la-op-fcm-fcs.lo
OPERATORS/liboctinterp_la-op-fcm-fdm.lo OPERATORS/liboctinterp_la-op-fcm-fm.lo
OPERATORS/liboctinterp_la-op-fcm-fs.lo OPERATORS/liboctinterp_la-op-fcm-pm.lo
OPERATORS/liboctinterp_la-op-fcn.lo OPERATORS/liboctinterp_la-op-fcs-fcm.lo
OPERATORS/liboctinterp_la-op-fcs-fcs.lo OPERATORS/liboctinterp_la-op-fcs-fm.lo
OPERATORS/liboctinterp_la-op-fcs-fs.lo OPERATORS/liboctinterp_la-op-fdm-fcdm.lo
OPERATORS/liboctinterp_la-op-fdm-fcm.lo OPERATORS/liboctinterp_la-op-fdm-fcs.lo
OPERATORS/liboctinterp_la-op-fdm-fdm.lo OPERATORS/liboctinterp_la-op-fdm-fm.lo
OPERATORS/liboctinterp_la-op-fdm-fs.lo
OPERATORS/liboctinterp_la-op-float-conv.lo
OPERATORS/liboctinterp_la-op-fm-fcdm.lo OPERATORS/liboctinterp_la-op-fm-fcm.lo
OPERATORS/liboctinterp_la-op-fm-fcs.lo OPERATORS/liboctinterp_la-op-fm-fdm.lo
OPERATORS/liboctinterp_la-op-fm-fm.lo OPERATORS/liboctinterp_la-op-fm-fs.lo
OPERATORS/liboctinterp_la-op-fm-pm.lo OPERATORS/liboctinterp_la-op-fs-fcm.lo
OPERATORS/liboctinterp_la-op-fs-fcs.lo OPERATORS/liboctinterp_la-op-fs-fm.lo
OPERATORS/liboctinterp_la-op-fs-fs.lo OPERATORS/liboctinterp_la-op-i16-i16.lo
OPERATORS/liboctinterp_la-op-i32-i32.lo OPERATORS/liboctinterp_la-op-i64-i64.lo
OPERATORS/liboctinterp_la-op-i8-i8.lo
OPERATORS/liboctinterp_la-op-int-concat.lo
OPERATORS/liboctinterp_la-op-int-conv.lo OPERATORS/liboctinterp_la-op-m-cdm.lo
OPERATORS/liboctinterp_la-op-m-cm.lo OPERATORS/liboctinterp_la-op-m-cs.lo
OPERATORS/liboctinterp_la-op-m-dm.lo OPERATORS/liboctinterp_la-op-m-m.lo
OPERATORS/liboctinterp_la-op-m-pm.lo OPERATORS/liboctinterp_la-op-m-s.lo
OPERATORS/liboctinterp_la-op-m-scm.lo OPERATORS/liboctinterp_la-op-m-sm.lo
OPERATORS/liboctinterp_la-op-pm-cm.lo OPERATORS/liboctinterp_la-op-pm-fcm.lo
OPERATORS/liboctinterp_la-op-pm-fm.lo OPERATORS/liboctinterp_la-op-pm-m.lo
OPERATORS/liboctinterp_la-op-pm-pm.lo OPERATORS/liboctinterp_la-op-pm-scm.lo
OPERATORS/liboctinterp_la-op-pm-sm.lo OPERATORS/liboctinterp_la-op-range.lo
OPERATORS/liboctinterp_la-op-s-cm.lo OPERATORS/liboctinterp_la-op-s-cs.lo
OPERATORS/liboctinterp_la-op-s-m.lo OPERATORS/liboctinterp_la-op-s-s.lo
OPERATORS/liboctinterp_la-op-s-scm.lo OPERATORS/liboctinterp_la-op-s-sm.lo
OPERATORS/liboctinterp_la-op-sbm-b.lo OPERATORS/liboctinterp_la-op-sbm-bm.lo
OPERATORS/liboctinterp_la-op-sbm-sbm.lo OPERATORS/liboctinterp_la-op-scm-cm.lo
OPERATORS/liboctinterp_la-op-scm-cs.lo OPERATORS/liboctinterp_la-op-scm-m.lo
OPERATORS/liboctinterp_la-op-scm-s.lo OPERATORS/liboctinterp_la-op-scm-scm.lo
OPERATORS/liboctinterp_la-op-scm-sm.lo OPERATORS/liboctinterp_la-op-sm-cm.lo
OPERATORS/liboctinterp_la-op-sm-cs.lo OPERATORS/liboctinterp_la-op-sm-m.lo
OPERATORS/liboctinterp_la-op-sm-s.lo OPERATORS/liboctinterp_la-op-sm-scm.lo
OPERATORS/liboctinterp_la-op-sm-sm.lo OPERATORS/liboctinterp_la-op-str-m.lo
OPERATORS/liboctinterp_la-op-str-s.lo OPERATORS/liboctinterp_la-op-str-str.lo
OPERATORS/liboctinterp_la-op-struct.lo
OPERATORS/liboctinterp_la-op-ui16-ui16.lo
OPERATORS/liboctinterp_la-op-ui32-ui32.lo
OPERATORS/liboctinterp_la-op-ui64-ui64.lo
OPERATORS/liboctinterp_la-op-ui8-ui8.lo
TEMPLATE-INST/liboctinterp_la-Array-os.lo
TEMPLATE-INST/liboctinterp_la-Array-tc.lo liboctinterp_la-builtins.lo
liboctinterp_la-oct-errno.lo liboctinterp_la-ops.lo -Wl,-rpath
-Wl,/global/home/keith/local/lib/octave-3.4.0 ../liboctave/liboctave.la
../libcruft/libcruft.la ../libcruft/libranlib.la ../libgnu/libgnu.la -lfftw3
-lfftw3f -lz -lX11 -lreadline -lncurses -llapack -lcblas -lf77blas
-latlas -lm -L/usr/lib64/atlas_GenuineIntel_x86_64/
-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2
-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64 -L/lib/../lib64
-L/usr/lib/../lib64 -lgfortranbegin -lgfortran -lm -lm
libtool: link: g++ -shared -nostdlib
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o
.libs/liboctinterp_la-Cell.o .libs/liboctinterp_la-bitfcns.o
.libs/liboctinterp_la-c-file-ptr-stream.o .libs/liboctinterp_la-comment-list.o
.libs/liboctinterp_la-cutils.o .libs/liboctinterp_la-data.o
.libs/liboctinterp_la-debug.o .libs/liboctinterp_la-defaults.o
.libs/liboctinterp_la-defun.o .libs/liboctinterp_la-dirfns.o
.libs/liboctinterp_la-display.o .libs/liboctinterp_la-dynamic-ld.o
.libs/liboctinterp_la-error.o .libs/liboctinterp_la-file-io.o
.libs/liboctinterp_la-gl-render.o .libs/liboctinterp_la-gl2ps-renderer.o
.libs/liboctinterp_la-graphics.o .libs/liboctinterp_la-gripes.o
.libs/liboctinterp_la-help.o .libs/liboctinterp_la-input.o
.libs/liboctinterp_la-lex.o .libs/liboctinterp_la-load-path.o
.libs/liboctinterp_la-load-save.o .libs/liboctinterp_la-ls-ascii-helper.o
.libs/liboctinterp_la-ls-hdf5.o .libs/liboctinterp_la-ls-mat-ascii.o
.libs/liboctinterp_la-ls-mat4.o .libs/liboctinterp_la-ls-mat5.o
.libs/liboctinterp_la-ls-oct-ascii.o .libs/liboctinterp_la-ls-oct-binary.o
.libs/liboctinterp_la-ls-utils.o .libs/liboctinterp_la-mappers.o
.libs/liboctinterp_la-matherr.o .libs/liboctinterp_la-mex.o
.libs/liboctinterp_la-oct-fstrm.o .libs/liboctinterp_la-oct-hist.o
.libs/liboctinterp_la-oct-iostrm.o .libs/liboctinterp_la-oct-lvalue.o
.libs/liboctinterp_la-oct-map.o .libs/liboctinterp_la-oct-obj.o
.libs/liboctinterp_la-oct-parse.o .libs/liboctinterp_la-oct-prcstrm.o
.libs/liboctinterp_la-oct-procbuf.o .libs/liboctinterp_la-oct-stream.o
.libs/liboctinterp_la-oct-strstrm.o .libs/liboctinterp_la-octave.o
.libs/liboctinterp_la-pager.o .libs/liboctinterp_la-pr-output.o
.libs/liboctinterp_la-procstream.o .libs/liboctinterp_la-sighandlers.o
.libs/liboctinterp_la-siglist.o .libs/liboctinterp_la-sparse.o
.libs/liboctinterp_la-sparse-xdiv.o .libs/liboctinterp_la-sparse-xpow.o
.libs/liboctinterp_la-strfns.o .libs/liboctinterp_la-symtab.o
.libs/liboctinterp_la-syscalls.o .libs/liboctinterp_la-sysdep.o
.libs/liboctinterp_la-token.o .libs/liboctinterp_la-toplev.o
.libs/liboctinterp_la-txt-eng-ft.o .libs/liboctinterp_la-unwind-prot.o
.libs/liboctinterp_la-utils.o .libs/liboctinterp_la-variables.o
.libs/liboctinterp_la-xdiv.o .libs/liboctinterp_la-xgl2ps.o
.libs/liboctinterp_la-xnorm.o .libs/liboctinterp_la-xpow.o
.libs/liboctinterp_la-zfstream.o .libs/liboctinterp_la-ov-base.o
.libs/liboctinterp_la-ov-bool-mat.o .libs/liboctinterp_la-ov-bool.o
.libs/liboctinterp_la-ov-builtin.o .libs/liboctinterp_la-ov-cell.o
.libs/liboctinterp_la-ov-ch-mat.o .libs/liboctinterp_la-ov-class.o
.libs/liboctinterp_la-ov-colon.o .libs/liboctinterp_la-ov-complex.o
.libs/liboctinterp_la-ov-cs-list.o .libs/liboctinterp_la-ov-cx-diag.o
.libs/liboctinterp_la-ov-cx-mat.o .libs/liboctinterp_la-ov-dld-fcn.o
.libs/liboctinterp_la-ov-fcn-handle.o .libs/liboctinterp_la-ov-fcn-inline.o
.libs/liboctinterp_la-ov-fcn.o .libs/liboctinterp_la-ov-float.o
.libs/liboctinterp_la-ov-flt-complex.o .libs/liboctinterp_la-ov-flt-cx-diag.o
.libs/liboctinterp_la-ov-flt-cx-mat.o .libs/liboctinterp_la-ov-flt-re-diag.o
.libs/liboctinterp_la-ov-flt-re-mat.o .libs/liboctinterp_la-ov-lazy-idx.o
.libs/liboctinterp_la-ov-mex-fcn.o .libs/liboctinterp_la-ov-null-mat.o
.libs/liboctinterp_la-ov-perm.o .libs/liboctinterp_la-ov-range.o
.libs/liboctinterp_la-ov-re-diag.o .libs/liboctinterp_la-ov-re-mat.o
.libs/liboctinterp_la-ov-scalar.o .libs/liboctinterp_la-ov-str-mat.o
.libs/liboctinterp_la-ov-struct.o .libs/liboctinterp_la-ov-typeinfo.o
.libs/liboctinterp_la-ov-usr-fcn.o .libs/liboctinterp_la-ov.o
.libs/liboctinterp_la-ov-int16.o .libs/liboctinterp_la-ov-int32.o
.libs/liboctinterp_la-ov-int64.o .libs/liboctinterp_la-ov-int8.o
.libs/liboctinterp_la-ov-uint16.o .libs/liboctinterp_la-ov-uint32.o
.libs/liboctinterp_la-ov-uint64.o .libs/liboctinterp_la-ov-uint8.o
.libs/liboctinterp_la-ov-base-sparse.o .libs/liboctinterp_la-ov-bool-sparse.o
.libs/liboctinterp_la-ov-cx-sparse.o .libs/liboctinterp_la-ov-re-sparse.o
.libs/liboctinterp_la-pt-arg-list.o .libs/liboctinterp_la-pt-assign.o
.libs/liboctinterp_la-pt-binop.o .libs/liboctinterp_la-pt-bp.o
.libs/liboctinterp_la-pt-cbinop.o .libs/liboctinterp_la-pt-cell.o
.libs/liboctinterp_la-pt-check.o .libs/liboctinterp_la-pt-cmd.o
.libs/liboctinterp_la-pt-colon.o .libs/liboctinterp_la-pt-const.o
.libs/liboctinterp_la-pt-decl.o .libs/liboctinterp_la-pt-eval.o
.libs/liboctinterp_la-pt-except.o .libs/liboctinterp_la-pt-exp.o
.libs/liboctinterp_la-pt-fcn-handle.o .libs/liboctinterp_la-pt-id.o
.libs/liboctinterp_la-pt-idx.o .libs/liboctinterp_la-pt-jump.o
.libs/liboctinterp_la-pt-loop.o .libs/liboctinterp_la-pt-mat.o
.libs/liboctinterp_la-pt-misc.o .libs/liboctinterp_la-pt-pr-code.o
.libs/liboctinterp_la-pt-select.o .libs/liboctinterp_la-pt-stmt.o
.libs/liboctinterp_la-pt-unop.o .libs/liboctinterp_la-pt.o
OPERATORS/.libs/liboctinterp_la-op-b-b.o
OPERATORS/.libs/liboctinterp_la-op-b-bm.o
OPERATORS/.libs/liboctinterp_la-op-b-sbm.o
OPERATORS/.libs/liboctinterp_la-op-bm-b.o
OPERATORS/.libs/liboctinterp_la-op-bm-bm.o
OPERATORS/.libs/liboctinterp_la-op-bm-sbm.o
OPERATORS/.libs/liboctinterp_la-op-cdm-cdm.o
OPERATORS/.libs/liboctinterp_la-op-cdm-cm.o
OPERATORS/.libs/liboctinterp_la-op-cdm-cs.o
OPERATORS/.libs/liboctinterp_la-op-cdm-dm.o
OPERATORS/.libs/liboctinterp_la-op-cdm-m.o
OPERATORS/.libs/liboctinterp_la-op-cdm-s.o
OPERATORS/.libs/liboctinterp_la-op-cell.o
OPERATORS/.libs/liboctinterp_la-op-chm.o
OPERATORS/.libs/liboctinterp_la-op-class.o
OPERATORS/.libs/liboctinterp_la-op-cm-cdm.o
OPERATORS/.libs/liboctinterp_la-op-cm-cm.o
OPERATORS/.libs/liboctinterp_la-op-cm-cs.o
OPERATORS/.libs/liboctinterp_la-op-cm-dm.o
OPERATORS/.libs/liboctinterp_la-op-cm-m.o
OPERATORS/.libs/liboctinterp_la-op-cm-pm.o
OPERATORS/.libs/liboctinterp_la-op-cm-s.o
OPERATORS/.libs/liboctinterp_la-op-cm-scm.o
OPERATORS/.libs/liboctinterp_la-op-cm-sm.o
OPERATORS/.libs/liboctinterp_la-op-cs-cm.o
OPERATORS/.libs/liboctinterp_la-op-cs-cs.o
OPERATORS/.libs/liboctinterp_la-op-cs-m.o
OPERATORS/.libs/liboctinterp_la-op-cs-s.o
OPERATORS/.libs/liboctinterp_la-op-cs-scm.o
OPERATORS/.libs/liboctinterp_la-op-cs-sm.o
OPERATORS/.libs/liboctinterp_la-op-dm-cdm.o
OPERATORS/.libs/liboctinterp_la-op-dm-cm.o
OPERATORS/.libs/liboctinterp_la-op-dm-cs.o
OPERATORS/.libs/liboctinterp_la-op-dm-dm.o
OPERATORS/.libs/liboctinterp_la-op-dm-m.o
OPERATORS/.libs/liboctinterp_la-op-dm-s.o
OPERATORS/.libs/liboctinterp_la-op-dm-scm.o
OPERATORS/.libs/liboctinterp_la-op-dm-sm.o
OPERATORS/.libs/liboctinterp_la-op-double-conv.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fcdm.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fdm.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fm.o
OPERATORS/.libs/liboctinterp_la-op-fcdm-fs.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fcdm.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fdm.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fm.o
OPERATORS/.libs/liboctinterp_la-op-fcm-fs.o
OPERATORS/.libs/liboctinterp_la-op-fcm-pm.o
OPERATORS/.libs/liboctinterp_la-op-fcn.o
OPERATORS/.libs/liboctinterp_la-op-fcs-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fcs-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fcs-fm.o
OPERATORS/.libs/liboctinterp_la-op-fcs-fs.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fcdm.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fdm.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fm.o
OPERATORS/.libs/liboctinterp_la-op-fdm-fs.o
OPERATORS/.libs/liboctinterp_la-op-float-conv.o
OPERATORS/.libs/liboctinterp_la-op-fm-fcdm.o
OPERATORS/.libs/liboctinterp_la-op-fm-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fm-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fm-fdm.o
OPERATORS/.libs/liboctinterp_la-op-fm-fm.o
OPERATORS/.libs/liboctinterp_la-op-fm-fs.o
OPERATORS/.libs/liboctinterp_la-op-fm-pm.o
OPERATORS/.libs/liboctinterp_la-op-fs-fcm.o
OPERATORS/.libs/liboctinterp_la-op-fs-fcs.o
OPERATORS/.libs/liboctinterp_la-op-fs-fm.o
OPERATORS/.libs/liboctinterp_la-op-fs-fs.o
OPERATORS/.libs/liboctinterp_la-op-i16-i16.o
OPERATORS/.libs/liboctinterp_la-op-i32-i32.o
OPERATORS/.libs/liboctinterp_la-op-i64-i64.o
OPERATORS/.libs/liboctinterp_la-op-i8-i8.o
OPERATORS/.libs/liboctinterp_la-op-int-concat.o
OPERATORS/.libs/liboctinterp_la-op-int-conv.o
OPERATORS/.libs/liboctinterp_la-op-m-cdm.o
OPERATORS/.libs/liboctinterp_la-op-m-cm.o
OPERATORS/.libs/liboctinterp_la-op-m-cs.o
OPERATORS/.libs/liboctinterp_la-op-m-dm.o
OPERATORS/.libs/liboctinterp_la-op-m-m.o
OPERATORS/.libs/liboctinterp_la-op-m-pm.o
OPERATORS/.libs/liboctinterp_la-op-m-s.o
OPERATORS/.libs/liboctinterp_la-op-m-scm.o
OPERATORS/.libs/liboctinterp_la-op-m-sm.o
OPERATORS/.libs/liboctinterp_la-op-pm-cm.o
OPERATORS/.libs/liboctinterp_la-op-pm-fcm.o
OPERATORS/.libs/liboctinterp_la-op-pm-fm.o
OPERATORS/.libs/liboctinterp_la-op-pm-m.o
OPERATORS/.libs/liboctinterp_la-op-pm-pm.o
OPERATORS/.libs/liboctinterp_la-op-pm-scm.o
OPERATORS/.libs/liboctinterp_la-op-pm-sm.o
OPERATORS/.libs/liboctinterp_la-op-range.o
OPERATORS/.libs/liboctinterp_la-op-s-cm.o
OPERATORS/.libs/liboctinterp_la-op-s-cs.o
OPERATORS/.libs/liboctinterp_la-op-s-m.o
OPERATORS/.libs/liboctinterp_la-op-s-s.o
OPERATORS/.libs/liboctinterp_la-op-s-scm.o
OPERATORS/.libs/liboctinterp_la-op-s-sm.o
OPERATORS/.libs/liboctinterp_la-op-sbm-b.o
OPERATORS/.libs/liboctinterp_la-op-sbm-bm.o
OPERATORS/.libs/liboctinterp_la-op-sbm-sbm.o
OPERATORS/.libs/liboctinterp_la-op-scm-cm.o
OPERATORS/.libs/liboctinterp_la-op-scm-cs.o
OPERATORS/.libs/liboctinterp_la-op-scm-m.o
OPERATORS/.libs/liboctinterp_la-op-scm-s.o
OPERATORS/.libs/liboctinterp_la-op-scm-scm.o
OPERATORS/.libs/liboctinterp_la-op-scm-sm.o
OPERATORS/.libs/liboctinterp_la-op-sm-cm.o
OPERATORS/.libs/liboctinterp_la-op-sm-cs.o
OPERATORS/.libs/liboctinterp_la-op-sm-m.o
OPERATORS/.libs/liboctinterp_la-op-sm-s.o
OPERATORS/.libs/liboctinterp_la-op-sm-scm.o
OPERATORS/.libs/liboctinterp_la-op-sm-sm.o
OPERATORS/.libs/liboctinterp_la-op-str-m.o
OPERATORS/.libs/liboctinterp_la-op-str-s.o
OPERATORS/.libs/liboctinterp_la-op-str-str.o
OPERATORS/.libs/liboctinterp_la-op-struct.o
OPERATORS/.libs/liboctinterp_la-op-ui16-ui16.o
OPERATORS/.libs/liboctinterp_la-op-ui32-ui32.o
OPERATORS/.libs/liboctinterp_la-op-ui64-ui64.o
OPERATORS/.libs/liboctinterp_la-op-ui8-ui8.o
TEMPLATE-INST/.libs/liboctinterp_la-Array-os.o
TEMPLATE-INST/.libs/liboctinterp_la-Array-tc.o .libs/liboctinterp_la-builtins.o
.libs/liboctinterp_la-oct-errno.o .libs/liboctinterp_la-ops.o
-Wl,--whole-archive ../libcruft/.libs/libranlib.a ../libgnu/.libs/libgnu.a
-Wl,--no-whole-archive -Wl,-rpath
-Wl,/global/home/keith/software/octave-3.4.0/liboctave/.libs -Wl,-rpath
-Wl,/global/home/keith/software/octave-3.4.0/libcruft/.libs -Wl,-rpath
-Wl,/global/home/keith/local/lib/octave-3.4.0
-L/usr/lib64/atlas_GenuineIntel_x86_64/ ../liboctave/.libs/liboctave.so
../libcruft/.libs/libcruft.so -lfftw3 -lfftw3f -lz -lX11 -lreadline -lncurses
-llapack -lcblas -lf77blas -latlas -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2
-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64 -L/lib/../lib64
-L/usr/lib/../lib64 -lgfortranbegin -lgfortran -lstdc++ -lm -lpthread -lc
-lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtendS.o
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crtn.o -pthread
-Wl,-rpath -Wl,/global/home/keith/local/lib/octave-3.4.0 -pthread -Wl,-soname
-Wl,liboctinterp-3.4.0.so -o .libs/liboctinterp-3.4.0.so
echo bitfcns.df data.df debug.df defaults.df dirfns.df error.df file-io.df
graphics.df help.df input.df lex.df load-path.df load-save.df ls-oct-ascii.df
mappers.df oct-hist.df oct-parse.df octave.df pager.df pr-output.df
sighandlers.df sparse.df strfns.df symtab.df syscalls.df sysdep.df toplev.df
utils.df variables.df ov-base.df ov-bool-mat.df ov-cell.df ov-class.df
ov-fcn-handle.df ov-fcn-inline.df ov-flt-re-mat.df ov-null-mat.df ov-range.df
ov-re-mat.df ov-struct.df ov-typeinfo.df ov-usr-fcn.df ov.df ov-int16.df
ov-int32.df ov-int64.df ov-int8.df ov-uint16.df ov-uint32.df ov-uint64.df
ov-uint8.df pt-arg-list.df pt-binop.df pt-eval.df pt-mat.df
DLD-FUNCTIONS/__contourc__.df DLD-FUNCTIONS/__delaunayn__.df
DLD-FUNCTIONS/__dispatch__.df DLD-FUNCTIONS/__dsearchn__.df
DLD-FUNCTIONS/__fltk_uigetfile__.df DLD-FUNCTIONS/__glpk__.df
DLD-FUNCTIONS/__init_fltk__.df DLD-FUNCTIONS/__lin_interpn__.df
DLD-FUNCTIONS/__magick_read__.df DLD-FUNCTIONS/__pchip_deriv__.df
DLD-FUNCTIONS/__qp__.df DLD-FUNCTIONS/__voronoi__.df DLD-FUNCTIONS/amd.df
DLD-FUNCTIONS/balance.df DLD-FUNCTIONS/besselj.df DLD-FUNCTIONS/betainc.df
DLD-FUNCTIONS/bsxfun.df DLD-FUNCTIONS/ccolamd.df DLD-FUNCTIONS/cellfun.df
DLD-FUNCTIONS/chol.df DLD-FUNCTIONS/colamd.df DLD-FUNCTIONS/colloc.df
DLD-FUNCTIONS/conv2.df DLD-FUNCTIONS/convhulln.df DLD-FUNCTIONS/daspk.df
DLD-FUNCTIONS/dasrt.df DLD-FUNCTIONS/dassl.df DLD-FUNCTIONS/det.df
DLD-FUNCTIONS/dlmread.df DLD-FUNCTIONS/dmperm.df DLD-FUNCTIONS/dot.df
DLD-FUNCTIONS/eig.df DLD-FUNCTIONS/eigs.df DLD-FUNCTIONS/fft.df
DLD-FUNCTIONS/fft2.df DLD-FUNCTIONS/fftn.df DLD-FUNCTIONS/fftw.df
DLD-FUNCTIONS/filter.df DLD-FUNCTIONS/find.df DLD-FUNCTIONS/gammainc.df
DLD-FUNCTIONS/gcd.df DLD-FUNCTIONS/getgrent.df DLD-FUNCTIONS/getpwent.df
DLD-FUNCTIONS/getrusage.df DLD-FUNCTIONS/givens.df DLD-FUNCTIONS/hess.df
DLD-FUNCTIONS/hex2num.df DLD-FUNCTIONS/inv.df DLD-FUNCTIONS/kron.df
DLD-FUNCTIONS/lookup.df DLD-FUNCTIONS/lsode.df DLD-FUNCTIONS/lu.df
DLD-FUNCTIONS/luinc.df DLD-FUNCTIONS/matrix_type.df DLD-FUNCTIONS/max.df
DLD-FUNCTIONS/md5sum.df DLD-FUNCTIONS/onCleanup.df DLD-FUNCTIONS/pinv.df
DLD-FUNCTIONS/qr.df DLD-FUNCTIONS/quad.df DLD-FUNCTIONS/quadcc.df
DLD-FUNCTIONS/qz.df DLD-FUNCTIONS/rand.df DLD-FUNCTIONS/rcond.df
DLD-FUNCTIONS/regexp.df DLD-FUNCTIONS/schur.df DLD-FUNCTIONS/spparms.df
DLD-FUNCTIONS/sqrtm.df DLD-FUNCTIONS/strfind.df DLD-FUNCTIONS/str2double.df
DLD-FUNCTIONS/sub2ind.df DLD-FUNCTIONS/svd.df DLD-FUNCTIONS/syl.df
DLD-FUNCTIONS/symbfact.df DLD-FUNCTIONS/symrcm.df DLD-FUNCTIONS/time.df
DLD-FUNCTIONS/tril.df DLD-FUNCTIONS/tsearch.df DLD-FUNCTIONS/typecast.df
DLD-FUNCTIONS/urlwrite.df > doc-files-t