From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id C71AFBC69 for ; Thu, 2 Aug 2007 01:23:45 +0200 (CEST) Received: from lizzy.dyndns.org (209-204-188-132.dsl.static.sonic.net [209.204.188.132]) by concorde.inria.fr (8.13.6/8.13.6) with SMTP id l71NNhcS015598 for ; Thu, 2 Aug 2007 01:23:45 +0200 Received: (qmail 32127 invoked by uid 1000); 1 Aug 2007 23:24:05 -0000 Date: Wed, 1 Aug 2007 16:24:05 -0700 From: Jos Backus To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] undefined symbol `caml_tuplify2' in dynamic rocaml extension (UPDATE) Message-ID: <20070801232405.GB29353@lizzy.catnook.local> Reply-To: jos@catnook.com References: <20070801040102.GA88101@lizzy.catnook.local> <20070801091647.GB31718@tux-chan> <20070801161702.GA28680@lizzy.catnook.local> <20070801175907.GA29353@lizzy.catnook.local> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070801175907.GA29353@lizzy.catnook.local> User-Agent: Mutt/1.5.16 (2007-06-09) X-Miltered: at concorde with ID 46B115FF.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; 0200,:01 ocaml:01 a's:01 libs:01 objs:01 val:01 def:01 segfaults:01 wrote:01 wrote:01 abstract:01 compile:01 caml-list:01 undefined:01 variant:02 On Wed, Aug 01, 2007 at 10:59:07AM -0700, Jos Backus wrote: > On Wed, Aug 01, 2007 at 09:17:02AM -0700, Jos Backus wrote: > > On Wed, Aug 01, 2007 at 11:16:47AM +0200, Mauricio Fernandez wrote: > [snip] > > > If you could pinpoint the conversion that's triggering the problem (and it's > > > indeed a problem caused by a Ruby <-> OCaml conversion) we'd be one step > > > away from fixing it. Have you tried to disassemble the extension and see > > > where caml_tuplify2 is being called? > > > > I'll have a look. I do see references to caml_tuplify2 in other .a's as well. > > It turns out my extension doesn't call it but one of the required libraries > does. > > Here's what I am doing: [snip] Some good news. We got this to work by creating a kpp.ml file (containing the Callback.register calls) in the extension directory, and adding some values to CAML_LIBS, CAML_OBJS and CAML_INCLUDES. Yay! It looks like we are really close. The next (final?) issue is that we have a function with signature val eval : kpp -> string -> value list -> value list where type value = | Vstr of string | Vtup of value list which we want to export to Ruby. We tried: Interface.generate(EXT_NAME) do value = sym_variant("value") do |t| non_constant :Vstr, STRING non_constant :Vtup, LIST(t) end def_class("KPP") do |c| t = c.abstract_type fun "make", STRING => t method "eval", [t, STRING, value] => LIST(STRING) end end but it doesn't work (it segfaults inside the extension). How does one represent `value' on the Ruby side? Btw, besides having to remove the stray `"' we also found that we had to patch the kpp_rocaml_wrapper.c to make it compile, basically doing a `%s/t_value /t_value_/g' in this case. Hope this feedback is useful. Thanks! -- Jos Backus jos at catnook.com