diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-09 12:37:10 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-09 12:37:10 +0000 |
commit | b1df74197d37260c7427e5eceebffb53dfcc8b1b (patch) | |
tree | 5afc17d6da0995c69d90d56f2631977a6375780b /tools | |
parent | 804807781819e4f67c7cefeb2d08b3fe66dc71ed (diff) | |
download | ocaml-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')
-rw-r--r-- | tools/objinfo.ml | 35 |
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) |