1 //===- ObjcopyOptions.h ---------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_TOOLS_LLVM_OBJCOPY_OBJCOPYOPTIONS_H
10 #define LLVM_TOOLS_LLVM_OBJCOPY_OBJCOPYOPTIONS_H
11 
12 #include "llvm/ObjCopy/ConfigManager.h"
13 #include "llvm/Support/Allocator.h"
14 
15 namespace llvm {
16 namespace objcopy {
17 
18 // Configuration for the overall invocation of this tool. When invoked as
19 // objcopy, will always contain exactly one CopyConfig. When invoked as strip,
20 // will contain one or more CopyConfigs.
21 struct DriverConfig {
22   SmallVector<ConfigManager, 1> CopyConfigs;
23   BumpPtrAllocator Alloc;
24 };
25 
26 // ParseObjcopyOptions returns the config and sets the input arguments. If a
27 // help flag is set then ParseObjcopyOptions will print the help messege and
28 // exit. ErrorCallback is used to handle recoverable errors. An Error returned
29 // by the callback aborts the parsing and is then returned by this function.
30 Expected<DriverConfig>
31 parseObjcopyOptions(ArrayRef<const char *> ArgsArr,
32                     llvm::function_ref<Error(Error)> ErrorCallback);
33 
34 // ParseInstallNameToolOptions returns the config and sets the input arguments.
35 // If a help flag is set then ParseInstallNameToolOptions will print the help
36 // messege and exit.
37 Expected<DriverConfig>
38 parseInstallNameToolOptions(ArrayRef<const char *> ArgsArr);
39 
40 // ParseBitcodeStripOptions returns the config and sets the input arguments.
41 // If a help flag is set then ParseBitcodeStripOptions will print the help
42 // messege and exit.
43 Expected<DriverConfig>
44 parseBitcodeStripOptions(ArrayRef<const char *> ArgsArr,
45                          llvm::function_ref<Error(Error)> ErrorCallback);
46 
47 // ParseStripOptions returns the config and sets the input arguments. If a
48 // help flag is set then ParseStripOptions will print the help messege and
49 // exit. ErrorCallback is used to handle recoverable errors. An Error returned
50 // by the callback aborts the parsing and is then returned by this function.
51 Expected<DriverConfig>
52 parseStripOptions(ArrayRef<const char *> ArgsArr,
53                   llvm::function_ref<Error(Error)> ErrorCallback);
54 } // namespace objcopy
55 } // namespace llvm
56 
57 #endif // LLVM_TOOLS_LLVM_OBJCOPY_OBJCOPYOPTIONS_H
58