llubi - LLVM UB-aware Interpreter
=================================

.. program:: llubi

SYNOPSIS
--------

:program:`llubi` [*options*] [*filename*] [*program args*]

DESCRIPTION
-----------

:program:`llubi` directly executes programs in LLVM bitcode format and tracks values in LLVM IR semantics.
Unlike :program:`lli`, :program:`llubi` is designed to be aware of undefined behaviors during execution.
It detects immediate undefined behaviors such as integer division by zero, and respects poison generating flags
like `nsw` and `nuw`. As it captures most of the guardable undefined behaviors, it is highly suitable for
constructing an interesting-ness test for miscompilation bugs.

If `filename` is not specified, then :program:`llubi` reads the LLVM bitcode for the
program from standard input.

The optional *args* specified on the command line are passed to the program as
arguments.

GENERAL OPTIONS
---------------

.. option:: -fake-argv0=executable

 Override the ``argv[0]`` value passed into the executing program.

.. option:: -entry-function=function

 Specify the name of the function to execute as the program's entry point.
 By default, :program:`llubi` uses the function named ``main``.

.. option:: -help

 Print a summary of command line options.

.. option:: -verbose

 Print results for each instruction executed.

.. option:: -version

 Print out the version of :program:`llubi` and exit without doing anything else.

INTERPRETER OPTIONS
-------------------

.. option:: -max-mem=N

  Limit the amount of memory (in bytes) that can be allocated by the program, including
  stack, heap, and global variables. If the limit is exceeded, execution will be terminated.
  By default, there is no limit (N = 0).

.. option:: -max-stack-depth=N

  Limit the maximum stack depth to N. If the limit is exceeded, execution will be terminated.
  The default limit is 256. Set N to 0 to disable the limit.

.. option:: -max-steps=N

  Limit the number of instructions executed to N. If the limit is reached, execution will
  be terminated. By default, there is no limit (N = 0).

.. option:: -vscale=N

  Set the value of `llvm.vscale` to N. The default value is 4.

.. option:: -seed=N

  Set the seed for random number generator to N. By default, the seed is 0.

.. option:: -undef-behavior=mode

  Set the behavior for undefined values (e.g., load from uninitialized memory or freeze a poison value).
  The options for `mode` are:

  * `nondet`: Each load from the same uninitialized byte yields a freshly random value. This is the default behavior.
  * `zero`: Uninitialized values are treated as zero.

EXIT STATUS
-----------

If :program:`llubi` fails to load the program, or an error occurs during execution (e.g, an immediate undefined
behavior is triggered), it will exit with an exit code of 1.
If the return type of entry function is not an integer type, it will return 0.
Otherwise, it will return the exit code of the program.
