summaryrefslogtreecommitdiff
path: root/tools/objinfo.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-09-09 12:37:10 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-09-09 12:37:10 +0000
commitb1df74197d37260c7427e5eceebffb53dfcc8b1b (patch)
tree5afc17d6da0995c69d90d56f2631977a6375780b /tools/objinfo.ml
parent804807781819e4f67c7cefeb2d08b3fe66dc71ed (diff)
downloadocaml-b1df74197d37260c7427e5eceebffb53dfcc8b1b.tar.gz
Dumper les .cma aussi.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@973 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'tools/objinfo.ml')
-rw-r--r--tools/objinfo.ml35
1 files changed, 23 insertions, 12 deletions
diff --git a/tools/objinfo.ml b/tools/objinfo.ml
index 61300912b7..682abb0e0d 100644
--- a/tools/objinfo.ml
+++ b/tools/objinfo.ml
@@ -21,18 +21,7 @@ let print_digest d =
Printf.printf "%02x" (Char.code d.[i])
done
-let dump_obj filename =
- print_string "File "; print_string filename; print_newline();
- let ic = open_in_bin filename in
- let buffer = String.create (String.length cmo_magic_number) in
- really_input ic buffer 0 (String.length cmo_magic_number);
- if buffer <> cmo_magic_number then begin
- prerr_endline "Not an object file"; exit 2
- end;
- let cu_pos = input_binary_int ic in
- seek_in ic cu_pos;
- let cu = (input_value ic : compilation_unit) in
- close_in ic;
+let print_info cu =
print_string " Unit name: "; print_string cu.cu_name; print_newline();
print_string " Digest of interface implemented: ";
print_digest cu.cu_interface; print_newline();
@@ -53,6 +42,28 @@ let dump_obj filename =
l
end
+let dump_obj filename =
+ print_string "File "; print_string filename; print_newline();
+ let ic = open_in_bin filename in
+ let buffer = String.create (String.length cmo_magic_number) in
+ really_input ic buffer 0 (String.length cmo_magic_number);
+ if buffer = cmo_magic_number then begin
+ let cu_pos = input_binary_int ic in
+ seek_in ic cu_pos;
+ let cu = (input_value ic : compilation_unit) in
+ close_in ic;
+ print_info cu
+ end else
+ if buffer = cma_magic_number then begin
+ let toc_pos = input_binary_int ic in
+ seek_in ic toc_pos;
+ let toc = (input_value ic : compilation_unit list) in
+ close_in ic;
+ List.iter print_info toc
+ end else begin
+ prerr_endline "Not an object file"; exit 2
+ end
+
let main() =
for i = 1 to Array.length Sys.argv - 1 do
dump_obj Sys.argv.(i)