mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
7ec130df24
During reviewing D102277 it was decided to remove lazy options processing from llvm-objcopy CopyConfig structure. This patch transforms processing of ELF lazy options into the in-place processing. Differential Revision: https://reviews.llvm.org/D103260
81 lines
3.1 KiB
C++
81 lines
3.1 KiB
C++
//===- 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 <vector>
|
|
|
|
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<const ELFConfig &> getELFConfig() const override;
|
|
Expected<const COFFConfig &> getCOFFConfig() const override;
|
|
Expected<const MachOConfig &> getMachOConfig() const override;
|
|
Expected<const WasmConfig &> 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<ConfigManager, 1> 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<DriverConfig>
|
|
parseObjcopyOptions(ArrayRef<const char *> ArgsArr,
|
|
llvm::function_ref<Error(Error)> 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<DriverConfig>
|
|
parseInstallNameToolOptions(ArrayRef<const char *> 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<DriverConfig> parseBitcodeStripOptions(ArrayRef<const char *> 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<DriverConfig>
|
|
parseStripOptions(ArrayRef<const char *> ArgsArr,
|
|
llvm::function_ref<Error(Error)> ErrorCallback);
|
|
} // namespace objcopy
|
|
} // namespace llvm
|
|
|
|
#endif // LLVM_TOOLS_LLVM_OBJCOPY_CONFIGMANAGER_H
|