SLEdge static analyzer

  sledge SUBCOMMAND

The [-trace <spec>] argument of each subcommand enables debug tracing according to <spec>, which is a sequence of module and function names separated by + or -. For example, M-M.f enables all tracing in the M module except the M.f function. The <spec> value * enables all debug tracing.

=== subcommands ===

  buck         integration with Buck
  . analyze    analyze buck target
  . bitcode    report bitcode files in buck target
  . link       link buck target to LLVM bitcode
  llvm         integration with LLVM
  . analyze    analyze LLVM bitcode
  . translate  translate LLVM bitcode to LLAIR
  analyze      analyze LLAIR code
  disassemble  print LLAIR code in textual form
  version      print version information
  help         explain a given subcommand (perhaps recursively)


====== sledge buck ======

integration with Buck

  sledge buck SUBCOMMAND

Code can be provided by a buck build target, such as //fully/qualified/build:target. The mechanism used to integrate with buck uses the arguments passed to the linker, so the target must specify a binary that will be linked, not for instance a library archive. Sledge passes the --config sledge.build=True flag to buck, which can be used to configure buck targets for sledge.

=== subcommands ===

  analyze  analyze buck target
  bitcode  report bitcode files in buck target
  link     link buck target to LLVM bitcode
  help     explain a given subcommand (perhaps recursively)


====== sledge buck analyze ======

analyze buck target

  sledge buck analyze <target>

Analyze code in a buck target. This is a convenience wrapper for the sequence `sledge buck bitcode`; `sledge llvm translate`; `sledge analyze`.

=== flags ===

  [-bound <int>]          stop execution exploration at depth <int>
  [-colors]               enable printing in colors
  [-domain <string>]      select abstract domain; must be one of "sh" (default,
                          symbolic heap domain), "globals" (used-globals
                          domain), or "unit" (unit domain)
  [-exceptions]           explore executions that throw and handle exceptions
  [-function-summaries]   use function summaries (in development)
  [-fuzzer]               add a harness for libFuzzer targets
  [-llair-output <file>]  write generated LLAIR to <file>
  [-margin <cols>]        wrap debug tracing at <cols> columns
  [-modules <file>]       write list of bitcode files to <file>, or to standard
                          output if <file> is `-`
  [-no-internalize]       do not internalize all functions except the entry
                          points specified in the config file
  [-no-models]            do not add models for C/C++ runtime and standard
                          libraries
  [-preanalyze-globals]   pre-analyze global variables used by each function
  [-trace <spec>]         enable debug tracing
  [-help]                 print this help text and exit
                          (alias: -?)


====== sledge buck bitcode ======

report bitcode files in buck target

  sledge buck bitcode <target>

Build a buck target and report the included bitcode files.

=== flags ===

  [-colors]          enable printing in colors
  [-margin <cols>]   wrap debug tracing at <cols> columns
  [-modules <file>]  write list of bitcode files to <file>, or to standard
                     output if <file> is `-`
  [-trace <spec>]    enable debug tracing
  [-help]            print this help text and exit
                     (alias: -?)


====== sledge buck link ======

link buck target to LLVM bitcode

  sledge buck link <target>

Link code in a buck target to a single LLVM bitcode module. This also internalizes all symbols except `main` and removes dead code.

=== flags ===

  -bitcode-output <file>  write linked bitcode to <file>
  [-colors]               enable printing in colors
  [-fuzzer]               add a harness for libFuzzer targets
  [-margin <cols>]        wrap debug tracing at <cols> columns
  [-modules <file>]       write list of bitcode files to <file>, or to standard
                          output if <file> is `-`
  [-trace <spec>]         enable debug tracing
  [-help]                 print this help text and exit
                          (alias: -?)


====== sledge llvm ======

integration with LLVM

  sledge llvm SUBCOMMAND

Code can be provided by one or more LLVM bitcode files.

=== subcommands ===

  analyze    analyze LLVM bitcode
  translate  translate LLVM bitcode to LLAIR
  help       explain a given subcommand (perhaps recursively)


