diff options
author | Chris Bieneman <chris.bieneman@me.com> | 2022-06-06 04:25:55 +0000 |
---|---|---|
committer | Alex Brachet <abrachet@google.com> | 2022-06-06 04:27:32 +0000 |
commit | f06abbb393800b0d466c88e283c06f75561c432c (patch) | |
tree | 4ff07e40ad34b1a4564c80f7868d73cc478b7c2b /llvm/tools/llvm-objcopy/llvm-objcopy.cpp | |
parent | c2d27c89593e92f8e557f27ec02f083760eeab2d (diff) | |
download | llvm-f06abbb393800b0d466c88e283c06f75561c432c.zip llvm-f06abbb393800b0d466c88e283c06f75561c432c.tar.gz llvm-f06abbb393800b0d466c88e283c06f75561c432c.tar.bz2 |
LLVM Driver Multicall tool
This patch adds an llvm-driver multicall tool that can combine multiple
LLVM-based tools. The build infrastructure is enabled for a tool by
adding the GENERATE_DRIVER option to the add_llvm_executable CMake
call, and changing the tool's main function to a canonicalized
tool_name_main format (i.e. llvm_ar_main, clang_main, etc...).
As currently implemented llvm-driver contains dsymutil, llvm-ar,
llvm-cxxfilt, llvm-objcopy, and clang (if clang is included in the
build).
llvm-driver can be enabled from builds by setting
LLVM_TOOL_LLVM_DRIVER_BUILD=On.
There are several limitations in the current implementation, which can
be addressed in subsequent patches:
(1) the multicall binary cannot currently properly handle
multi-dispatch tools. This means symlinking llvm-ranlib to llvm-driver
will not properly result in llvm-ar's main being called.
(2) the multicall binary cannot be comprised of tools containing
conflicting cl::opt options as the global cl::opt option list cannot
contain duplicates.
These limitations can be addressed in subsequent patches.
Differential revision: https://reviews.llvm.org/D109977
Diffstat (limited to 'llvm/tools/llvm-objcopy/llvm-objcopy.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/llvm-objcopy.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp index 117a63c..aa26215 100644 --- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp +++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp @@ -223,7 +223,7 @@ static Error executeObjcopy(ConfigManager &ConfigMgr) { return Error::success(); } -int main(int argc, char **argv) { +int llvm_objcopy_main(int argc, char **argv) { InitLLVM X(argc, argv); ToolName = argv[0]; |