Hm, some further experiments learn things should work OK in Tru64:
Code: Select all
void txt(char* arg[])
{
printf("%s\n", *arg);
}
cc -shared -o lib.so lib.c
Now I have a SO with a function which I can import. In my newLisp code I do the regular thing:
Code: Select all
(set 'y "bla")
(set 'z (pack "ld" (address y) ))
(txt (address z))
This delivers the 'bla' to be printed. OK. Well. It's not newLisp then. I hacked the sourcecode of the target library, and I found that the coredump actually takes place in a function called 'XrmInitialize()'.
This is an X-function, allocating resources for window management.
Now could it be possible, in your point of view, that such an allocation of systemresources could take place in a 64bit address space, while newLisp is compiled for a 32bit address space, so this will deliver a conflict resulting into the coredump? (Because I import and call a function in a graphical library of Tru64Unix.)
If I create a regular C program and call this Xrm function, it's all OK. Therefore there must be an issue with the combination between newLisp and that particular function.
How do you see it? If my suspicion is correct, well, there's nothing to be done about it, but I'ld like to be wrong in this particular case :-)
Peter