Browse thread
[Caml-list] Dynamic linking
-
Jonathan Roewen
- skaller
-
Jacques Garrigue
- Jonathan Roewen
- Jacques Garrigue
[
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: | 2005-09-26 (05:20) |
From: | Jonathan Roewen <jonathan.roewen@g...> |
Subject: | Re: [Caml-list] Dynamic linking |
> No document that I know, but the code is clear enough. > You may have a look at Env.read_pers_struct for .cmi and > Compilenv.read_unit_info for .cmx. > However I'm not sure it would help you very much in practice. > There are at least two other problems before you can do dynamic linking > of native code in ocaml: > * the code generator is geared toward static code, which means that it > cannot be handled by the runtime linker on many architectures > (I only know of a patch for x86) > * some glue code is generated at link time > So this looks like a rather difficult task... Well, we'd be building our very own custom runtime linker for starters. The idea goes something like: - a single [kernel mode] address space everything is run in. - somehow, necessary kernel symbols are exported (basically, what can be seen in interface files) - a runtime linker in the ocaml kernel loads ocaml code, and resolves symbols to kernel functions so can call into the kernel directly (no syscalls or IPC) - probably have some way of having a defined entry point for executables in ocaml code that's also exported, so kernel+linker can run the code without needing some C layer. Of course, the only problem here is: is it possible to do? ;-) I have no idea myself... =/ Jonathan