//===- ConfigManager.h ----------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVM_OBJCOPY_CONFIGMANAGER_H #define LLVM_TOOLS_LLVM_OBJCOPY_CONFIGMANAGER_H #include "COFF/COFFConfig.h" #include "CommonConfig.h" #include "ELF/ELFConfig.h" #include "MachO/MachOConfig.h" #include "MultiFormatConfig.h" #include "wasm/WasmConfig.h" #include "llvm/Support/Allocator.h" #include namespace llvm { namespace objcopy { // ConfigManager keeps all configurations and prepare // format-specific options. struct ConfigManager : public MultiFormatConfig { virtual ~ConfigManager() {} const CommonConfig &getCommonConfig() const override { return Common; } Expected getELFConfig() const override; Expected getCOFFConfig() const override; Expected getMachOConfig() const override; Expected getWasmConfig() const override; // All configs. CommonConfig Common; ELFConfig ELF; COFFConfig COFF; MachOConfig MachO; WasmConfig Wasm; }; // Configuration for the overall invocation of this tool. When invoked as // objcopy, will always contain exactly one CopyConfig. When invoked as strip, // will contain one or more CopyConfigs. struct DriverConfig { SmallVector CopyConfigs; BumpPtrAllocator Alloc; }; // ParseObjcopyOptions returns the config and sets the input arguments. If a // help flag is set then ParseObjcopyOptions will print the help messege and // exit. ErrorCallback is used to handle recoverable errors. An Error returned // by the callback aborts the parsing and is then returned by this function. Expected parseObjcopyOptions(ArrayRef ArgsArr, llvm::function_ref ErrorCallback); // ParseInstallNameToolOptions returns the config and sets the input arguments. // If a help flag is set then ParseInstallNameToolOptions will print the help // messege and exit. Expected parseInstallNameToolOptions(ArrayRef ArgsArr); // ParseBitcodeStripOptions returns the config and sets the input arguments. // If a help flag is set then ParseBitcodeStripOptions will print the help // messege and exit. Expected parseBitcodeStripOptions(ArrayRef ArgsArr); // ParseStripOptions returns the config and sets the input arguments. If a // help flag is set then ParseStripOptions will print the help messege and // exit. ErrorCallback is used to handle recoverable errors. An Error returned // by the callback aborts the parsing and is then returned by this function. Expected parseStripOptions(ArrayRef ArgsArr, llvm::function_ref ErrorCallback); } // namespace objcopy } // namespace llvm #endif // LLVM_TOOLS_LLVM_OBJCOPY_CONFIGMANAGER_H