Commits

camlspotter committed 7e58971 Merge

merge with dev

Comments (0)

Files changed (22)

 locident.cmi :
 name.cmi :
 pathreparse.cmi : spot.cmi
-spot.cmi :
+spot.cmi : utils.cmi
 spotconfig.cmi : spotconfig_intf.cmo
 spoteval.cmi : utils.cmi spot.cmi
 spotfile.cmi : spoteval.cmi spotconfig_intf.cmo spot.cmi
 xpath.cmi : name.cmi
 xprinttyp.cmi :
 xset.cmi :
+checksum.cmo :
+checksum.cmx :
+cmt.cmo : utils.cmi
+cmt.cmx : utils.cmx
 command.cmo : command.cmi
 command.cmx : command.cmi
 dotfile.cmo : utils.cmi
 name.cmo : name.cmi
 name.cmx : name.cmi
 ocamlspot.cmo : utils.cmi typeexpand.cmi spotfile.cmi spoteval.cmi \
-    spotconfig.cmi spot.cmi pathreparse.cmi ext.cmo command.cmi
+    spotconfig.cmi spot.cmi pathreparse.cmi ext.cmo command.cmi cmt.cmo
 ocamlspot.cmx : utils.cmx typeexpand.cmx spotfile.cmx spoteval.cmx \
-    spotconfig.cmx spot.cmx pathreparse.cmx ext.cmx command.cmx
+    spotconfig.cmx spot.cmx pathreparse.cmx ext.cmx command.cmx cmt.cmx
 pathreparse.cmo : utils.cmi spot.cmi locident.cmi ext.cmo pathreparse.cmi
 pathreparse.cmx : utils.cmx spot.cmx locident.cmx ext.cmx pathreparse.cmi
-spot.cmo : utils.cmi ttfold.cmi treeset.cmi ext.cmo spot.cmi
-spot.cmx : utils.cmx ttfold.cmx treeset.cmx ext.cmx spot.cmi
+spot.cmo : utils.cmi ttfold.cmi treeset.cmi ext.cmo cmt.cmo checksum.cmo \
+    spot.cmi
+spot.cmx : utils.cmx ttfold.cmx treeset.cmx ext.cmx cmt.cmx checksum.cmx \
+    spot.cmi
 spotconfig.cmo : utils.cmi spot.cmi ext.cmo spotconfig.cmi
 spotconfig.cmx : utils.cmx spot.cmx ext.cmx spotconfig.cmi
 spotconfig_intf.cmo : spot.cmi ext.cmo
 spoteval.cmo : utils.cmi spot.cmi ext.cmo spoteval.cmi
 spoteval.cmx : utils.cmx spot.cmx ext.cmx spoteval.cmi
 spotfile.cmo : utils.cmi spoteval.cmi spotconfig_intf.cmo spot.cmi \
-    dotfile.cmo spotfile.cmi
+    dotfile.cmo cmt.cmo spotfile.cmi
 spotfile.cmx : utils.cmx spoteval.cmx spotconfig_intf.cmx spot.cmx \
-    dotfile.cmx spotfile.cmi
+    dotfile.cmx cmt.cmx spotfile.cmi
 treeset.cmo : xset.cmi treeset.cmi
 treeset.cmx : xset.cmx treeset.cmi
 ttfold.cmo : ttfold.cmi
 # Requires unix!
 COMPFLAGS= $(INCLUDES_DEP) -I +unix
 
-MODULES= utils dotfile xset treeset command typeexpand \
-	xlongident name xident xpath locident typeFix xprinttyp ext ttfold spot spoteval spotconfig_intf spotconfig spotfile pathreparse ocamlspot
+MODULES= utils checksum dotfile xset treeset command typeexpand \
+	xlongident name xident xpath locident typeFix xprinttyp ext ttfold cmt spot spoteval spotconfig_intf spotconfig spotfile pathreparse ocamlspot
 
 OBJS=		$(addsuffix .cmo, $(MODULES))
 
+let char16 = "0123456789abcdef"
+
+open Utils
+open Cmt_format
+
+let source_path file = match file.cmt_sourcefile with 
+    | Some f -> Some (file.cmt_builddir ^/ f)
+    | None -> None
+
+(* xxx.{ml,cmo,cmx,spot} => xxx.spot 
+   xxx.{mli,cmi,spit} => xxx.spit *)
+let of_path path =
+  let dirname, filename =
+    try
+      let slash = String.rindex path '/' in
+      Some (String.sub path 0 slash),
+      String.sub path (slash + 1) (String.length path - slash - 1)
+    with
+    | Not_found -> None, path
+  in
+  let filename =
+    match Filename.split_extension filename with
+    | body, (".cmi" | ".mli" | ".cmti") -> body ^ ".cmti"
+    | body, _ -> body ^ ".cmt"
+  in
+  match dirname with
+  | None -> filename
+  | Some d -> d ^/ filename
+
+(* CR jfuruse: this is a dirty workaround. It should be nice if we could know cmt is created by opt or byte *)          
+let is_opt cmt = 
+  List.exists (fun x -> match Filename.split_extension x with (_, ".cmx") -> true | _ -> false) (Array.to_list cmt.cmt_args)
   include Spotfile.Make(C)
 end
 
-open Cmt_format
-
 module SAbs = Spot.Abstraction
 
 module Dump = struct
   (* mainly debugging purpose *)
 
-  let file = File.dump_file
+  let file = Spot.File.dump
+  let unit = Spot.Unit.dump
 
-  let rannots_full file = 
+  let rannots_full unit = 
     eprintf "@[<2>rannots =@ [ @[<v>%a@]@] ]@."
       (Format.list ";@ " (Regioned.format (Format.list ";@ " Annot.format)))
-      !!(file.File.rannots)
+      !!(unit.Unit.rannots)
   ;;
   
-  let rannots_summary file = 
+  let rannots_summary unit = 
     eprintf "@[<2>rannots =@ [ @[<v>%a@]@] ]@."
       (Format.list ";@ " (Regioned.format (Format.list ";@ " Annot.summary)))
-      !!(file.File.rannots)
+      !!(unit.Unit.rannots)
   ;;
   
-  let tree file = Tree.dump !!(file.File.tree)
+  let tree unit = Tree.dump !!(unit.Unit.tree)
   ;;
 
   let top file = 
     eprintf "@[<2>top =@ @[%a@]@]@." 
-      Abstraction.format_structure file.File.top;
+      Abstraction.format_structure file.Unit.top;
     let str = 
-      Eval.structure (File.empty_env file) file.File.top
+      Eval.structure (File.empty_env file) file.Unit.top
     in
     if C.eager_dump then begin
       let module Enforcer = Value.Enforcer(struct end) in
 
   let flat file = 
     eprintf "@[<2>flat =@ @[%a@]@]@." 
-      Abstraction.format_structure file.File.flat;
+      Abstraction.format_structure !!(file.Unit.flat);
     let str = 
       let env = File.invalid_env file in
-      let str = Eval.structure env file.File.flat in
+      let str = Eval.structure env !!(file.Unit.flat) in
       Binding.set env.Env.binding str; (* dirty hack (dup code) *)
       str
     in
 
     let file = File.load ~load_paths: ["."] path in
     
-    if C.dump_file then Dump.file file;
+    if C.dump_file then Dump.unit file; (* CR jfuruse: to be fixed *)
     if C.dump_rannots = `Full then Dump.rannots_full file;
     if C.dump_rannots = `Summary then Dump.rannots_summary file;
     if C.dump_tree then Dump.tree file;
   ;;
 
   let info path =
-    let file = load (File.cmt_of_file path) in
+    let file = load (Cmt.of_path path) in
     printf "Compile: %s@."
       (String.concat " " 
          (List.map Command.escaped_for_shell 
-            (Array.to_list file.File.cmt.cmt_args)));
+            (Array.to_list file.Unit.args)));
     printf "@[<v2>Included_dirs:@ %a@]@."
       (Format.list "" pp_print_string)
-      file.File.cmt.cmt_loadpath
+      file.Unit.loadpath
+
+  let write_spot path =
+    let file = load (Cmt.of_path path) in
+    let spot = match Filename.split_extension path with
+      | body, (".cmi" | ".mli" | ".cmti") -> body ^ ".spit"
+      | body, _ -> body ^ ".spot"
+    in
+    Spot.File.save spot (Spot.Unit.to_file file)
 
   let query_by_kind_path file kind path = 
     try Some (File.find_path_in_flat file (kind, path)) with Not_found -> None
     let probe = Region.point pos in
     let treepath = 
       (* subtree is not used *)
