Warning: External not found
"df_scheme_exec"
This means that the Scheme code was trying to look up the address of a
C function named df_scheme_exec() in the VM. When it asks the VM to
do this, the byte-code interpreter calls the lookup_external_name()
procedure in unix.c.
So, the first thing to do is to use the nm(1) utility to find out if
"df_scheme_exec" (or "_df_scheme_exec") is a defined symbol in scshvm.
On my system, I would say
nm -g scshvm | grep df_scheme_exec
which produces
0000dc50 T _df_scheme_exec
which tells me _df_scheme_exec *is* defined in the text (T) segment,
at address 0xDC50.
If you can't find such a symbol, then your scshvm doesn't have the OS support
code linked in, and no wonder you are losing. Can't call a routine you don't
have...
If it's there, perhaps the vm's lookup_external_name() routine is looking
it up incorrectly -- perhaps prepending an underscore when it shouldn't,
or not prepending an underscore when it should (it varies from system
to system). See the USCORE #define in unix.c; this is easy to fix.
This is the kind of lossage you're dealing encountering. Unfortunately, we
don't have any SysV R4000 boxes around here, so we couldn't do the port
ourselves.
We are always grateful to someone who gets scsh running on a new system;
one more small step towards world domination. Thanks for the report.
-Olin
|