====== sledge llvm analyze ======

analyze LLVM bitcode

  sledge llvm analyze <input> [<input> ...]

Analyze code in one or more LLVM bitcode files. This is a convenience wrapper for the sequence `sledge llvm translate`; `sledge analyze`.

=== flags ===

  [-bound <int>]          stop execution exploration at depth <int>
  [-colors]               enable printing in colors
  [-domain <string>]      select abstract domain; must be one of "sh" (default,
                          symbolic heap domain), "globals" (used-globals
                          domain), or "unit" (unit domain)
  [-exceptions]           explore executions that throw and handle exceptions
  [-function-summaries]   use function summaries (in development)
  [-fuzzer]               add a harness for libFuzzer targets
  [-llair-output <file>]  write generated LLAIR to <file>
  [-margin <cols>]        wrap debug tracing at <cols> columns
  [-no-internalize]       do not internalize all functions except the entry
                          points specified in the config file
  [-no-models]            do not add models for C/C++ runtime and standard
                          libraries
  [-preanalyze-globals]   pre-analyze global variables used by each function
  [-trace <spec>]         enable debug tracing
  [-help]                 print this help text and exit
                          (alias: -?)


====== sledge llvm translate ======

translate LLVM bitcode to LLAIR

  sledge llvm translate <input> [<input> ...]

Translate one or more LLVM bitcode files to LLAIR. Each <input> filename may be either: an LLVM bitcode file, in binary (.bc) or textual (.ll) form; or of the form @<argsfile>, where <argsfile> names a file containing one <input> per line.

=== flags ===

  [-colors]               enable printing in colors
  [-fuzzer]               add a harness for libFuzzer targets
  [-llair-output <file>]  write generated LLAIR to <file>
  [-margin <cols>]        wrap debug tracing at <cols> columns
  [-no-internalize]       do not internalize all functions except the entry
                          points specified in the config file
  [-no-models]            do not add models for C/C++ runtime and standard
                          libraries
  [-trace <spec>]         enable debug tracing
  [-help]                 print this help text and exit
                          (alias: -?)


====== sledge analyze ======

analyze LLAIR code

  sledge analyze <input>

The <input> file must be binary LLAIR, such as produced by `sledge translate`.

=== flags ===

  [-bound <int>]         stop execution exploration at depth <int>
  [-colors]              enable printing in colors
  [-domain <string>]     select abstract domain; must be one of "sh" (default,
                         symbolic heap domain), "globals" (used-globals domain),
                         or "unit" (unit domain)
  [-exceptions]          explore executions that throw and handle exceptions
  [-function-summaries]  use function summaries (in development)
  [-margin <cols>]       wrap debug tracing at <cols> columns
  [-preanalyze-globals]  pre-analyze global variables used by each function
  [-trace <spec>]        enable debug tracing
  [-help]                print this help text and exit
                         (alias: -?)


====== sledge disassemble ======

print LLAIR code in textual form

  sledge disassemble <input>

The <input> file must be LLAIR code, as produced by `sledge llvm translate`.

=== flags ===

  [-colors]                   enable printing in colors
  [-llair-txt-output <file>]  write generated textual LLAIR to <file>, or to
                              standard output if omitted
  [-margin <cols>]            wrap debug tracing at <cols> columns
  [-trace <spec>]             enable debug tracing
  [-help]                     print this help text and exit
                              (alias: -?)


====== sledge version ======

print version information

  sledge version 

=== flags ===

  [-build-info]  print build info for this build
  [-version]     print the version of this build
  [-help]        print this help text and exit
                 (alias: -?)


====== sledge help ======

explain a given subcommand (perhaps recursively)

  sledge help [SUBCOMMAND]

=== flags ===

  [-expand-dots]  expand subcommands in recursive help
  [-flags]        show flags as well in recursive help
  [-recursive]    show subcommands of subcommands, etc.
  [-help]         print this help text and exit
                  (alias: -?)