-      List.map fst (Tree.find_path_contains probe !!(file.File.tree))
+      List.map fst (Tree.find_path_contains probe !!(file.Unit.tree))
     in
     match treepath with
     | [] -> failwith (Printf.sprintf "nothing at %s" (Position.to_string pos))
 	    List.find_map_opt (function
 	      | Annot.Use (_, path) -> 
 		  (* Find subpath *)
-		  begin match Pathreparse.get file.File.path r pos path with    
+		  begin match Pathreparse.get file.Unit.path r pos path with    
 		  | None -> None
 		  | Some (path', r) -> 
 		      if path = path' then None (* as original *)
 
 	(* Tree is an older format. XTree is a newer which is the same as one for Spot *)
         printf "Tree: %s@." (Region.to_string r);
-        printf "XTree: <%s:%s>@." file.File.path (Region.to_string r);
+        printf "XTree: <%s:%s>@." file.Unit.path (Region.to_string r);
 
 	(* Find the innermost module *)
         let find_module_path treepath = List.concat_map (fun { Regioned.value = annots } ->
           match List.filter (function Annot.Type _ -> true | _ -> false) annots with
           (* CR jfuruse: Sometimes more than one Annot.Type are found at the same place... *)
           | Annot.Type (typ, env, `Expr) :: _ -> 
-              printf "Expand: @[%a@]@." Typeexpand.format_as_expr (Typeexpand.expand file.File.cmt.cmt_loadpath env typ)
+              printf "Expand: @[%a@]@." Typeexpand.format_as_expr (Typeexpand.expand file.Unit.loadpath env typ)
           | Annot.Type (typ, env, `Pattern) :: _ -> 
-              printf "Expand: @[%a@]@." Typeexpand.format_as_pattern (Typeexpand.expand file.File.cmt.cmt_loadpath env typ)
+              printf "Expand: @[%a@]@." Typeexpand.format_as_pattern (Typeexpand.expand file.Unit.loadpath env typ)
           | Annot.Type (_typ, _env, `Val) :: _ -> ()
           | _ -> ()
         end;
     (* CR jfuruse: dup *)
     Debug.format "ocamlspot %s%s@." path (C.SearchSpec.to_string spec);
     Debug.format "cwd: %s@." (Sys.getcwd ());
-    let path = File.cmt_of_file path in
+    let path = Cmt.of_path path in
     let file = load path in
 
     let query_kind_path k path = print_query_result k (query_by_kind_path file k path) in
     (* CR jfuruse: dup *)
     Debug.format "ocamlspot %s%s@." path (C.SearchSpec.to_string spec);
     Debug.format "cwd: %s@." (Sys.getcwd ());
-    let path = File.cmt_of_file path in
+    let path = Cmt.of_path path in
     let file = load path in
 
     let find_by_kind_path k path found =
 	              begin match query_by_kind_path file k' path' with
 	              | Some found' when found = found' ->
 		          printf "<%s:%s>: %s@." 
-		            file.File.path
+		            file.Unit.path
 		            (Region.to_string region)
 		            (Path.name path)
 	              | None | Some _ -> ()
 	              end
-                  | _ -> ()) annots) !!(file.File.rannots)
+                  | _ -> ()) annots) !!(file.Unit.rannots)
 	| _ -> ());
     in
 
     let by_kind_path file k path =
       Debug.format "Searching %s:%s:%s ...@." 
-	file.File.path 
+	file.Unit.path 
 	(Kind.to_string k) 
 	(Path.name path); 
       let res = query_by_kind_path file k path in
 
     let by_pos file pos = 
       eprintf "Searching %s:%s ...@." 
-	file.File.path 
+	file.Unit.path 
 	(Position.to_string pos);
       match List.find_map_opt (function 
 	| Annot.Str str_item -> 
   let recheck files =
     let recheck mlpath =
       Debug.format "cwd: %s@." (Sys.getcwd ());
-      let path = File.cmt_of_file mlpath in
-      let file = File.load ~load_paths: ["."] path in
+      let path = Cmt.of_path mlpath in
+      let file = Unit.load ~load_paths: ["."] path in
     
       printf "Compile: %s@."
         (String.concat " " 
           (List.map Command.escaped_for_shell 
-            (Array.to_list file.File.argv)));
+            (Array.to_list file.Unit.argv)));
       let command = 
-	Sys.argv.(0) :: List.tl (Array.to_list file.File.argv) 
+	Sys.argv.(0) :: List.tl (Array.to_list file.Unit.argv) 
       in
       Xmain.main (Array.of_list command)
     in
     match C.mode with
     | `Dump path                   -> ignore (load path)
     | `Info path                   -> info path
+    | `Spot path                   -> write_spot path
     | `Query (path, spec)          -> query path spec
 (*
     | `Typecheck args              -> typecheck args
         (* CR jfuruse: need to scrape ? but how ? *)
         AMod_functor(id, mty1.mty_type, module_type mty2)
     | Tmty_with (mty, _) -> module_type mty (* CR jfuruse: ?? *)
-(*
-    | Tmty_typeof of module_expr (* CR jfuruse: ?? *)
-*)
-    | _ -> assert false
+    | Tmty_typeof mexp ->  (* CR jfuruse: ?? *)
+        T.module_type mexp.mod_type
 
   and signature sg = AMod_structure (List.concat_map signature_item sg.sig_items)
 
   
     let record tbl loc t = 
       let really_record () = 
-        let num_records, records = 
-          try Hashtbl.find tbl loc with Not_found -> 0, []
+        let records = 
+          try Hashtbl.find tbl loc with Not_found -> []
         in
+(*
         (* CR jfuruse: I am not really sure the below is correct now, 
            but I remember the huge compilation slow down... *)
         (* This caching works horribly when too many things are defined 
         *)
         if num_records <= 10 && List.exists (equal t) records then ()
         else Hashtbl.replace tbl loc (num_records + 1, t :: records)
+*)
+        Hashtbl.replace tbl loc (t :: records)
       in
       match check_location loc with
       | Wellformed -> really_record ()
         | Tsig_include (mty, sg) -> 
             let loc = si.sig_loc in
             let m = Abstraction.module_type mty in
-            let sg0 = try match Mtype.scrape mty.mty_env mty.mty_type with Types.Mty_signature sg -> sg | _ -> assert false with _ -> assert false in
+            let sg0 = match Mtype.scrape mty.mty_env mty.mty_type with 
+              | Types.Mty_signature sg -> sg 
+              | Types.Mty_functor _ -> assert false
+              | Types.Mty_ident _path -> 
+                  (* Strange... failed to scrape? *)
+                  assert false
+            in
             let ids = List.map (fun si -> snd (T.kident_of_sigitem si)) sg in
             let aliases = try aliases_of_include' false sg0 ids with _ -> assert false in
             List.iter (fun (id, (k, id')) -> 
 	  RAnnot.format rrspot) t
 end
 
+(* Minimum data for spotting, which are saved into spot files *)
+module File = struct
+  type t = {
+    modname        : string;
+    builddir       : string; 
+    loadpath       : string list;
+    args           : string array;
+    path           : string; (** source path. If packed, the .cmo itself *)
+    top            : Abstraction.structure;
+    loc_annots     : (Location.t, Annot.t list) Hashtbl.t
+  }
+
+  let dump file =
+    eprintf "@[<v2>{ module= %S;@ path= %S;@ builddir= %S;@ loadpath= [ @[%a@] ];@ argv= [| @[%a@] |];@ ... }@]@."
+      file.modname
+      file.path
+      file.builddir
+      (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) file.loadpath
+      (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) (Array.to_list file.args)
+
+  let save path t =
+    let oc = open_out_bin path in
+    output_string oc "spot";
+    output_string oc Checksum.char16;
+    output_value oc t;
+    close_out oc
+
+  let load path =
+    let ic = open_in path in
+    let buf = String.create 4 in
+    really_input ic buf 0 4;
+    if buf <> "spot" then failwithf "file %s is not a spot file" path;
+    let buf = String.create 16 in
+    really_input ic buf 0 16;
+    if buf <> Checksum.char16 then failwithf "file %s has an incompatible checksum" path;
+    let v = input_value ic in
+    close_in ic;
+    v
+
+  open Cmt_format
+
+  let abstraction cmt = match cmt.cmt_annots with
+    | Implementation str -> 
+        let loc_annots = Annot.record_structure str in
+        begin match Abstraction.structure str with
+        | Abstraction.AMod_structure str -> str, loc_annots
+        | _ -> assert false
+        end
+    | Interface sg -> 
+        let loc_annots = Annot.record_signature sg in
+        begin match Abstraction.signature sg with
+        | Abstraction.AMod_structure str -> str, loc_annots
+        | _ -> assert false
+        end
+    | Packed (_sg, files) ->
+        (List.map (fun file ->
+          let fullpath = if Filename.is_relative file then cmt.cmt_builddir ^/ file else file in
+          let modname = match Filename.split_extension (Filename.basename file) with 
+            | modname, (".cmo" | ".cmx" | ".cmi") -> String.capitalize modname
+            | _ -> Format.eprintf "packed module with strange name: %s@." file; assert false
+          in
+          Abstraction.AStr_module (Ident.create modname (* stamp is bogus *),
+                                   Abstraction.AMod_packed fullpath)) files),
+        (Hashtbl.create 1 (* empty *))
+    | Partial_implementation _parts | Partial_interface _parts -> assert false
+  
+  let abstraction cmt = 
+    let load_path = List.map (fun p ->
+      cmt.cmt_builddir ^/ p) cmt.cmt_loadpath
+    in
+    with_ref Config.load_path load_path (fun () -> 
+      try abstraction cmt; with e -> 
+        Format.eprintf "Aiee %s@." (Printexc.to_string e);
+        raise e)
+
+  let of_cmt path (* the cmt file path *) cmt =
+    let path = Option.default (Cmt.source_path cmt) (fun () -> 
+      let ext = if Cmt.is_opt cmt then ".cmx" else ".cmo" in
+      Filename.chop_extension path ^ ext)
+    in
+    let top, loc_annots = abstraction cmt in
+    { modname  = cmt.cmt_modname;
+      builddir = cmt.cmt_builddir;
+      loadpath = cmt.cmt_loadpath;
+      args     = cmt.cmt_args;
+      path; 
+      top;
+      loc_annots;
+    }
+end
+
+(* Spot info for each compilation unit *)
+module Unit = struct
+  type t = {
+    modname        : string;
+    builddir       : string; 
+    loadpath       : string list;
+    args           : string array;
+    path           : string; (** source path. If packed, the .cmo itself *)
+    top            : Abstraction.structure;
+    loc_annots     : (Location.t, Annot.t list) Hashtbl.t;
+
+    flat           : Abstraction.structure lazy_t;
+    id_def_regions : (Ident.t, Region.t) Hashtbl.t lazy_t;
+    rannots        : Annot.t list Regioned.t list lazy_t;
+    tree           : Tree.t lazy_t
+  }
+
+  (* same as File.dump, ignoring new additions in Unit *)
+  let dump file =
+    eprintf "@[<v2>{ module= %S;@ path= %S;@ builddir= %S;@ loadpath= [ @[%a@] ];@ argv= [| @[%a@] |];@ ... }@]@."
+      file.modname
+      file.path
+      file.builddir
+      (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) file.loadpath
+      (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) (Array.to_list file.args)
+
+  let to_file { modname; builddir; loadpath; args; path; top ; loc_annots } = 
+    { File.modname;
+      builddir;
+      loadpath;
+      args;
+      path;
+      top;
+      loc_annots;
+    }
+
+  let of_file ({ File.loc_annots; } as f) = 
+    let rannots = lazy (Hashtbl.fold (fun loc annots st -> 
+      { Regioned.region = Region.of_parsing loc;  value = annots } :: st) 
+                          loc_annots [])
+    in
+    let id_def_regions = lazy (
+      let tbl = Hashtbl.create 1023 in
+      Hashtbl.iter (fun loc annots ->
+        List.iter (function
+          | Annot.Str sitem ->
+              Option.iter (Abstraction.ident_of_structure_item sitem) ~f:(fun (_kind, id) ->
+                Hashtbl.add tbl id (Region.of_parsing loc))
+          | _ -> ()) annots) loc_annots;
+      tbl)
+    in
+    let tree = lazy begin
+      Hashtbl.fold (fun loc annots st ->
+        Tree.add st { Regioned.region = Region.of_parsing loc; value = annots })
+        loc_annots Tree.empty 
+    end in
+    (* CR jfuruse: it is almost the same as id_def_regions_list *)
+    let flat = lazy (Hashtbl.fold (fun _loc annots st -> 
+      List.filter_map (function
+        | Annot.Str sitem -> Some sitem
+        | _ -> None) annots @ st) loc_annots [])
+    in
+    { modname    = f.File.modname;
+      builddir   = f.File.builddir;
+      loadpath   = f.File.loadpath;
+      args       = f.File.args;
+      path       = f.File.path;
+      top        = f.File.top;
+      loc_annots = f.File.loc_annots;
+      
+      flat; id_def_regions; rannots; tree; 
+    }
+end
     | Functor_parameter of Ident.t
     | Non_expansive of bool
 
-  val record_structure : Typedtree.structure -> (Location.t, int * t list) Hashtbl.t
-  val record_signature : Typedtree.signature -> (Location.t, int * t list) Hashtbl.t
+  val record_structure : Typedtree.structure -> (Location.t, t list) Hashtbl.t
+  val record_signature : Typedtree.signature -> (Location.t, t list) Hashtbl.t
 
   val format : Format.formatter -> t -> unit
   val summary : Format.formatter -> t -> unit
   val dump : t -> unit
 end
 
+module File : sig
+  type t = {
+    modname    : string;
+    builddir   : string;
+    loadpath   : string list;
+    args       : string array;
+    path       : string;
+    top        : Abstraction.structure;
+    loc_annots : (Location.t, Annot.t list) Utils.Hashtbl.t;
+  }
+
+  val dump : t -> unit
+  val save : string -> t -> unit
+  val load : string -> t
+
+  val of_cmt 
+    : string (* the cmt file path name *)
+      -> Cmt_format.cmt_infos -> t
+end
+
+module Unit : sig
+  type t = {
+    modname    : string;
+    builddir   : string;
+    loadpath   : string list;
+    args       : string array;
+    path       : string;
+    top        : Abstraction.structure;
+    loc_annots : (Location.t, Annot.t list) Hashtbl.t;
+
+    (* the following fields are computed from the above, the fields from File.t *) 
+
+    flat           : Abstraction.structure lazy_t;
+    id_def_regions : (Ident.t, Region.t) Hashtbl.t lazy_t;
+    rannots        : Annot.t list Regioned.t list lazy_t;
+    tree           : Tree.t lazy_t;
+  }
+  val dump : t -> unit (** just same as File.dump. Ignores the added fields *)
+  val of_file : File.t -> t
+  val to_file : t -> File.t
+end
 \tUse query:\n\
 \t\tocamlspot use <search> <targets>\n\
 \n\
+\tWrite spot/spit file:\n\
+\t\tocamlspot spot <file>\n\
+\n\
 \tType check and spot creation:\n\
 \t\tocamlspot typecheck <args>\n\
 \n\
     match anonargs with
     | [ "query"; spec ]        -> `Query (SearchSpec.parse spec)
     | [ "info"; file ]         -> `Info file
+    | [ "spot"; file ]         -> `Spot file
     | "use" :: spec :: targets -> `Use (SearchSpec.parse spec, targets)
     | "typecheck" :: rest      -> `Typecheck rest
     | "recheck" :: rest        -> `Recheck rest

spotconfig_intf.ml

   
   val mode : [ `Dump      of string
              | `Info      of string
+             | `Spot      of string
              | `Query     of string * SearchSpec.t
              | `Use       of (string * SearchSpec.t) * string list
              | `Recheck   of string list
 open Spoteval
 open Cmt_format
 
-type file = {
-  cmt            : Cmt_format.cmt_infos;
-  path           : string; (** source path. If packed, the .cmo itself *)
-  flat           : Abstraction.structure;
-  top            : Abstraction.structure;
-  id_def_regions : (Ident.t, Region.t) Hashtbl.t lazy_t;
-  rannots        : Annot.t list Regioned.t list lazy_t;
-  tree           : Tree.t lazy_t
-}
-
-let source_path_of_cmt file = match file.cmt_sourcefile with 
-  | Some f -> Some (file.cmt_builddir ^/ f)
-  | None -> None
-
-let dump_file file =
-  eprintf "@[<v2>{ module= %S;@ path= %S;@ source= %S;@ builddir= %S;@ loadpath= [ @[%a@] ];@ argv= [| @[%a@] |];@ ... }@]@."
-    file.cmt.cmt_modname
-    file.path
-    (match file.cmt.cmt_sourcefile with Some s -> s | None -> "???")
-    file.cmt.cmt_builddir
-    (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) file.cmt.cmt_loadpath
-    (Format.list ";@ " (fun ppf s -> fprintf ppf "%S" s)) (Array.to_list file.cmt.cmt_args)
-
-(* xxx.{ml,cmo,cmx,spot} => xxx.spot 
-   xxx.{mli,cmi,spit} => xxx.spit *)
-let cmt_of_file file =
-  let dirname, filename =
-    try
-      let slash = String.rindex file '/' in
-      Some (String.sub file 0 slash),
-      String.sub file (slash + 1) (String.length file - slash - 1)
-    with
-    | Not_found -> None, file
-  in
-  let filename =
-    match Filename.split_extension filename with
-    | body, (".cmi" | ".mli" | ".cmti") -> body ^ ".cmti"
-    | body, _ -> body ^ ".cmt"
-  in
-  match dirname with
-  | None -> filename
-  | Some d -> d ^/ filename
-
-let abstraction_of_cmt cmt = match cmt.cmt_annots with
-  | Implementation str -> 
-      let loc_annots = Spot.Annot.record_structure str in
-      begin match Abstraction.structure str with
-      | Abstraction.AMod_structure str -> str, loc_annots
-      | _ -> assert false
-      end
-  | Interface sg -> 
-      let loc_annots = Spot.Annot.record_signature sg in
-      begin match Abstraction.signature sg with
-      | Abstraction.AMod_structure str -> str, loc_annots
-      | _ -> assert false
-      end
-  | Packed (_sg, files) ->
-      (List.map (fun file ->
-        let fullpath = if Filename.is_relative file then cmt.cmt_builddir ^/ file else file in
-        let modname = match Filename.split_extension (Filename.basename file) with 
-          | modname, (".cmo" | ".cmx") -> String.capitalize modname
-          | _ -> assert false
-        in
-        Abstraction.AStr_module (Ident.create modname (* stamp is bogus *),
-                                 Abstraction.AMod_packed fullpath)) files),
-      (Hashtbl.create 1 (* empty *))
-  | Partial_implementation _parts | Partial_interface _parts -> assert false
-
-let abstraction_of_cmt cmt = 
-  try abstraction_of_cmt cmt with e -> 
-    Format.eprintf "Aiee %s@." (Printexc.to_string e);
-    raise e
-
 module Make(Spotconfig : Spotconfig_intf.S) = struct
   (* open Abstraction *)
 
   module Load : sig
     exception Old_cmt of string (* cmt *) * string (* source *)
-    val load : load_paths:string list -> string -> file
-    val load_module : ?spit:bool -> load_paths:string list -> string -> file
+    val load : load_paths:string list -> string -> Unit.t
+    val load_module : ?spit:bool -> load_paths:string list -> string -> Unit.t
   end = struct
 
     let check_time_stamp ~cmt source =
 
     let load_cmt_file file = snd (Cmt_format.read file)
 
-    let load_directly path : file =
+    let load_directly path : Unit.t =
       Debug.format "cmt loading from %s@." path;
       match load_cmt_file path with
-      | Some cmt -> 
-          (* CR jfuruse: all things are not always required. so inefficient *)
-          Debug.format "cmt loaded from %s@." path;
-          Debug.format "cmt loaded now extracting things from %s ...@." path;
-          let str, loc_annots = abstraction_of_cmt cmt in
-          Debug.format "cmt loaded: abstraction extracted from %s@." path;
-
-          (* CR jfuruse: this is a dirty workaround. It should be nice if we could know cmt is created by opt or byte *)          
-          let cm_extension = 
-            if List.exists (fun x -> match Filename.split_extension x with (_, ".cmx") -> true | _ -> false) (Array.to_list cmt.cmt_args)
-            then ".cmx" else ".cmo"
-          in
-
-          let path = Option.default (Filename.chop_extension path ^ cm_extension) (source_path_of_cmt cmt) in
-          let rannots = lazy (Hashtbl.fold (fun loc (_,annots) st -> 
-            { Regioned.region = Region.of_parsing loc;  value = annots } :: st) loc_annots [])
-          in
-          Debug.format "cmt loaded: rannots created from %s@." path;
-          let id_def_regions = lazy (
-            let tbl = Hashtbl.create 1023 in
-            Hashtbl.iter (fun loc (_,annots) ->
-              List.iter (function
-                | Annot.Str sitem ->
-                    Option.iter (Abstraction.ident_of_structure_item sitem) ~f:(fun (_kind, id) ->
-                      Hashtbl.add tbl id (Region.of_parsing loc))
-                | _ -> ()) annots) loc_annots;
-            tbl)
-          in
-          Debug.format "cmt loaded: id_def_regions created from %s@." path;
-          let tree = lazy begin
-            Hashtbl.fold (fun loc (_, annots) st ->
-              Tree.add st { Regioned.region = Region.of_parsing loc; value = annots })
-              loc_annots Tree.empty 
-          end in
-          (* CR jfuruse: it is almost the same as id_def_regions_list *)
-          let flat = Hashtbl.fold (fun _loc (_, annots) st -> 
-            List.filter_map (function
-              | Annot.Str sitem -> Some sitem
-              | _ -> None) annots @ st) loc_annots []
-          in
-          Debug.format "cmt loaded: flat created from %s@." path;
-          Debug.format "cmt analysis done from %s@." path;
-          { cmt; path;
-            top = str;
-            flat;
-            id_def_regions;
-            rannots;
-            tree;
-          }
+      | Some cmt -> Spot.Unit.of_file (Spot.File.of_cmt path cmt)
       | None -> failwith (sprintf "load_directly failed: %s" path)
 
     exception Old_cmt of string (* cmt *) * string (* source *)
 
     (* CR jfuruse: exception *)
     (* CRv2 jfuruse: add and check cache time stamp *)
-    let load_directly_with_cache : string -> file = 
+    let load_directly_with_cache : string -> Unit.t = 
       let cache = Hashtbl.create 17 in
       fun path ->
         try 
         | Not_found ->
               try
                 let file = load_directly path in
-                if not (check_time_stamp ~cmt:path file.path) then 
+                if not (check_time_stamp ~cmt:path file.Unit.path) then 
                   if Spotconfig.strict_time_stamp then 
-                    raise (Old_cmt (path, file.path))
+                    raise (Old_cmt (path, file.Unit.path))
                   else
-                    eprintf "Warning: source %s is newer than the cmt@." file.path;
+                    eprintf "Warning: source %s is newer than the cmt@." file.Unit.path;
                 Hashtbl.replace cache path file;
                 file
               with
                   failwith (Printf.sprintf "failed to find cmt file %s" path)
 
     let find_in_path load_paths body ext =
-        let body_ext = body ^ ext in
+      let body_ext = body ^ ext in
       let find_in_path load_paths name = 
         try Misc.find_in_path load_paths name with Not_found ->
           Misc.find_in_path_uncap load_paths name
         | _ -> failwith (Printf.sprintf "cmt file not found: %s" body_ext)
       
 
-    let load ~load_paths cmtname : file =
+    let load ~load_paths cmtname : Unit.t =
       Debug.format "@[<2>cmt searching %s in@ paths [@[%a@]]@]@." 
           cmtname
           (Format.list "; " (fun ppf x -> fprintf ppf "%S" x)) 
       let path = find_in_path load_paths body ext in
       load_directly_with_cache path
 
-    let load ~load_paths cmtname : file =
+    let load ~load_paths cmtname : Unit.t =
       let alternate_cmtname = 
         if Filename.is_relative cmtname then None
         else
   include Load
 
   let empty_env file =
-    { Env.path = file.path;
-      cwd = file.cmt.cmt_builddir;
-      load_paths = file.cmt.cmt_loadpath;
+    { Env.path = file.Unit.path;
+      cwd = file.Unit.builddir;
+      load_paths = file.Unit.loadpath;
       binding = Binding.empty }
 
   let invalid_env file =
-    { Env.path = file.path;
-      cwd = file.cmt.cmt_builddir;
-      load_paths = file.cmt.cmt_loadpath;
+    { Env.path = file.Unit.path;
+      cwd = file.Unit.builddir;
+      load_paths = file.Unit.loadpath;
       binding = Binding.invalid }
       
   type result =
   let find_path_in_flat file path : PIdent.t * result =
     let env = 
       let env = invalid_env file in
-      let str = Eval.structure env file.flat in
+      let str = Eval.structure env !!(file.Unit.flat) in
       Binding.set env.Env.binding str; (* dirty hack *)
       env
     in
       | path ->
           (* CR jfuruse: loading twice... *)
           Debug.format "Finding %a@." PIdent.format pid;
-          let file = Load.load ~load_paths:[] (cmt_of_file path) in
+          let file = Load.load ~load_paths:[] (Cmt.of_path path) in
           match pid.PIdent.ident with
           | None -> File_itself (* the whole file *)
           | Some id -> 
               Found_at begin try
-                Hashtbl.find !!(file.id_def_regions) id
+                Hashtbl.find !!(file.Unit.id_def_regions) id
               with
               | Not_found ->
                   eprintf "Error: find location of id %a failed@."
   let str_of_global_ident ~load_paths id =
     assert (Ident.global id);
     let file = Load.load_module ~spit:Spotconfig.print_interface ~load_paths (Ident0.name id) in
-    file.path,
-    Eval.structure (empty_env file) file.top
+    file.Unit.path,
+    Eval.structure (empty_env file) file.Unit.top
 
   let _ = Eval.str_of_global_ident := str_of_global_ident
 
   let eval_packed env file =
-    let f = Load.load ~load_paths:[""] (cmt_of_file (env.Env.cwd ^/ file)) in
-    Value.Structure ({ PIdent.path = f.path; ident = None },
-                    Eval.structure (empty_env f) f.top,
+    let f = Load.load ~load_paths:[""] (Cmt.of_path (env.Env.cwd ^/ file)) in
+    Value.Structure ({ PIdent.path = f.Unit.path; ident = None },
+                    Eval.structure (empty_env f) f.Unit.top,
                     None (* packed has no .mli *))
 
   let _ = Eval.packed := eval_packed
 open Cmt_format
 open Spoteval
 
-type file = {
-  cmt            : Cmt_format.cmt_infos;
-  path           : string; (** cmt file itself if packed *)
-  flat           : Abstraction.structure;
-  top            : Abstraction.structure;
-  id_def_regions : (Ident.t, Region.t) Hashtbl.t lazy_t;
-  rannots        : Annot.t list Regioned.t list lazy_t;
-  tree           : Tree.t lazy_t
-}
+module Make(Spotconfig : Spotconfig_intf.S) : sig
+  exception Old_cmt of string * string
+  val load : load_paths:string list -> string -> Unit.t
+  val load_module : ?spit:bool -> load_paths:string list -> string -> Unit.t (* CR jfuruse: spit *)
 
-val source_path_of_cmt : cmt_infos -> string option
-val dump_file : file -> unit
-val cmt_of_file : string -> string
-val abstraction_of_cmt : cmt_infos -> Abstraction.structure * (Location.t, (int (* CR jfuruse: useless *) * Annot.t list)) Hashtbl.t
+  val empty_env   : Unit.t -> Env.t
+  val invalid_env : Unit.t -> Env.t
 
-module Make(Spotconfig : Spotconfig_intf.S) : sig
-  module Load : sig
-    exception Old_cmt of string * string
-    val load : load_paths:string list -> string -> file
-    val load_module : ?spit:bool -> load_paths:string list -> string -> file (* CR jfuruse: spit *)
-  end
-  exception Old_cmt of string * string
-  val load : load_paths:string list -> string -> file
-  val load_module : ?spit:bool -> load_paths:string list -> string -> file (* CR jfuruse: spit *)
-  val empty_env   : file -> Env.t
-  val invalid_env : file -> Env.t
   type result = File_itself | Found_at of Region.t | Predefined
-  val find_path_in_flat : file -> Kind.t * Path.t -> PIdent.t * result
+
+  val find_path_in_flat : Unit.t -> Kind.t * Path.t -> PIdent.t * result
   val str_of_global_ident : load_paths:string list -> Ident.t -> string * Value.structure
   val eval_packed : Env.t -> string -> Value.t
 end
 bigmodtest.cmi : target.cmo
 class.cmi :
 class2.cmi :
+include_sig.cmi : included_sig2.cmo included_sig.cmi
+included_sig.cmi :
 open_in_mli.cmi : target.cmo
 siginclude.cmi :
 siginclude2.cmi :
 included.cmx :
 included_and_flat.cmo :
 included_and_flat.cmx :
+included_sig2.cmo :
+included_sig2.cmx :
 included_value.cmo :
 included_value.cmx :
 including.cmo : included.cmo

tests/Makefile.targets

 include_functor_app.cmo \
 include_modtype.cmo \
 include_override.cmo \
+include_sig.cmi \
 included.cmo \
 included_and_flat.cmo \
+included_sig.cmi \
+included_sig2.cmo \
 included_value.cmo \
 including.cmo \
 inherit.cmo \

tests/include_sig.mli

+include Included_sig.S (* ? S1 *)
+include Included_sig2.S (* ? S2 *)

tests/included_sig.mli

+module type (* S1 => *) S (* <= S1 *) = sig
+  val x : int
+end

tests/included_sig2.ml

+module type (* S2 => *) S (* <= S2 *) = sig
+  val x : int
+end

tests/size/report.txt

+.cmt / .spot
+=================
+
+In the almost cases, spot is -5% to 15% smaller than cmt.
+
+There are small number of modules whose spot is >10 times smaller than cmt: packed cmo's:
+
+modulename                      cmt     spot    cmt/spot
+otherlibs/dynlink/dynlinkaux	200499	4153	48.27
+_build/camlp4/Camlp4/Struct	364921	2420	150.79
+_build/camlp4/Camlp4/Printers	346783	1025	338.32
+
+.cmti / .spit
+=================
+
+In average, the size of spit is 1/13 of the corresponding cmti.
+
+[open M] enlarges the size of cmti when [M] is a big module,
+while spit uses a constant size for opens.

tests/size/stat.dat

+  1787775 _build/camlp4/Camlp4.cmt
+     1378 _build/camlp4/Camlp4.spot
+    74452 _build/camlp4/Camlp4/Debug.cmt
+    28413 _build/camlp4/Camlp4/Debug.cmti
+     1867 _build/camlp4/Camlp4/Debug.spit
+    71645 _build/camlp4/Camlp4/Debug.spot
+   120132 _build/camlp4/Camlp4/ErrorHandler.cmt
+    33784 _build/camlp4/Camlp4/ErrorHandler.cmti
+     3375 _build/camlp4/Camlp4/ErrorHandler.spit
+   111421 _build/camlp4/Camlp4/ErrorHandler.spot
+  1400707 _build/camlp4/Camlp4/OCamlInitSyntax.cmt
+  1244560 _build/camlp4/Camlp4/OCamlInitSyntax.spot
+   140522 _build/camlp4/Camlp4/Options.cmt
+    30657 _build/camlp4/Camlp4/Options.cmti
+     2389 _build/camlp4/Camlp4/Options.spit
+   127550 _build/camlp4/Camlp4/Options.spot
+  2228601 _build/camlp4/Camlp4/PreCast.cmt
+   769675 _build/camlp4/Camlp4/PreCast.cmti
+   341934 _build/camlp4/Camlp4/PreCast.spit
+  2191463 _build/camlp4/Camlp4/PreCast.spot
+   346783 _build/camlp4/Camlp4/Printers.cmt
+     1025 _build/camlp4/Camlp4/Printers.spot
+   254064 _build/camlp4/Camlp4/Printers/DumpCamlp4Ast.cmt
+   151401 _build/camlp4/Camlp4/Printers/DumpCamlp4Ast.cmti
+     1881 _build/camlp4/Camlp4/Printers/DumpCamlp4Ast.spit
+   335864 _build/camlp4/Camlp4/Printers/DumpCamlp4Ast.spot
+   495643 _build/camlp4/Camlp4/Printers/DumpOCamlAst.cmt
+   253420 _build/camlp4/Camlp4/Printers/DumpOCamlAst.cmti
+     1882 _build/camlp4/Camlp4/Printers/DumpOCamlAst.spit
+   629813 _build/camlp4/Camlp4/Printers/DumpOCamlAst.spot
+   200836 _build/camlp4/Camlp4/Printers/Null.cmt
+   151344 _build/camlp4/Camlp4/Printers/Null.cmti
+     1833 _build/camlp4/Camlp4/Printers/Null.spit
+   283553 _build/camlp4/Camlp4/Printers/Null.spot
+  2612644 _build/camlp4/Camlp4/Printers/OCaml.cmt
+  1050124 _build/camlp4/Camlp4/Printers/OCaml.cmti
+   183171 _build/camlp4/Camlp4/Printers/OCaml.spit
+  2651761 _build/camlp4/Camlp4/Printers/OCaml.spot
+  3015336 _build/camlp4/Camlp4/Printers/OCamlr.cmt
+   949665 _build/camlp4/Camlp4/Printers/OCamlr.cmti
+   171235 _build/camlp4/Camlp4/Printers/OCamlr.spit
+  3155928 _build/camlp4/Camlp4/Printers/OCamlr.spot
+  1733523 _build/camlp4/Camlp4/Register.cmt
+   511873 _build/camlp4/Camlp4/Register.cmti
+     9178 _build/camlp4/Camlp4/Register.spit
+  1452922 _build/camlp4/Camlp4/Register.spot
+  2071750 _build/camlp4/Camlp4/Sig.cmt
+   534050 _build/camlp4/Camlp4/Sig.spot
+   364921 _build/camlp4/Camlp4/Struct.cmt
+     2420 _build/camlp4/Camlp4/Struct.spot
+   249109 _build/camlp4/Camlp4/Struct/AstFilters.cmt
+   242949 _build/camlp4/Camlp4/Struct/AstFilters.spot
+  3660480 _build/camlp4/Camlp4/Struct/Camlp4Ast.cmt
+  3289997 _build/camlp4/Camlp4/Struct/Camlp4Ast.spot
+  1166040 _build/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.cmt
+   163401 _build/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.cmti
+     2462 _build/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.spit
+  1099383 _build/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.spot
+   179881 _build/camlp4/Camlp4/Struct/CleanAst.cmt
+   198111 _build/camlp4/Camlp4/Struct/CleanAst.spot
+    53598 _build/camlp4/Camlp4/Struct/CommentFilter.cmt
+    42435 _build/camlp4/Camlp4/Struct/CommentFilter.cmti
+     3399 _build/camlp4/Camlp4/Struct/CommentFilter.spit
+    51937 _build/camlp4/Camlp4/Struct/CommentFilter.spot
+   136693 _build/camlp4/Camlp4/Struct/DynAst.cmt
+   129742 _build/camlp4/Camlp4/Struct/DynAst.spot
+    51968 _build/camlp4/Camlp4/Struct/DynLoader.cmt
+    29400 _build/camlp4/Camlp4/Struct/DynLoader.cmti
+     1951 _build/camlp4/Camlp4/Struct/DynLoader.spit
+    49009 _build/camlp4/Camlp4/Struct/DynLoader.spot
+    28396 _build/camlp4/Camlp4/Struct/EmptyError.cmt
+    28275 _build/camlp4/Camlp4/Struct/EmptyError.cmti
+     1760 _build/camlp4/Camlp4/Struct/EmptyError.spit
+    28331 _build/camlp4/Camlp4/Struct/EmptyError.spot
+    29068 _build/camlp4/Camlp4/Struct/EmptyPrinter.cmt
+    49620 _build/camlp4/Camlp4/Struct/EmptyPrinter.cmti
+     1763 _build/camlp4/Camlp4/Struct/EmptyPrinter.spit
+    50356 _build/camlp4/Camlp4/Struct/EmptyPrinter.spot
+   208855 _build/camlp4/Camlp4/Struct/FreeVars.cmt
+   167524 _build/camlp4/Camlp4/Struct/FreeVars.cmti
+    18405 _build/camlp4/Camlp4/Struct/FreeVars.spit
+   249134 _build/camlp4/Camlp4/Struct/FreeVars.spot
+    98265 _build/camlp4/Camlp4/Struct/Grammar.cmt
+     2264 _build/camlp4/Camlp4/Struct/Grammar.spot
+   159007 _build/camlp4/Camlp4/Struct/Grammar/Delete.cmt
+   160660 _build/camlp4/Camlp4/Struct/Grammar/Delete.spot
+   247527 _build/camlp4/Camlp4/Struct/Grammar/Dynamic.cmt
+   236492 _build/camlp4/Camlp4/Struct/Grammar/Dynamic.spot
+   169469 _build/camlp4/Camlp4/Struct/Grammar/Entry.cmt
+   172108 _build/camlp4/Camlp4/Struct/Grammar/Entry.spot
+   164352 _build/camlp4/Camlp4/Struct/Grammar/Failed.cmt
+   169095 _build/camlp4/Camlp4/Struct/Grammar/Failed.spot
+    26388 _build/camlp4/Camlp4/Struct/Grammar/Find.cmt
+     1603 _build/camlp4/Camlp4/Struct/Grammar/Find.spot
+   181162 _build/camlp4/Camlp4/Struct/Grammar/Fold.cmt
+    65576 _build/camlp4/Camlp4/Struct/Grammar/Fold.cmti
+     2499 _build/camlp4/Camlp4/Struct/Grammar/Fold.spit
+   188915 _build/camlp4/Camlp4/Struct/Grammar/Fold.spot
+   273464 _build/camlp4/Camlp4/Struct/Grammar/Insert.cmt
+   266590 _build/camlp4/Camlp4/Struct/Grammar/Insert.spot
+   370208 _build/camlp4/Camlp4/Struct/Grammar/Parser.cmt
+    89493 _build/camlp4/Camlp4/Struct/Grammar/Parser.cmti
+     9327 _build/camlp4/Camlp4/Struct/Grammar/Parser.spit
+   348305 _build/camlp4/Camlp4/Struct/Grammar/Parser.spot
+   289737 _build/camlp4/Camlp4/Struct/Grammar/Print.cmt
+    64486 _build/camlp4/Camlp4/Struct/Grammar/Print.cmti
+     7243 _build/camlp4/Camlp4/Struct/Grammar/Print.spit
+   290128 _build/camlp4/Camlp4/Struct/Grammar/Print.spot
+    89141 _build/camlp4/Camlp4/Struct/Grammar/Search.cmt
+   101247 _build/camlp4/Camlp4/Struct/Grammar/Search.spot
+   257975 _build/camlp4/Camlp4/Struct/Grammar/Static.cmt
+   245937 _build/camlp4/Camlp4/Struct/Grammar/Static.spot
+   190159 _build/camlp4/Camlp4/Struct/Grammar/Structure.cmt
+   127146 _build/camlp4/Camlp4/Struct/Grammar/Structure.spot
+   167891 _build/camlp4/Camlp4/Struct/Grammar/Tools.cmt
+   173354 _build/camlp4/Camlp4/Struct/Grammar/Tools.spot
+   864192 _build/camlp4/Camlp4/Struct/Lexer.cmt
+   804064 _build/camlp4/Camlp4/Struct/Lexer.spot
+   149624 _build/camlp4/Camlp4/Struct/Loc.cmt
+    34784 _build/camlp4/Camlp4/Struct/Loc.cmti
+     3085 _build/camlp4/Camlp4/Struct/Loc.spit
+   138559 _build/camlp4/Camlp4/Struct/Loc.spot
+  1020052 _build/camlp4/Camlp4/Struct/Quotation.cmt
+   991556 _build/camlp4/Camlp4/Struct/Quotation.spot
+   705969 _build/camlp4/Camlp4/Struct/Token.cmt
+    37533 _build/camlp4/Camlp4/Struct/Token.cmti
+     6423 _build/camlp4/Camlp4/Struct/Token.spit
+   679448 _build/camlp4/Camlp4/Struct/Token.spot
+  2840054 _build/camlp4/Camlp4Bin.cmt
+  2804688 _build/camlp4/Camlp4Bin.spot
+  2159833 _build/camlp4/Camlp4Filters/Camlp4AstLifter.cmt
+  2115891 _build/camlp4/Camlp4Filters/Camlp4AstLifter.spot
+  2076001 _build/camlp4/Camlp4Filters/Camlp4ExceptionTracer.cmt
+  2081832 _build/camlp4/Camlp4Filters/Camlp4ExceptionTracer.spot
+  2476790 _build/camlp4/Camlp4Filters/Camlp4FoldGenerator.cmt
+  2410461 _build/camlp4/Camlp4Filters/Camlp4FoldGenerator.spot
+  2047456 _build/camlp4/Camlp4Filters/Camlp4LocationStripper.cmt
+  2059580 _build/camlp4/Camlp4Filters/Camlp4LocationStripper.spot
+    27574 _build/camlp4/Camlp4Filters/Camlp4MapGenerator.cmt
+    27860 _build/camlp4/Camlp4Filters/Camlp4MapGenerator.spot
+  2465865 _build/camlp4/Camlp4Filters/Camlp4MetaGenerator.cmt
+  2402196 _build/camlp4/Camlp4Filters/Camlp4MetaGenerator.spot
+  2091346 _build/camlp4/Camlp4Filters/Camlp4Profiler.cmt
+  2097064 _build/camlp4/Camlp4Filters/Camlp4Profiler.spot
+  2044943 _build/camlp4/Camlp4Filters/Camlp4TrashRemover.cmt
+  2056669 _build/camlp4/Camlp4Filters/Camlp4TrashRemover.spot
+  2254864 _build/camlp4/Camlp4Parsers/Camlp4AstLoader.cmt
+  2268296 _build/camlp4/Camlp4Parsers/Camlp4AstLoader.spot
+  3494665 _build/camlp4/Camlp4Parsers/Camlp4DebugParser.cmt
+  3496521 _build/camlp4/Camlp4Parsers/Camlp4DebugParser.spot
+  5052620 _build/camlp4/Camlp4Parsers/Camlp4GrammarParser.cmt
+  4595441 _build/camlp4/Camlp4Parsers/Camlp4GrammarParser.spot
+  3542381 _build/camlp4/Camlp4Parsers/Camlp4ListComprehension.cmt
+  3520278 _build/camlp4/Camlp4Parsers/Camlp4ListComprehension.spot
+  6055533 _build/camlp4/Camlp4Parsers/Camlp4MacroParser.cmt
+  5853709 _build/camlp4/Camlp4Parsers/Camlp4MacroParser.spot
+  4518580 _build/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.cmt
+  4563888 _build/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.spot
+  4739318 _build/camlp4/Camlp4Parsers/Camlp4OCamlParser.cmt
+  4230469 _build/camlp4/Camlp4Parsers/Camlp4OCamlParser.spot
+  4085548 _build/camlp4/Camlp4Parsers/Camlp4OCamlParserParser.cmt
+  3964082 _build/camlp4/Camlp4Parsers/Camlp4OCamlParserParser.spot
+  3495068 _build/camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.cmt
+  3485869 _build/camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.spot
+  7614870 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.cmt
+  5859364 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.spot
+  3765272 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.cmt
+  3662150 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.spot
+  4137862 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.cmt
+  4173871 _build/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.spot
+  3944518 _build/camlp4/Camlp4Parsers/Camlp4QuotationCommon.cmt
+  3834986 _build/camlp4/Camlp4Parsers/Camlp4QuotationCommon.spot
+  3822128 _build/camlp4/Camlp4Parsers/Camlp4QuotationExpander.cmt
+  3464348 _build/camlp4/Camlp4Parsers/Camlp4QuotationExpander.spot
+    28004 _build/camlp4/Camlp4Printers/Camlp4AstDumper.cmt
+    27496 _build/camlp4/Camlp4Printers/Camlp4AstDumper.spot
+    35605 _build/camlp4/Camlp4Printers/Camlp4AutoPrinter.cmt
+    34942 _build/camlp4/Camlp4Printers/Camlp4AutoPrinter.spot
+    27999 _build/camlp4/Camlp4Printers/Camlp4NullDumper.cmt
+    27490 _build/camlp4/Camlp4Printers/Camlp4NullDumper.spot
+    28033 _build/camlp4/Camlp4Printers/Camlp4OCamlAstDumper.cmt
+    27520 _build/camlp4/Camlp4Printers/Camlp4OCamlAstDumper.spot
+    28012 _build/camlp4/Camlp4Printers/Camlp4OCamlPrinter.cmt
+    27501 _build/camlp4/Camlp4Printers/Camlp4OCamlPrinter.spot
+    28055 _build/camlp4/Camlp4Printers/Camlp4OCamlRevisedPrinter.cmt
+    27538 _build/camlp4/Camlp4Printers/Camlp4OCamlRevisedPrinter.spot
+    19137 _build/camlp4/Camlp4Top.cmt
+      515 _build/camlp4/Camlp4Top.spot
+  2224404 _build/camlp4/Camlp4Top/Rprint.cmt
+  2118123 _build/camlp4/Camlp4Top/Rprint.spot
+  3094886 _build/camlp4/Camlp4Top/Top.cmt
+  3098442 _build/camlp4/Camlp4Top/Top.spot
+    35055 _build/camlp4/Camlp4_config.cmt
+    33139 _build/camlp4/Camlp4_config.cmti
+     2950 _build/camlp4/Camlp4_config.spit
+    33444 _build/camlp4/Camlp4_config.spot
+   898087 _build/camlp4/Camlp4_import.cmt
+   746789 _build/camlp4/Camlp4_import.spot
+ 27917232 _build/camlp4/boot/Camlp4.cmt
+ 23133697 _build/camlp4/boot/Camlp4.spot
+ 39688144 _build/camlp4/boot/camlp4boot.cmt
+ 37259400 _build/camlp4/boot/camlp4boot.spot
+    40021 _build/camlp4/camlp4prof.cmt
+    27542 _build/camlp4/camlp4prof.cmti
+     1738 _build/camlp4/camlp4prof.spit
+    38246 _build/camlp4/camlp4prof.spot
+  1883050 _build/camlp4/mkcamlp4.cmt
+  1875523 _build/camlp4/mkcamlp4.spot
+   569099 _build/myocamlbuild.cmt
+   455077 _build/myocamlbuild.spot
+    54551 _build/myocamlbuild_config.cmt
+    45824 _build/myocamlbuild_config.cmti
+     6613 _build/myocamlbuild_config.spit
+    53867 _build/myocamlbuild_config.spot
+    39018 _build/ocamlbuild/bool.cmt
+    31800 _build/ocamlbuild/bool.cmti
+     2200 _build/ocamlbuild/bool.spit
+    37734 _build/ocamlbuild/bool.spot
+   194443 _build/ocamlbuild/command.cmt
+    41827 _build/ocamlbuild/command.cmti
+     4013 _build/ocamlbuild/command.spit
+   181949 _build/ocamlbuild/command.spot
+    82630 _build/ocamlbuild/configuration.cmt
+    31769 _build/ocamlbuild/configuration.cmti
+     2259 _build/ocamlbuild/configuration.spit
+    78176 _build/ocamlbuild/configuration.spot
+    50239 _build/ocamlbuild/digest_cache.cmt
+    28644 _build/ocamlbuild/digest_cache.cmti
+     1763 _build/ocamlbuild/digest_cache.spit
+    47655 _build/ocamlbuild/digest_cache.spot
+    28321 _build/ocamlbuild/discard_printf.cmt
+    46488 _build/ocamlbuild/discard_printf.cmti
+     1650 _build/ocamlbuild/discard_printf.spit
+    27854 _build/ocamlbuild/discard_printf.spot
+   167818 _build/ocamlbuild/display.cmt
+    34238 _build/ocamlbuild/display.cmti
+     2735 _build/ocamlbuild/display.spit
+   153178 _build/ocamlbuild/display.spot
+    32302 _build/ocamlbuild/exit_codes.cmt
+    31920 _build/ocamlbuild/exit_codes.cmti
+     2674 _build/ocamlbuild/exit_codes.spit
+    32052 _build/ocamlbuild/exit_codes.spot
+    45652 _build/ocamlbuild/fda.cmt
+    28310 _build/ocamlbuild/fda.cmti
+     1605 _build/ocamlbuild/fda.spit
+    41439 _build/ocamlbuild/fda.spot
+   120768 _build/ocamlbuild/findlib.cmt
+    33386 _build/ocamlbuild/findlib.cmti
+     2082 _build/ocamlbuild/findlib.spit
+   113408 _build/ocamlbuild/findlib.spot
+    48707 _build/ocamlbuild/flags.cmt
+    32403 _build/ocamlbuild/flags.cmti
+     2551 _build/ocamlbuild/flags.spit
+    45760 _build/ocamlbuild/flags.spot
+   197470 _build/ocamlbuild/glob.cmt
+    30743 _build/ocamlbuild/glob.cmti
+     1947 _build/ocamlbuild/glob.spit
+   184205 _build/ocamlbuild/glob.spot
+    30367 _build/ocamlbuild/glob_ast.cmt
+    31032 _build/ocamlbuild/glob_ast.cmti
+     2325 _build/ocamlbuild/glob_ast.spit
+     2361 _build/ocamlbuild/glob_ast.spot
+    80709 _build/ocamlbuild/glob_lexer.cmt
+    30914 _build/ocamlbuild/glob_lexer.cmti
+     2059 _build/ocamlbuild/glob_lexer.spit
+    73919 _build/ocamlbuild/glob_lexer.spot
+    30088 _build/ocamlbuild/hooks.cmt
+    29257 _build/ocamlbuild/hooks.cmti
+     1985 _build/ocamlbuild/hooks.spit
+    29688 _build/ocamlbuild/hooks.spot
+   104745 _build/ocamlbuild/hygiene.cmt
+    33843 _build/ocamlbuild/hygiene.cmti
+     2539 _build/ocamlbuild/hygiene.spit
+    99781 _build/ocamlbuild/hygiene.spot
+   197197 _build/ocamlbuild/lexers.cmt
+    38313 _build/ocamlbuild/lexers.cmti
+     4316 _build/ocamlbuild/lexers.spit
+   172090 _build/ocamlbuild/lexers.spot
+    58975 _build/ocamlbuild/log.cmt
+    33310 _build/ocamlbuild/log.cmti
+     2561 _build/ocamlbuild/log.spit
+    55683 _build/ocamlbuild/log.spot
+   167369 _build/ocamlbuild/main.cmt
+    27672 _build/ocamlbuild/main.cmti
+     1497 _build/ocamlbuild/main.spit
+   153346 _build/ocamlbuild/main.spot
+   289956 _build/ocamlbuild/my_std.cmt
+    64342 _build/ocamlbuild/my_std.cmti
+    12565 _build/ocamlbuild/my_std.spit
+   276995 _build/ocamlbuild/my_std.spot
+    86685 _build/ocamlbuild/my_unix.cmt
+    43400 _build/ocamlbuild/my_unix.cmti
+     5659 _build/ocamlbuild/my_unix.spit
+    80832 _build/ocamlbuild/my_unix.spot
+   129634 _build/ocamlbuild/ocaml_arch.cmt
+    33987 _build/ocamlbuild/ocaml_arch.cmti
+     2246 _build/ocamlbuild/ocaml_arch.spit
+   124256 _build/ocamlbuild/ocaml_arch.spot
+   298094 _build/ocamlbuild/ocaml_compiler.cmt
+    70936 _build/ocamlbuild/ocaml_compiler.cmti
+    14162 _build/ocamlbuild/ocaml_compiler.spit
+   274778 _build/ocamlbuild/ocaml_compiler.spot
+   157501 _build/ocamlbuild/ocaml_dependencies.cmt
+    34110 _build/ocamlbuild/ocaml_dependencies.cmti
+     3062 _build/ocamlbuild/ocaml_dependencies.spit
+   148190 _build/ocamlbuild/ocaml_dependencies.spot
+   340824 _build/ocamlbuild/ocaml_specific.cmt
+    27724 _build/ocamlbuild/ocaml_specific.cmti
+     1537 _build/ocamlbuild/ocaml_specific.spit
+   270655 _build/ocamlbuild/ocaml_specific.spot
+   156469 _build/ocamlbuild/ocaml_tools.cmt
+    38934 _build/ocamlbuild/ocaml_tools.cmti
+     4439 _build/ocamlbuild/ocaml_tools.spit
+   143919 _build/ocamlbuild/ocaml_tools.spot
+   164181 _build/ocamlbuild/ocaml_utils.cmt
+    40060 _build/ocamlbuild/ocaml_utils.cmti
+     4859 _build/ocamlbuild/ocaml_utils.spit
+   152180 _build/ocamlbuild/ocaml_utils.spot
+    27997 _build/ocamlbuild/ocamlbuild.cmt
+    27312 _build/ocamlbuild/ocamlbuild.cmti
+     1415 _build/ocamlbuild/ocamlbuild.spit
+    27513 _build/ocamlbuild/ocamlbuild.spot
+    54358 _build/ocamlbuild/ocamlbuild_Myocamlbuild_config.cmt
+    45733 _build/ocamlbuild/ocamlbuild_Myocamlbuild_config.cmti
+     6517 _build/ocamlbuild/ocamlbuild_Myocamlbuild_config.spit
+    53677 _build/ocamlbuild/ocamlbuild_Myocamlbuild_config.spot
+   183125 _build/ocamlbuild/ocamlbuild_executor.cmt
+    31976 _build/ocamlbuild/ocamlbuild_executor.cmti
+     2334 _build/ocamlbuild/ocamlbuild_executor.spit
+   172833 _build/ocamlbuild/ocamlbuild_executor.spot
+   244812 _build/ocamlbuild/ocamlbuild_pack.cmt
+     5174 _build/ocamlbuild/ocamlbuild_pack.spot
+   250317 _build/ocamlbuild/ocamlbuild_plugin.cmt
+   104668 _build/ocamlbuild/ocamlbuild_plugin.cmti
+     4212 _build/ocamlbuild/ocamlbuild_plugin.spit
+   245832 _build/ocamlbuild/ocamlbuild_plugin.spot
+   206431 _build/ocamlbuild/ocamlbuild_unix_plugin.cmt
+    27782 _build/ocamlbuild/ocamlbuild_unix_plugin.cmti
+     1572 _build/ocamlbuild/ocamlbuild_unix_plugin.spit
+   201832 _build/ocamlbuild/ocamlbuild_unix_plugin.spot
+    28871 _build/ocamlbuild/ocamlbuild_where.cmt
+    28086 _build/ocamlbuild/ocamlbuild_where.cmti
+     1670 _build/ocamlbuild/ocamlbuild_where.spit
+    28336 _build/ocamlbuild/ocamlbuild_where.spot
+    27700 _build/ocamlbuild/ocamlbuildlight.cmt
+    27318 _build/ocamlbuild/ocamlbuildlight.cmti
+     1435 _build/ocamlbuild/ocamlbuildlight.spit
+    27323 _build/ocamlbuild/ocamlbuildlight.spot
+   201034 _build/ocamlbuild/options.cmt
+    41162 _build/ocamlbuild/options.cmti
+     3869 _build/ocamlbuild/options.spit
+   182423 _build/ocamlbuild/options.spot
+    58410 _build/ocamlbuild/param_tags.cmt
+    30853 _build/ocamlbuild/param_tags.cmti
+     1952 _build/ocamlbuild/param_tags.spit
+    55234 _build/ocamlbuild/param_tags.spot
+   136341 _build/ocamlbuild/pathname.cmt
+    36312 _build/ocamlbuild/pathname.cmti
+     3453 _build/ocamlbuild/pathname.spit
+   129224 _build/ocamlbuild/pathname.spot
+   120372 _build/ocamlbuild/plugin.cmt
+    27757 _build/ocamlbuild/plugin.cmti
+     1525 _build/ocamlbuild/plugin.spit
+   112466 _build/ocamlbuild/plugin.spot
+    82673 _build/ocamlbuild/report.cmt
+    29163 _build/ocamlbuild/report.cmti
+     1780 _build/ocamlbuild/report.spit
+    78875 _build/ocamlbuild/report.spot
+   222053 _build/ocamlbuild/resource.cmt
+    76678 _build/ocamlbuild/resource.cmti
+    11922 _build/ocamlbuild/resource.spit
+   204911 _build/ocamlbuild/resource.spot
+   232478 _build/ocamlbuild/rule.cmt
+    72059 _build/ocamlbuild/rule.cmti
+     7771 _build/ocamlbuild/rule.spit
+   214965 _build/ocamlbuild/rule.spot
+    82921 _build/ocamlbuild/shell.cmt
+    33049 _build/ocamlbuild/shell.cmti
+     2834 _build/ocamlbuild/shell.spit
+    75944 _build/ocamlbuild/shell.spot
+   272357 _build/ocamlbuild/signatures.cmti
+    71169 _build/ocamlbuild/signatures.spit
+   125758 _build/ocamlbuild/slurp.cmt
+    35102 _build/ocamlbuild/slurp.cmti
+     2787 _build/ocamlbuild/slurp.spit
+   120159 _build/ocamlbuild/slurp.spot
+   115915 _build/ocamlbuild/solver.cmt
+    31347 _build/ocamlbuild/solver.cmti
+     2423 _build/ocamlbuild/solver.spit
+   108883 _build/ocamlbuild/solver.spot
+    68470 _build/ocamlbuild/tags.cmt
+    35408 _build/ocamlbuild/tags.cmti
+     2631 _build/ocamlbuild/tags.spit
+    67003 _build/ocamlbuild/tags.spot
+    90119 _build/ocamlbuild/tools.cmt
+    29602 _build/ocamlbuild/tools.cmti
+     1918 _build/ocamlbuild/tools.spit
+    86343 _build/ocamlbuild/tools.spot
+   108770 asmcomp/arch.cmt
+    99033 asmcomp/arch.spot
+   125861 asmcomp/asmgen.cmt
+    31837 asmcomp/asmgen.cmti
+     2246 asmcomp/asmgen.spit
+   112080 asmcomp/asmgen.spot
+    76839 asmcomp/asmlibrarian.cmt
+    48141 asmcomp/asmlibrarian.cmti
+     2054 asmcomp/asmlibrarian.spit
+    71752 asmcomp/asmlibrarian.spot
+   205331 asmcomp/asmlink.cmt
+    55141 asmcomp/asmlink.cmti
+     3985 asmcomp/asmlink.spit
+   186222 asmcomp/asmlink.spot
+   154351 asmcomp/asmpackager.cmt
+    31244 asmcomp/asmpackager.cmti
+     2455 asmcomp/asmpackager.spit
+   143500 asmcomp/asmpackager.spot
+    63645 asmcomp/clambda.cmt
+    66994 asmcomp/clambda.cmti
+     6775 asmcomp/clambda.spit
+     6795 asmcomp/clambda.spot
+   432991 asmcomp/closure.cmt
+    29145 asmcomp/closure.cmti
+     1563 asmcomp/closure.spit
+   409384 asmcomp/closure.spot
+    53907 asmcomp/cmm.cmt
+    53115 asmcomp/cmm.cmti
+     9759 asmcomp/cmm.spit
+    42053 asmcomp/cmm.spot
+  1137892 asmcomp/cmmgen.cmt
+    36833 asmcomp/cmmgen.cmti
+     3914 asmcomp/cmmgen.spit
+  1059864 asmcomp/cmmgen.spot
+    38267 asmcomp/cmx_format.cmti
+     3901 asmcomp/cmx_format.spit
+   120599 asmcomp/coloring.cmt
+    27918 asmcomp/coloring.cmti
+     1511 asmcomp/coloring.spit
+   110251 asmcomp/coloring.spot
+    67023 asmcomp/comballoc.cmt
+    29604 asmcomp/comballoc.cmti
+     1532 asmcomp/comballoc.spit
+    63800 asmcomp/comballoc.spot
+   128727 asmcomp/compilenv.cmt
+    50435 asmcomp/compilenv.cmti
+     5069 asmcomp/compilenv.spit
+   119238 asmcomp/compilenv.spot
+    49383 asmcomp/debuginfo.cmt
+    32847 asmcomp/debuginfo.cmti
+     2684 asmcomp/debuginfo.spit
+    46005 asmcomp/debuginfo.spot
+   488068 asmcomp/emit.cmt
+    30919 asmcomp/emit.cmti
+     1881 asmcomp/emit.spit
+   456555 asmcomp/emit.spot
+   133318 asmcomp/emitaux.cmt
+    43746 asmcomp/emitaux.cmti
+     5759 asmcomp/emitaux.spit
+   120393 asmcomp/emitaux.spot
+   114900 asmcomp/interf.cmt
+    29618 asmcomp/interf.cmti
+     1516 asmcomp/interf.spit
+   108998 asmcomp/interf.spot
+   130633 asmcomp/linearize.cmt
+    39019 asmcomp/linearize.cmti
+     4499 asmcomp/linearize.spit
+   121469 asmcomp/linearize.spot
+    69000 asmcomp/liveness.cmt
+    47968 asmcomp/liveness.cmti
+     1598 asmcomp/liveness.spit
+    64160 asmcomp/liveness.spot
+    59025 asmcomp/mach.cmt
+    49303 asmcomp/mach.cmti
+     8138 asmcomp/mach.spit
+    53265 asmcomp/mach.spot
+   122289 asmcomp/printclambda.cmt
+    52063 asmcomp/printclambda.cmti
+     1642 asmcomp/printclambda.spit
+   116351 asmcomp/printclambda.spot
+   141274 asmcomp/printcmm.cmt
+    51796 asmcomp/printcmm.cmti
+     2846 asmcomp/printcmm.spit
+   134824 asmcomp/printcmm.spot
+    85841 asmcomp/printlinear.cmt
+    52242 asmcomp/printlinear.cmti
+     1785 asmcomp/printlinear.spit
+    80457 asmcomp/printlinear.spot
+   173603 asmcomp/printmach.cmt
+    54899 asmcomp/printmach.cmti
+     3535 asmcomp/printmach.spit
+   162086 asmcomp/printmach.spot
+   132570 asmcomp/proc.cmt
+    39659 asmcomp/proc.cmti
+     4469 asmcomp/proc.spit
+   110399 asmcomp/proc.spot
+    96577 asmcomp/reg.cmt
+    54941 asmcomp/reg.cmti
+    10827 asmcomp/reg.spit
+    89779 asmcomp/reg.spot
+    80976 asmcomp/reload.cmt
+    29728 asmcomp/reload.cmti
+     1559 asmcomp/reload.spit
+    74559 asmcomp/reload.spot
+    99769 asmcomp/reloadgen.cmt
+    37976 asmcomp/reloadgen.cmti
+     2226 asmcomp/reloadgen.spit
+    90564 asmcomp/reloadgen.spot
+   151197 asmcomp/schedgen.cmt
+    41360 asmcomp/schedgen.cmti
+     2824 asmcomp/schedgen.spit
+   130414 asmcomp/schedgen.spot
+    33085 asmcomp/scheduling.cmt
+    29650 asmcomp/scheduling.cmti
+     1545 asmcomp/scheduling.spit
+    31426 asmcomp/scheduling.spot
+   390110 asmcomp/selectgen.cmt
+    71607 asmcomp/selectgen.cmti
+     6065 asmcomp/selectgen.spit
+   360800 asmcomp/selectgen.spot
+   205355 asmcomp/selection.cmt
+    29631 asmcomp/selection.cmti
+     1531 asmcomp/selection.spit
+   188466 asmcomp/selection.spot
+   184774 asmcomp/spill.cmt
+    29623 asmcomp/spill.cmti
+     1520 asmcomp/spill.spit
+   173335 asmcomp/spill.spot
+   118150 asmcomp/split.cmt
+    29586 asmcomp/split.cmti
+     1520 asmcomp/split.spit
+   111295 asmcomp/split.spot
+   449742 bytecomp/bytegen.cmt
+    57379 bytecomp/bytegen.cmti
+     1880 bytecomp/bytegen.spit
+   421555 bytecomp/bytegen.spot
+    93957 bytecomp/bytelibrarian.cmt
+    48547 bytecomp/bytelibrarian.cmti
+     2114 bytecomp/bytelibrarian.spit
+    87800 bytecomp/bytelibrarian.spot
+   255593 bytecomp/bytelink.cmt
+    52066 bytecomp/bytelink.cmti
+     3013 bytecomp/bytelink.spit
+   229723 bytecomp/bytelink.spot
+   154465 bytecomp/bytepackager.cmt
+    31201 bytecomp/bytepackager.cmti
+     2444 bytecomp/bytepackager.spit
+   142519 bytecomp/bytepackager.spot
+    55419 bytecomp/bytesections.cmt
+    33602 bytecomp/bytesections.cmti
+     2649 bytecomp/bytesections.spit
+    52077 bytecomp/bytesections.spot
+    36366 bytecomp/cmo_format.cmti
+     3357 bytecomp/cmo_format.spit
+    71037 bytecomp/dll.cmt
+    33786 bytecomp/dll.cmti
+     2597 bytecomp/dll.spit
+    64295 bytecomp/dll.spot
+   247603 bytecomp/emitcode.cmt
+    42000 bytecomp/emitcode.cmti
+     2282 bytecomp/emitcode.spit
+   233740 bytecomp/emitcode.spot
+    64719 bytecomp/instruct.cmt
+    69648 bytecomp/instruct.cmti
+     8718 bytecomp/instruct.spit
+    59494 bytecomp/instruct.spot
+   220931 bytecomp/lambda.cmt
+    86934 bytecomp/lambda.cmti
+    20306 bytecomp/lambda.spit
+   207303 bytecomp/lambda.spot
+  1320625 bytecomp/matching.cmt
+    90575 bytecomp/matching.cmti
+     3763 bytecomp/matching.spit
+  1291521 bytecomp/matching.spot
+    32119 bytecomp/meta.cmt
+    33676 bytecomp/meta.cmti
+     2851 bytecomp/meta.spit
+     2872 bytecomp/meta.spot
+    83749 bytecomp/opcodes.cmt
+    78708 bytecomp/opcodes.spot
+   123003 bytecomp/printinstr.cmt
+    55778 bytecomp/printinstr.cmti
+     1816 bytecomp/printinstr.spit
+   117037 bytecomp/printinstr.spot
+   241464 bytecomp/printlambda.cmt
+    68050 bytecomp/printlambda.cmti
+     1950 bytecomp/printlambda.spit
+   230390 bytecomp/printlambda.spot
+    44588 bytecomp/runtimedef.cmt
+    28299 bytecomp/runtimedef.cmti
+     1642 bytecomp/runtimedef.spit
+    41275 bytecomp/runtimedef.spot
+   292522 bytecomp/simplif.cmt
+    49359 bytecomp/simplif.cmti
+     1729 bytecomp/simplif.spit
+   278505 bytecomp/simplif.spot
+   336991 bytecomp/switch.cmt
+    41510 bytecomp/switch.cmti
+     5223 bytecomp/switch.spit
+   316718 bytecomp/switch.spot
+   204404 bytecomp/symtable.cmt
+    61707 bytecomp/symtable.cmti
+     5061 bytecomp/symtable.spit
+   187133 bytecomp/symtable.spot
+   548762 bytecomp/translclass.cmt
+   103972 bytecomp/translclass.cmti
+     2362 bytecomp/translclass.spit
+   513334 bytecomp/translclass.spot
+   543778 bytecomp/translcore.cmt
+   138024 bytecomp/translcore.cmti
+     4306 bytecomp/translcore.spit
+   497346 bytecomp/translcore.spot
+   436560 bytecomp/translmod.cmt
+    90476 bytecomp/translmod.cmti
+     3733 bytecomp/translmod.spit
+   406120 bytecomp/translmod.spot
+   110554 bytecomp/translobj.cmt
+    55448 bytecomp/translobj.cmti
+     2821 bytecomp/translobj.spit
+   102599 bytecomp/translobj.spot
+   156249 bytecomp/typeopt.cmt
+    31270 bytecomp/typeopt.cmti
+     2247 bytecomp/typeopt.spit
+   147569 bytecomp/typeopt.spot
+   102493 debugger/breakpoints.cmt
+    46153 debugger/breakpoints.cmti
+     3171 debugger/breakpoints.spit
+    94169 debugger/breakpoints.spot
+    48595 debugger/checkpoints.cmt
+    43492 debugger/checkpoints.cmti
+     3607 debugger/checkpoints.spit
+    44679 debugger/checkpoints.spot
+   565851 debugger/command_line.cmt
+    52474 debugger/command_line.cmti
+     1797 debugger/command_line.spit
+   510021 debugger/command_line.spot
+   113656 debugger/debugcom.cmt
+    45771 debugger/debugcom.cmti
+     7116 debugger/debugcom.spit
+   105794 debugger/debugcom.spot
+    36774 debugger/debugger_config.cmt
+    32605 debugger/debugger_config.cmti
+     2805 debugger/debugger_config.spit
+    33832 debugger/debugger_config.spot
+   115934 debugger/dynlink.cmt
+    42967 debugger/dynlink.cmti
+     4671 debugger/dynlink.spit
+   105044 debugger/dynlink.spot
+   122776 debugger/envaux.cmt
+    49460 debugger/envaux.cmti
+     2075 debugger/envaux.spit
+   115667 debugger/envaux.spot
+   155515 debugger/eval.cmt
+    77914 debugger/eval.cmti
+     3364 debugger/eval.spit
+   145728 debugger/eval.spot
+    40660 debugger/events.cmt
+    38368 debugger/events.cmti
+     1973 debugger/events.spit
+    38635 debugger/events.spot
+    36336 debugger/exec.cmt
+    28629 debugger/exec.cmti
+     1650 debugger/exec.spit
+    35077 debugger/exec.spot
+    69239 debugger/frames.cmt
+    44809 debugger/frames.cmti
+     2675 debugger/frames.spit
+    64203 debugger/frames.spot
+    44103 debugger/history.cmt
+    28761 debugger/history.cmti
+     1730 debugger/history.spit
+    41391 debugger/history.spot
+   101011 debugger/input_handling.cmt
+    37390 debugger/input_handling.cmti
+     3001 debugger/input_handling.spit
+    95811 debugger/input_handling.spot
+    31782 debugger/int64ops.cmt
+    31287 debugger/int64ops.cmti
+     2352 debugger/int64ops.spit
+    30530 debugger/int64ops.spot
+    62878 debugger/lexer.cmt
+    29673 debugger/lexer.cmti
+     1932 debugger/lexer.spit
+    54332 debugger/lexer.spot
+   144184 debugger/loadprinter.cmt
+    50215 debugger/loadprinter.cmti
+     2660 debugger/loadprinter.spit
+   135342 debugger/loadprinter.spot
+   122636 debugger/main.cmt
+   106117 debugger/main.spot
+    44409 debugger/parameters.cmt
+    30558 debugger/parameters.cmti
+     2244 debugger/parameters.spit
+    40830 debugger/parameters.spot
+   214786 debugger/parser.cmt
+    46643 debugger/parser.cmti
+     7522 debugger/parser.spit
+   190404 debugger/parser.spot
+    34308 debugger/parser_aux.cmti
+     2518 debugger/parser_aux.spit
+    54657 debugger/pos.cmt
+    28884 debugger/pos.cmti
+     1514 debugger/pos.spit
+    50824 debugger/pos.spot
+    66105 debugger/primitives.cmt
+    36440 debugger/primitives.cmti
+     3277 debugger/primitives.spit
+    62432 debugger/primitives.spot
+   111324 debugger/printval.cmt
+    52238 debugger/printval.cmti
+     2963 debugger/printval.spit
+   104977 debugger/printval.spot
+   115652 debugger/program_loading.cmt
+    31614 debugger/program_loading.cmti
+     2427 debugger/program_loading.spit
+   107918 debugger/program_loading.spot
+   122447 debugger/program_management.cmt
+    29474 debugger/program_management.cmti
+     1882 debugger/program_management.spit
+   112193 debugger/program_management.spot
+    39420 debugger/question.cmt
+    27807 debugger/question.cmti
+     1511 debugger/question.spit
+    37274 debugger/question.spot
+    96060 debugger/show_information.cmt
+    48855 debugger/show_information.cmti
+     1934 debugger/show_information.spit
+    88521 debugger/show_information.spot
+    76096 debugger/show_source.cmt
+    30848 debugger/show_source.cmti
+     1970 debugger/show_source.spit
+    70474 debugger/show_source.spot
+    89385 debugger/source.cmt
+    35954 debugger/source.cmti
+     3276 debugger/source.spit
+    83062 debugger/source.spot
+    93396 debugger/symbols.cmt
+    34242 debugger/symbols.cmti
+     2782 debugger/symbols.spit
+    84197 debugger/symbols.spot
+   221601 debugger/time_travel.cmt
+    36901 debugger/time_travel.cmti
+     3157 debugger/time_travel.spit
+   202416 debugger/time_travel.spot
+    41565 debugger/trap_barrier.cmt
+    29823 debugger/trap_barrier.cmti
+     1934 debugger/trap_barrier.spit
+    39614 debugger/trap_barrier.spot
+   126358 debugger/unix_tools.cmt
+    75731 debugger/unix_tools.cmti
+     2053 debugger/unix_tools.spit
+   119870 debugger/unix_tools.spot
+   143090 driver/compile.cmt
+    49191 driver/compile.cmti
+     2104 driver/compile.spit
+   128670 driver/compile.spot
+    73682 driver/errors.cmt
+    46319 driver/errors.cmti
+     1583 driver/errors.spit
+    67557 driver/errors.spot
+   125900 driver/main.cmt
+    27437 driver/main.cmti
+     1377 driver/main.spit
+   116391 driver/main.spot
+   258431 driver/main_args.cmt
+   110488 driver/main_args.cmti
+    25708 driver/main_args.spit
+   202506 driver/main_args.spot
+   142182 driver/optcompile.cmt
+    49206 driver/optcompile.cmti
+     2113 driver/optcompile.spit
+   127825 driver/optcompile.spot
+    74746 driver/opterrors.cmt
+    28152 driver/opterrors.cmti
+     1563 driver/opterrors.spit
+    68438 driver/opterrors.spot
+   134941 driver/optmain.cmt
+    27454 driver/optmain.cmti
+     1386 driver/optmain.spit
+   124553 driver/optmain.spot
+    63827 driver/pparse.cmt
+    48156 driver/pparse.cmti
+     2008 driver/pparse.spit
+    60459 driver/pparse.spot
+    91116 lex/common.cmt
+    33330 lex/common.cmti
+     2927 lex/common.spit
+    86731 lex/common.spot
+   103677 lex/compact.cmt
+    32426 lex/compact.cmti
+     2704 lex/compact.spit
+    94969 lex/compact.spot
+    53887 lex/cset.cmt
+    32944 lex/cset.cmti
+     2670 lex/cset.spit
+    51814 lex/cset.spot
+   140137 lex/lexer.cmt
+    28598 lex/lexer.cmti
+     1601 lex/lexer.spit
+   126325 lex/lexer.spot
+   512866 lex/lexgen.cmt
+    39680 lex/lexgen.cmti
+     4399 lex/lexgen.spit
+   479299 lex/lexgen.spot
+    66791 lex/main.cmt
+    59207 lex/main.spot
+    92068 lex/output.cmt
+    29796 lex/output.cmti
+     1969 lex/output.spit
+    86258 lex/output.spot
+   101914 lex/outputbis.cmt
+    29542 lex/outputbis.cmti
+     1961 lex/outputbis.spit
+    95171 lex/outputbis.spot
+   127478 lex/parser.cmt
+    30647 lex/parser.cmti
+     2764 lex/parser.spit
+   114456 lex/parser.spot
+    32959 lex/syntax.cmt
+    34008 lex/syntax.cmti
+     3081 lex/syntax.spit
+     3059 lex/syntax.spot
+    43784 lex/table.cmt
+    30931 lex/table.cmti
+     1981 lex/table.spit
+    41558 lex/table.spot
+   340666 ocamldoc/generators/odoc_literate.cmt
+   239203 ocamldoc/generators/odoc_literate.spot
+   399948 ocamldoc/generators/odoc_todo.cmt
+   285332 ocamldoc/generators/odoc_todo.spot
+   172387 ocamldoc/odoc.cmt
+   145961 ocamldoc/odoc.spot
+   254604 ocamldoc/odoc_analyse.cmt
+    31667 ocamldoc/odoc_analyse.cmti
+     2264 ocamldoc/odoc_analyse.spit
+   229791 ocamldoc/odoc_analyse.spot
+   658930 ocamldoc/odoc_args.cmt
+    36892 ocamldoc/odoc_args.cmti
+     3048 ocamldoc/odoc_args.spit
+   627652 ocamldoc/odoc_args.spot
+   715239 ocamldoc/odoc_ast.cmt
+    45800 ocamldoc/odoc_ast.cmti
+     7165 ocamldoc/odoc_ast.spit
+   657179 ocamldoc/odoc_ast.spot
+    95119 ocamldoc/odoc_class.cmt
+    77299 ocamldoc/odoc_class.spot
+   139741 ocamldoc/odoc_comments.cmt
+    37361 ocamldoc/odoc_comments.cmti
+     4164 ocamldoc/odoc_comments.spit
+   126945 ocamldoc/odoc_comments.spot
+    37697 ocamldoc/odoc_comments_global.cmt
+    34281 ocamldoc/odoc_comments_global.cmti
+     3343 ocamldoc/odoc_comments_global.spit
+    35991 ocamldoc/odoc_comments_global.spot
+    28733 ocamldoc/odoc_config.cmt
+    28477 ocamldoc/odoc_config.cmti
+     1812 ocamldoc/odoc_config.spit
+    28212 ocamldoc/odoc_config.spot
+    27430 ocamldoc/odoc_control.cmt
+     1572 ocamldoc/odoc_control.spot
+   450874 ocamldoc/odoc_cross.cmt
+    30375 ocamldoc/odoc_cross.cmti
+     2026 ocamldoc/odoc_cross.spit
+   420261 ocamldoc/odoc_cross.spot
+   874626 ocamldoc/odoc_dag2html.cmt
+    33655 ocamldoc/odoc_dag2html.cmti
+     2655 ocamldoc/odoc_dag2html.spit
+   821570 ocamldoc/odoc_dag2html.spot
+   150897 ocamldoc/odoc_dep.cmt
+   123801 ocamldoc/odoc_dep.spot
+   171004 ocamldoc/odoc_dot.cmt
+   139709 ocamldoc/odoc_dot.spot
+   115258 ocamldoc/odoc_env.cmt
+    42616 ocamldoc/odoc_env.cmti
+     5283 ocamldoc/odoc_env.spit
+   106430 ocamldoc/odoc_env.spot
+    35638 ocamldoc/odoc_exception.cmt
+     3956 ocamldoc/odoc_exception.spot
+   197713 ocamldoc/odoc_gen.cmt
+    41752 ocamldoc/odoc_gen.cmti
+     4140 ocamldoc/odoc_gen.spit
+   190203 ocamldoc/odoc_gen.spot
+    53412 ocamldoc/odoc_global.cmt
+    43070 ocamldoc/odoc_global.cmti
+     5435 ocamldoc/odoc_global.spit
+    50652 ocamldoc/odoc_global.spot
+  1328730 ocamldoc/odoc_html.cmt
+  1082961 ocamldoc/odoc_html.spot
+   179727 ocamldoc/odoc_info.cmt
+   263625 ocamldoc/odoc_info.cmti
+    74941 ocamldoc/odoc_info.spit
+   154974 ocamldoc/odoc_info.spot
+    27430 ocamldoc/odoc_inherit.cmt
+     1572 ocamldoc/odoc_inherit.spot
+   671408 ocamldoc/odoc_latex.cmt
+   498421 ocamldoc/odoc_latex.spot
+    29993 ocamldoc/odoc_latex_style.cmt
+    27376 ocamldoc/odoc_latex_style.spot
+   130170 ocamldoc/odoc_lexer.cmt
+   117209 ocamldoc/odoc_lexer.spot
+   608151 ocamldoc/odoc_man.cmt
+   512926 ocamldoc/odoc_man.spot
+   290837 ocamldoc/odoc_merge.cmt
+    32558 ocamldoc/odoc_merge.cmti
+     2542 ocamldoc/odoc_merge.spit
+   272467 ocamldoc/odoc_merge.spot
+   219467 ocamldoc/odoc_messages.cmt
+   190685 ocamldoc/odoc_messages.spot
+   213207 ocamldoc/odoc_misc.cmt
+    47199 ocamldoc/odoc_misc.cmti
+     6124 ocamldoc/odoc_misc.spit
+   201802 ocamldoc/odoc_misc.spot
+   196534 ocamldoc/odoc_module.cmt
+   161987 ocamldoc/odoc_module.spot
+    93119 ocamldoc/odoc_name.cmt
+    37058 ocamldoc/odoc_name.cmti
+     3643 ocamldoc/odoc_name.spit
+    86758 ocamldoc/odoc_name.spot
+   231829 ocamldoc/odoc_ocamlhtml.cmt
+   197727 ocamldoc/odoc_ocamlhtml.spot
+    57446 ocamldoc/odoc_parameter.cmt
+    50463 ocamldoc/odoc_parameter.spot
+   131127 ocamldoc/odoc_parser.cmt
+    32451 ocamldoc/odoc_parser.cmti
+     3304 ocamldoc/odoc_parser.spit
+   117271 ocamldoc/odoc_parser.spot
+    74033 ocamldoc/odoc_print.cmt
+    30955 ocamldoc/odoc_print.cmti
+     2089 ocamldoc/odoc_print.spit
+    69481 ocamldoc/odoc_print.spot
+   103578 ocamldoc/odoc_scan.cmt
+    76202 ocamldoc/odoc_scan.spot
+   418931 ocamldoc/odoc_search.cmt
+    92513 ocamldoc/odoc_search.cmti
+    24364 ocamldoc/odoc_search.spit
+   391162 ocamldoc/odoc_search.spot
+    62517 ocamldoc/odoc_see_lexer.cmt
+    56167 ocamldoc/odoc_see_lexer.spot
+   570854 ocamldoc/odoc_sig.cmt
+    57040 ocamldoc/odoc_sig.cmti
+    11433 ocamldoc/odoc_sig.spit
+   528695 ocamldoc/odoc_sig.spot
+   135148 ocamldoc/odoc_str.cmt
+    35677 ocamldoc/odoc_str.cmti
+     3164 ocamldoc/odoc_str.spit
+   129040 ocamldoc/odoc_str.spot
+   140035 ocamldoc/odoc_test.cmt
+   121433 ocamldoc/odoc_test.spot
+   657775 ocamldoc/odoc_texi.cmt
+   492375 ocamldoc/odoc_texi.spot
+    90193 ocamldoc/odoc_text.cmt
+    29737 ocamldoc/odoc_text.cmti
+     2165 ocamldoc/odoc_text.spit
+    86202 ocamldoc/odoc_text.spot
+   216036 ocamldoc/odoc_text_lexer.cmt
+   192612 ocamldoc/odoc_text_lexer.spot
+   160979 ocamldoc/odoc_text_parser.cmt
+    35156 ocamldoc/odoc_text_parser.cmti
+     4599 ocamldoc/odoc_text_parser.spit
+   141319 ocamldoc/odoc_text_parser.spot
+   319865 ocamldoc/odoc_to_text.cmt
+   255383 ocamldoc/odoc_to_text.spot
+    41307 ocamldoc/odoc_type.cmt
+     5377 ocamldoc/odoc_type.spot
+    51484 ocamldoc/odoc_types.cmt
+    53407 ocamldoc/odoc_types.cmti
+     8314 ocamldoc/odoc_types.spit
+    44863 ocamldoc/odoc_types.spot
+    63954 ocamldoc/odoc_value.cmt
+    53607 ocamldoc/odoc_value.spot
+   160781 otherlibs/bigarray/bigarray.cmt
+   158370 otherlibs/bigarray/bigarray.cmti
+    34210 otherlibs/bigarray/bigarray.spit
+   133376 otherlibs/bigarray/bigarray.spot
+   119102 otherlibs/dynlink/dynlink.cmt
+    42978 otherlibs/dynlink/dynlink.cmti
+     4691 otherlibs/dynlink/dynlink.spit
+   200499 otherlibs/dynlink/dynlinkaux.cmt
+     4153 otherlibs/dynlink/dynlinkaux.spot
+    40633 otherlibs/dynlink/extract_crc.cmt
+    37637 otherlibs/dynlink/extract_crc.spot
+   138422 otherlibs/graph/graphics.cmt
+    79879 otherlibs/graph/graphics.cmti
+    12323 otherlibs/graph/graphics.spit
+   126421 otherlibs/graph/graphics.spot
+    35282 otherlibs/graph/graphicsX11.cmt
+    30048 otherlibs/graph/graphicsX11.cmti
+     1823 otherlibs/graph/graphicsX11.spit
+    32857 otherlibs/graph/graphicsX11.spot
+    30604 otherlibs/labltk/browser/dummy.cmti
+     2517 otherlibs/labltk/browser/dummy.spit
+   610787 otherlibs/labltk/browser/editor.cmt
+    34251 otherlibs/labltk/browser/editor.cmti
+     1742 otherlibs/labltk/browser/editor.spit
+   508087 otherlibs/labltk/browser/editor.spot
+   327098 otherlibs/labltk/browser/fileselect.cmt
+    30659 otherlibs/labltk/browser/fileselect.cmti
+     2023 otherlibs/labltk/browser/fileselect.spit
+   286271 otherlibs/labltk/browser/fileselect.spot
+    33130 otherlibs/labltk/browser/help.cmt
+    27244 otherlibs/labltk/browser/help.spot
+   144833 otherlibs/labltk/browser/jg_bind.cmt
+    35171 otherlibs/labltk/browser/jg_bind.cmti
+     1970 otherlibs/labltk/browser/jg_bind.spit
+   142221 otherlibs/labltk/browser/jg_bind.spot
+   179743 otherlibs/labltk/browser/jg_box.cmt
+   164528 otherlibs/labltk/browser/jg_box.spot
+   148869 otherlibs/labltk/browser/jg_button.cmt
+   142951 otherlibs/labltk/browser/jg_button.spot
+    50809 otherlibs/labltk/browser/jg_completion.cmt
+    33593 otherlibs/labltk/browser/jg_completion.cmti
+     2119 otherlibs/labltk/browser/jg_completion.spit
+    45072 otherlibs/labltk/browser/jg_completion.spot
+    54924 otherlibs/labltk/browser/jg_config.cmt
+    28120 otherlibs/labltk/browser/jg_config.cmti
+     1607 otherlibs/labltk/browser/jg_config.spit
+    52571 otherlibs/labltk/browser/jg_config.spot
+   147327 otherlibs/labltk/browser/jg_entry.cmt
+   142031 otherlibs/labltk/browser/jg_entry.spot
+    33469 otherlibs/labltk/browser/jg_memo.cmt
+    28417 otherlibs/labltk/browser/jg_memo.cmti
+     1536 otherlibs/labltk/browser/jg_memo.spit
+    32258 otherlibs/labltk/browser/jg_memo.spot
+   170724 otherlibs/labltk/browser/jg_menu.cmt
+   157101 otherlibs/labltk/browser/jg_menu.spot
+   220933 otherlibs/labltk/browser/jg_message.cmt
+    37630 otherlibs/labltk/browser/jg_message.cmti
+     2491 otherlibs/labltk/browser/jg_message.spit
+   197497 otherlibs/labltk/browser/jg_message.spot
+   242160 otherlibs/labltk/browser/jg_multibox.cmt
+    42844 otherlibs/labltk/browser/jg_multibox.cmti
+     3086 otherlibs/labltk/browser/jg_multibox.spit
+   226429 otherlibs/labltk/browser/jg_multibox.spot
+   244755 otherlibs/labltk/browser/jg_text.cmt
+    38971 otherlibs/labltk/browser/jg_text.cmti
+     2962 otherlibs/labltk/browser/jg_text.spit
+   210981 otherlibs/labltk/browser/jg_text.spot
+   145138 otherlibs/labltk/browser/jg_tk.cmt
+   142057 otherlibs/labltk/browser/jg_tk.spot
+   145191 otherlibs/labltk/browser/jg_toplevel.cmt
+   140814 otherlibs/labltk/browser/jg_toplevel.spot
+   197733 otherlibs/labltk/browser/lexical.cmt
+    35304 otherlibs/labltk/browser/lexical.cmti
+     1912 otherlibs/labltk/browser/lexical.spit
+   190075 otherlibs/labltk/browser/lexical.spot
+    48611 otherlibs/labltk/browser/list2.cmt
+    47604 otherlibs/labltk/browser/list2.spot
+   297332 otherlibs/labltk/browser/main.cmt
+   257888 otherlibs/labltk/browser/main.spot
+    38140 otherlibs/labltk/browser/mytypes.cmti
+     2688 otherlibs/labltk/browser/mytypes.spit
+   452274 otherlibs/labltk/browser/searchid.cmt
+    36131 otherlibs/labltk/browser/searchid.cmti
+     3685 otherlibs/labltk/browser/searchid.spit
+   436898 otherlibs/labltk/browser/searchid.spot
+   736589 otherlibs/labltk/browser/searchpos.cmt
+    58405 otherlibs/labltk/browser/searchpos.cmti
+     8308 otherlibs/labltk/browser/searchpos.spit
+   675722 otherlibs/labltk/browser/searchpos.spot
+   256306 otherlibs/labltk/browser/setpath.cmt
+    35220 otherlibs/labltk/browser/setpath.cmti
+     2045 otherlibs/labltk/browser/setpath.spit
+   227613 otherlibs/labltk/browser/setpath.spot
+   405689 otherlibs/labltk/browser/shell.cmt
+    41697 otherlibs/labltk/browser/shell.cmti
+     2934 otherlibs/labltk/browser/shell.spit
+   368545 otherlibs/labltk/browser/shell.spot
+   297130 otherlibs/labltk/browser/typecheck.cmt
+    36972 otherlibs/labltk/browser/typecheck.cmti
+     1903 otherlibs/labltk/browser/typecheck.spit
+   281773 otherlibs/labltk/browser/typecheck.spot
+   112445 otherlibs/labltk/browser/useunix.cmt
+    30451 otherlibs/labltk/browser/useunix.cmti
+     2239 otherlibs/labltk/browser/useunix.spit
+   110924 otherlibs/labltk/browser/useunix.spot
+   712673 otherlibs/labltk/browser/viewer.cmt
+    37761 otherlibs/labltk/browser/viewer.cmti
+     2360 otherlibs/labltk/browser/viewer.spit
+   590638 otherlibs/labltk/browser/viewer.spot
+   151534 otherlibs/labltk/camltk/cBell.cmt
+   144404 otherlibs/labltk/camltk/cBell.cmti
+     1807 otherlibs/labltk/camltk/cBell.spit
+   146400 otherlibs/labltk/camltk/cBell.spot
+   163849 otherlibs/labltk/camltk/cButton.cmt
+   147530 otherlibs/labltk/camltk/cButton.cmti
+     2456 otherlibs/labltk/camltk/cButton.spit
+   158110 otherlibs/labltk/camltk/cButton.spot
+   356260 otherlibs/labltk/camltk/cCanvas.cmt
+   195789 otherlibs/labltk/camltk/cCanvas.cmti
+    14739 otherlibs/labltk/camltk/cCanvas.spit
+   339455 otherlibs/labltk/camltk/cCanvas.spot
+   167526 otherlibs/labltk/camltk/cCheckbutton.cmt
+   148987 otherlibs/labltk/camltk/cCheckbutton.cmti
+     2793 otherlibs/labltk/camltk/cCheckbutton.spit
+   161488 otherlibs/labltk/camltk/cCheckbutton.spot
+   154675 otherlibs/labltk/camltk/cClipboard.cmt
+   144886 otherlibs/labltk/camltk/cClipboard.cmti
+     1927 otherlibs/labltk/camltk/cClipboard.spit
+   149144 otherlibs/labltk/camltk/cClipboard.spot
+   161775 otherlibs/labltk/camltk/cDialog.cmt
+   146145 otherlibs/labltk/camltk/cDialog.cmti
+     2215 otherlibs/labltk/camltk/cDialog.spit
+   156238 otherlibs/labltk/camltk/cDialog.spot
+   157126 otherlibs/labltk/camltk/cEncoding.cmt
+   145951 otherlibs/labltk/camltk/cEncoding.cmti
+     2195 otherlibs/labltk/camltk/cEncoding.spit
+   151884 otherlibs/labltk/camltk/cEncoding.spot
+   213303 otherlibs/labltk/camltk/cEntry.cmt
+   158615 otherlibs/labltk/camltk/cEntry.cmti
+     5198 otherlibs/labltk/camltk/cEntry.spit
+   205107 otherlibs/labltk/camltk/cEntry.spot
+   160907 otherlibs/labltk/camltk/cFocus.cmt
+   147321 otherlibs/labltk/camltk/cFocus.cmti
+     2410 otherlibs/labltk/camltk/cFocus.spit
+   155249 otherlibs/labltk/camltk/cFocus.spot
+   200798 otherlibs/labltk/camltk/cFont.cmt
+   154487 otherlibs/labltk/camltk/cFont.cmti
+     4280 otherlibs/labltk/camltk/cFont.spit
+   192160 otherlibs/labltk/camltk/cFont.spot
+   161441 otherlibs/labltk/camltk/cFrame.cmt
+   146595 otherlibs/labltk/camltk/cFrame.cmti
+     2252 otherlibs/labltk/camltk/cFrame.spit
+   155875 otherlibs/labltk/camltk/cFrame.spot
+   160252 otherlibs/labltk/camltk/cGrab.cmt
+   146662 otherlibs/labltk/camltk/cGrab.cmti
+     2334 otherlibs/labltk/camltk/cGrab.spit
+   154488 otherlibs/labltk/camltk/cGrab.spot
+   221796 otherlibs/labltk/camltk/cGrid.cmt
+   155184 otherlibs/labltk/camltk/cGrid.cmti
+     4719 otherlibs/labltk/camltk/cGrid.spit
+   214077 otherlibs/labltk/camltk/cGrid.spot
+   152869 otherlibs/labltk/camltk/cImage.cmt
+   143828 otherlibs/labltk/camltk/cImage.cmti
+     1710 otherlibs/labltk/camltk/cImage.spit
+   147813 otherlibs/labltk/camltk/cImage.spot
+   163736 otherlibs/labltk/camltk/cImagebitmap.cmt
+   147278 otherlibs/labltk/camltk/cImagebitmap.cmti
+     2525 otherlibs/labltk/camltk/cImagebitmap.spit
+   157914 otherlibs/labltk/camltk/cImagebitmap.spot
+   186786 otherlibs/labltk/camltk/cImagephoto.cmt
+   152261 otherlibs/labltk/camltk/cImagephoto.cmti
+     3866 otherlibs/labltk/camltk/cImagephoto.spit
+   179806 otherlibs/labltk/camltk/cImagephoto.spot
+   161441 otherlibs/labltk/camltk/cLabel.cmt
+   146595 otherlibs/labltk/camltk/cLabel.cmti
+     2252 otherlibs/labltk/camltk/cLabel.spit
+   155853 otherlibs/labltk/camltk/cLabel.spot
+   226438 otherlibs/labltk/camltk/cListbox.cmt
+   162398 otherlibs/labltk/camltk/cListbox.cmti
+     6046 otherlibs/labltk/camltk/cListbox.spit