Hi,

Antoine van Gelder <[EMAIL PROTECTED]> writes:

>>> _local_object= *(oop *)dlsym(global, "_libid_object");
>>>
>>> It's not finding the symbol _libid_object so returning 0 and
>>> segfaulting during the cast.

>> What happens if you manually edit the problem statement to add an
>> additional "_" in front of "_libid_object"?

That symbol only exists in object/idc/CManagedCodeGenerator.st:
    _local_object= *(oop *)dlsym(global, "_libid_object");

Attached is a patch that gets libjolt to build and run jest a little
further: now it crashes with the following...

$ ./jest

  Object.st:102     Object backtrace
  Object.st:148     Object error:
  Compiler.st:920   Compiler errorSyntax:
  Compiler.st:303   Compiler translateExpression:
  Compiler.st:271   Expression translate:
  Compiler.st:961   Compiler compile:for:
  Compiler.st:995   Object _eval
  libjolt.st:38     Jolt initialise

syntax error: ()
$

Upon a cursory glance, perhaps the "(let () ...)" constructs in boot.h
are giving it trouble for some reason?  That's the only place with a
"()".

-- 
Michael FIG <[EMAIL PROTECTED]> //\
   http://michael.fig.org/    \//

diff -r 747cfa3909a1 function/examples/libjolt/Makefile
--- a/function/examples/libjolt/Makefile	Fri Nov 16 01:28:58 2007 -0600
+++ b/function/examples/libjolt/Makefile	Fri Nov 16 01:39:39 2007 -0600
@@ -61,8 +62,8 @@ libjolt.o : boot.h
 libjolt.o : boot.h
 
 libjolt.a : libjolt.o
-	ld -r libjolt.o $(OBJECTS)/*.o $(MPINT)/*.o $(JOLT_OBJ_FILES) $(OBJ)/gc.a \
-		$(OBJ)/libid.o -o [EMAIL PROTECTED]
+	ld -r libjolt.o $(OBJECTS)/*.o $(MPINT)/*.o $(JOLT_OBJ_FILES) \
+		$(OBJ)/libid.o $(OBJ)/gc.a -o [EMAIL PROTECTED]
 	ar rsc [EMAIL PROTECTED] [EMAIL PROTECTED]
 	rm [EMAIL PROTECTED]
 	mv [EMAIL PROTECTED] $@
diff -r 747cfa3909a1 function/objects/sigalrm.h
--- a/function/objects/sigalrm.h	Fri Nov 16 01:28:58 2007 -0600
+++ b/function/objects/sigalrm.h	Fri Nov 16 01:39:39 2007 -0600
@@ -1,3 +1,5 @@ static oop sigalrmReceiver= 0;
+#include <signal.h>
+
 static oop sigalrmReceiver= 0;
 static oop sigalrmSelector= 0;
 
diff -r 747cfa3909a1 object/id/libid.c
--- a/object/id/libid.c	Fri Nov 16 01:28:58 2007 -0600
+++ b/object/id/libid.c	Fri Nov 16 01:39:39 2007 -0600
@@ -163,7 +163,8 @@ struct t__object
 };
 
 static oop _object_vtable= 0;
-static oop _object= 0;
+#define _object _libid_object
+oop _object= 0;
 
 oop _libid_nil_vtable= 0;
 oop _libid_tag_vtable= 0;
@@ -1039,7 +1040,8 @@ struct __libid *_libid_init(int *argcp, 
   _libid.dlsym		= dlsym;
   _libid.dlclose	= dlclose;
 
-  _libid._object	= _object;
+#undef _object
+  _libid._object	= _libid_object;
   _libid.nil_vtable	= _libid_nil_vtable;
   _libid.tag_vtable	= _libid_tag_vtable;
 
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to