Files
llvm-project/llvm/docs/CommandGuide/index.rst
Yingwei Zheng a29f0dd096 [llubi] Add initial support for llubi (#180022)
This patch implements the initial support for upstreaming
[llubi](https://github.com/dtcxzyw/llvm-ub-aware-interpreter). It only
provides the minimal functionality to run a simple main function. I hope
we can focus on the interface design in this PR, rather than trivial
implementations for each instruction.
RFC link:
https://discourse.llvm.org/t/rfc-upstreaming-llvm-ub-aware-interpreter/89645

Excluding the driver `llubi.cpp`, this patch contains three components
for better decoupling:
+ `Value.h/cpp`: Value representation
+ `Context.h/cpp`: Global state management (e.g., memory) and
interpreter configuration
+ `Interpreter.cpp`: The main interpreter loop

Compared to the out-of-tree version, the major differences are listed
below:
+ The interpreter logic always returns the control to its caller, i.e.,
it never calls `exit/abort` when immediate UBs are triggered.
+ `EventHandler` provides an interface to dump the trace. It also allows
callers to inspect the actual value and verify the correctness of
analysis passes (e.g, KnownBits/SCEV).
+ The context is designed to be reentrant. That is, you can call
`runFunction` multiple times. But its usefulness remains in doubt due to
side effects made by previous calls.
+ `runFunction` handles function calls with a loop, instead of calling
itself recursively. This makes it no longer bounded by the stack depth.
+ Uninitialized memory is planned to be approximated by returning random
values each time an uninitialized byte is loaded.
2026-02-10 01:54:34 +08:00

105 lines
1.6 KiB
ReStructuredText

LLVM Command Guide
------------------
The following documents are command descriptions for all of the LLVM tools.
These pages describe how to use the LLVM commands and what their options are.
Note that these pages do not describe all of the options available for all
tools. To get a complete listing, pass the ``--help`` (general options) or
``--help-hidden`` (general and debugging options) arguments to the tool you are
interested in.
Basic Commands
~~~~~~~~~~~~~~
.. toctree::
:maxdepth: 1
dsymutil
llc
lli
llubi
llvm-as
llvm-cgdata
llvm-config
llvm-cov
llvm-cxxmap
llvm-debuginfo-analyzer
llvm-diff
llvm-dis
llvm-dwarfdump
llvm-dwarfutil
llvm-ir2vec
llvm-lib
llvm-libtool-darwin
llvm-link
llvm-lipo
llvm-mc
llvm-mca
llvm-opt-report
llvm-otool
llvm-profdata
llvm-readobj
llvm-reduce
llvm-stress
llvm-symbolizer
opt
GNU binutils replacements
~~~~~~~~~~~~~~~~~~~~~~~~~
.. toctree::
:maxdepth: 1
llvm-addr2line
llvm-ar
llvm-cxxfilt
llvm-install-name-tool
llvm-nm
llvm-objcopy
llvm-objdump
llvm-ranlib
llvm-readelf
llvm-size
llvm-strings
llvm-strip
Debugging Tools
~~~~~~~~~~~~~~~
.. toctree::
:maxdepth: 1
bugpoint
llvm-extract
llvm-bcanalyzer
Developer Tools
~~~~~~~~~~~~~~~
.. toctree::
:maxdepth: 1
FileCheck
tblgen
clang-tblgen
lldb-tblgen
llvm-tblgen
mlir-tblgen
lit
llvm-exegesis
llvm-ifs
llvm-locstats
llvm-test-mustache-spec
llvm-pdbutil
llvm-profgen
llvm-tli-checker
llvm-offload-binary
Remarks Tools
~~~~~~~~~~~~~~
.. toctree::
:maxdepth: 1
llvm-remarkutil