A binary instrumented with Bisect, when run, produces coverage statistics for each of its source files. The runtime and reporter both index the statistics by source file name.
A string written at the beginning of each bisect*.coverage files. Provides a sanity check for the reporter that it is reading a bisect*.coverage file, and the file format version.
Initialization
Sourceval register_file :
filename:string ->points:int list->[ `Visit of int -> unit ]
Each source file is instrumented to call Bisect.Runtime.register_file at run time, during program initialization. Bisect.Runtime.register_file eventually forwards to this function, Biesct_common.register_file. This function allocates the visit count array, with one array cell for each point, and registers the array for later writing to bisect*.coverage files.
~filename is the name of the source file.
~points is the list of byte offsets of the instrumentation points placed in the source file.
The return value is the function that is called by each instrumentation point to increment its own visit count. The instrumentation point passes its own index to the function.
None is returned if there are no source files registered. This can occur when the runtime gets linked into a binary, but no files had been instrumented, because instrumentation was turned off. This combination normally shouldn't happen, but it can occur depending on the quality of the integration between the build system and Bisect.