Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] Module dependencies of bytecode executables

4 views
Skip to first unread message

Samuel Mimram

unread,
Sep 21, 2006, 3:43:28 AM9/21/06
to Caml List
Hi list,

Is it somehow possible to extract the list of modules used by a bytecode
executable? "ocamldumpobj a.out | grep SETGLOBAL" seems to be a good
starting point but I don't know if it's reliable. Are the md5sums of the
imported interfaces still available?

Also, how can I determine which *.so will be dlopened by the executable?

Thanks!

Cheers,

Samuel.

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Xavier Leroy

unread,
Sep 21, 2006, 5:29:42 AM9/21/06
to Samuel Mimram
> Is it somehow possible to extract the list of modules used by a bytecode
> executable? "ocamldumpobj a.out | grep SETGLOBAL" seems to be a good
> starting point but I don't know if it's reliable.

It is reliable.

> Are the md5sums of the imported interfaces still available?

Yes, these are saved in the bytecode executable, section "CRCS",
but there are no tools in the distrib that will list this info for you.

> Also, how can I determine which *.so will be dlopened by the executable?

Run the executable with OCAMLRUNPARAM=v=256, this will print debug
messages during shared library loading, including names and
locations of these libraries.

- Xavier Leroy

Stefano Zacchiroli

unread,
Sep 21, 2006, 6:11:17 AM9/21/06
to Caml List
On Thu, Sep 21, 2006 at 11:26:11AM +0200, Xavier Leroy wrote:
> > Are the md5sums of the imported interfaces still available?
> Yes, these are saved in the bytecode executable, section "CRCS",
> but there are no tools in the distrib that will list this info for you.

Any pointer to where to look in the code to write such a tool, or some
alternative hack?

> > Also, how can I determine which *.so will be dlopened by the executable?
> Run the executable with OCAMLRUNPARAM=v=256, this will print debug
> messages during shared library loading, including names and
> locations of these libraries.

That's bad, we were hoping to extract the information statically,
without having to run the executable. As above, any pointer?

The rationale for all of this is that we are trying to come up with a
mechanism for automatically compute (tight) dependencies among debian
packages on the basis of the information stored inside bytecode
executables and objects.

Many thanks for your answer.

--
Stefano Zacchiroli -*- Computer Science PhD student @ Uny Bologna, Italy
zack@{cs.unibo.it,debian.org,bononia.it} -%- http://www.bononia.it/zack/
If there's any real truth it's that the entire multidimensional infinity
of the Universe is almost certainly being run by a bunch of maniacs. -!-

0 new messages