Browse thread
[Caml-list] Byte code and dynamic linking of C libraries
-
Yaron Minsky
- Nicolas Cannasse
- Markus Mottl
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Markus Mottl <markus@o...> |
| Subject: | Re: [Caml-list] Byte code and dynamic linking of C libraries |
On Wed, 28 Apr 2004, Yaron Minsky wrote:
> I've got some code that dynamically links in a C library. The code
> works just fine when I compile to native code, but blows up when I
> compile to bytecode.
Hm, this may indicate that one of your C-functions accessed from OCaml
takes more than five arguments. In this case you'll have to write a
wrapper that uses argument vectors. E.g.:
CAMLprim value pcre_exec_stub_bc(value *argv, int argn)
{
return pcre_exec_stub(argv[0], argv[1], argv[2], argv[3],
argv[4], argv[5], argv[6]);
}
The external declaration in OCaml then looks as follows (note the two
entry points for byte- and native code):
external unsafe_pcre_exec :
irflag -> regexp -> int -> string ->
int -> int array -> callout option
-> unit = "pcre_exec_stub_bc" "pcre_exec_stub"
------------------- ----------------
Earlier OCaml-releases didn't check the number of arguments, but I'm not
sure whether you'll have to grab a CVS-version to be warned about this
(if this is the cause of the problem)?
> Just to be clear, the dynamic linking I'm doing happens
> entirely on the C side: I've got a c library that is linked in
> statically, and the dlopen and dlclose calls all happen within that C
> library. When I try this trick in bytecode, I get a segfault.
>
> So, any ideas as to what I need to do to make dynamic linking and byte
> code to play nicely together?
I can't imagine any good reason why dynamic linking performed at runtime
by C-code should have an effect on the byte code interpreter. But maybe
there are bad ones?
Markus
--
Markus Mottl http://www.oefai.at/~markus markus@oefai.at
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners