[Ecls-list] Threads on MacOSX (and others)

bernard tatin bernard.tatin at tele2.fr
Thu Jan 27 07:23:07 UTC 2005

Juan Jose Garcia Ripoll wrote:

I think my internet provider is ill, I sent a message to the list this 
morning, I never see it, your message and many others arrived very late 
and I am afraid I lose some ...

This morning I said
After some more investigations, I conclude that we cannot load the file 
cmp.fas because :
1 - the system call which load that file expect an other format,
2 - we have problems with pathnames,
3 - when loading that file, the system wants another file it cannot find 
in the path,
4 - when producing object files or cmp.fas we don't give enough 
informations to the compiler and linker.

I will test in further direction :
- trying an older compiler (gcc 3.1 instead of gcc 3.3),
- learn more about dynamic linking on MacOS X and how to load 
dynamic/shared libraries (I am a beginner here),
- test the lisp functions about pathnames, I am afraid there is 
problems, here.

Using gcc 3.1 does not work for the moment (it cannot compile gmp and 
gc, and I cannot use my local versions of gmp or gc).

> 1) go to directory build/
> 2) launch the debugger like "gdb ./ecl". At this point it will complain 
> that it cannot set certain breakpoints because it has not yet loaded the 
> dll, but pay no attention to that.
> 3) type "break main" and "run".
> 4) from there, type any breakpoints you need, such as "break 
> si_load_binary"
> 5) type "continue". This will take you to the command line, where you 
> can simply write (load "cmp.fas")
> If things go right, you will be able to debug not only ECL itself, but 
> the module cmp.fas and see where the errors are.
> Regards,
> Juanjo

I have done that with ddd (it is more readable), and I get the following 
informations :

cl_object si_load_binary(...)
	block->cblock.entry = ecl_library_symbol(...);
	if (block->cblock.entry == NULL) {
-->	   output = ecl_library_error(...);

At that point, block->cblock.entry is NULL.

I restart the session and I do :
(gdb) break ecl_library_symbol
(gdb) continue

ecl_library_symbol(...) {
#ifdef HAV_DLFCN_H
-->    return dlsym(...);

I am sure now that HAV_DLFCN_H is well defined during the compilation.

I will recompile with more debug info (something like -g3 -O0) because 
Apple's gdb is not very clean and I will look at the block contents.

A bientôt,


> -------------------------------------------------------
> This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
> Tool for open source databases. Create drag-&-drop reports. Save time
> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
> Download a FREE copy at http://www.intelliview.com/go/osdn_nl
> _______________________________________________
> Ecls-list mailing list
> Ecls-list at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ecls-list

More information about the ecl-devel mailing list