← Prev | Next → |
The following are some suggestions regarding ways things could go wrong while trying to run the CSI compiler, and some additional information about command-line options.
A standard compilation of csi-cc should provide, in addition to the source file being compiled and any other required compilation options for that file:
It’s fine to symlink to the csi-cc file, but you shouldn’t copy it out. You can move the entire CSI directory as required, but the relative path between the Release directory and the Tools directory (and all files inside them) must be the same, or things won’t work.
If you get an error like
Error opening '/.../csi/Release/libCSI.so': libLLVM-3.X.so:
cannot open shared object file: No such file or directory
this means that the LLVM version you built with (see
building notes on LLVM_CONFIG)
does not match the one in your PATH.
The full list of CSI-specific options is as follows
USAGE: csi-cc [options] <inputs> COMMON OPTIONS: --trace=<file> Use <file> as the input file for the tracing schemes. If this option is not given, the scheme is read from stdin. -csi-opt=<arg> Use <arg> as the optimization level for CSI instrumentation passes. Legal values are <0,1,2,3>. (Default: 2) -opt-style=<arg> Use <arg> as the style for CSI optimization level 2 or 3. Legal values for level 2: <simple,local,local-prepass> (Default for level 2: local-prepass) Legal values for level 3: <gams,lemon> (Default for level 3: gams, if installed) --silent Do not print pass-specific warnings during instrumentation --help Display this help message and exit --help-clang Display additional options (clang's help message) and exit OPTIONS FOR DEVELOPMENT OF CSI: -debug-pass=<arg> Enable printing of extremely verbose debug messages for the pass specified as <arg>. This should generally not be used unless debugging instrumentors. <arg> can be any of the supported instrumentors or 'all' (which enables debugging for all passes). Legal values are <all,prep,bbc,cc,fc,pt,coverage-optimization>. This option is only available if LLVM is built with assertions enabled. -verify-results Enables additional verification of computed results during instrumentation. For example, this ensures that all coverage sets are verified during optimization. This is an expensive operation. -no-filter Do not filter tracing schemes. All schemes provided will be used verbatim for functions to which they match. -no-heuristics Do not use heuristics to improve coverage optimization performance. Presently, this has little-to-no impact on performance in most cases, but should generally only be used for debugging instrumentors. -log-stats Logs various statistics about coverage optimization sets to stdout. Presently, this is used for research experiments. LESS COMMON OPTIONS: --indirect-style=<arg> Use the provided style for creating indirect functions, which enables custimization of instrumentation. Current styles are {std, ifunc}. (Default: std) -path-array-size <arg> Use <arg> as the size of path tracing arrays (Default: 10) -hash-size <arg> Use <arg> as the maximum-size function (in number of acyclic paths) to instrument for path tracing (Default: ULONG_MAX/2+1) -complete-exe Optimize coverage instrumentation further such that accurate coverage information is only guaranteed for complete function executions. This can potentially improve instrumentation efficiency, but may lose information; thus, it should not be used in normal circumstances. ENVIRONMENT VARIABLES: PT_ARRAY_SIZE See -path-array-size (above). Flags have precedence. PT_HASH_SIZE See -hash-size (above). Flags have precedence. CSI_SILENT Enables or disables the printing of instrumentation warnings. See --silent (above). Flags have precedence.
← Prev | Next → |