diff options
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-objcopy/CopyConfig.cpp | 22 | ||||
| -rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOpts.td | 21 |
2 files changed, 38 insertions, 5 deletions
diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 3a0e01caf22..a2a58f20fe9 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -226,9 +226,9 @@ static const MachineInfo &getOutputFormatMachineInfo(StringRef Format) { return Iter->getValue(); } -static void addGlobalSymbolsFromFile(std::vector<NameOrRegex> &Symbols, - BumpPtrAllocator &Alloc, - StringRef Filename, bool UseRegex) { +static void addSymbolsFromFile(std::vector<NameOrRegex> &Symbols, + BumpPtrAllocator &Alloc, StringRef Filename, + bool UseRegex) { StringSaver Saver(Alloc); SmallVector<StringRef, 16> Lines; auto BufOrErr = MemoryBuffer::getFile(Filename); @@ -445,17 +445,29 @@ DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) { InputArgs.hasArg(OBJCOPY_decompress_debug_sections); for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbol)) Config.SymbolsToLocalize.emplace_back(Arg->getValue(), UseRegex); + for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbols)) + addSymbolsFromFile(Config.SymbolsToLocalize, DC.Alloc, Arg->getValue(), + UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_keep_global_symbol)) Config.SymbolsToKeepGlobal.emplace_back(Arg->getValue(), UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_keep_global_symbols)) - addGlobalSymbolsFromFile(Config.SymbolsToKeepGlobal, DC.Alloc, - Arg->getValue(), UseRegex); + addSymbolsFromFile(Config.SymbolsToKeepGlobal, DC.Alloc, Arg->getValue(), + UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_globalize_symbol)) Config.SymbolsToGlobalize.emplace_back(Arg->getValue(), UseRegex); + for (auto Arg : InputArgs.filtered(OBJCOPY_globalize_symbols)) + addSymbolsFromFile(Config.SymbolsToGlobalize, DC.Alloc, Arg->getValue(), + UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_weaken_symbol)) Config.SymbolsToWeaken.emplace_back(Arg->getValue(), UseRegex); + for (auto Arg : InputArgs.filtered(OBJCOPY_weaken_symbols)) + addSymbolsFromFile(Config.SymbolsToWeaken, DC.Alloc, Arg->getValue(), + UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_strip_symbol)) Config.SymbolsToRemove.emplace_back(Arg->getValue(), UseRegex); + for (auto Arg : InputArgs.filtered(OBJCOPY_strip_symbols)) + addSymbolsFromFile(Config.SymbolsToRemove, DC.Alloc, Arg->getValue(), + UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_keep_symbol)) Config.SymbolsToKeep.emplace_back(Arg->getValue(), UseRegex); diff --git a/llvm/tools/llvm-objcopy/ObjcopyOpts.td b/llvm/tools/llvm-objcopy/ObjcopyOpts.td index ccfc5420360..12d619ef8b4 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOpts.td +++ b/llvm/tools/llvm-objcopy/ObjcopyOpts.td @@ -134,10 +134,21 @@ def localize_hidden "Mark all symbols that have hidden or internal visibility as local">; defm localize_symbol : Eq<"localize-symbol", "Mark <symbol> as local">, MetaVarName<"symbol">; +defm localize_symbols + : Eq<"localize-symbols", + "Reads a list of symbols from <filename> and marks them local.">, + MetaVarName<"filename">; + def L : JoinedOrSeparate<["-"], "L">, Alias<localize_symbol>; defm globalize_symbol : Eq<"globalize-symbol", "Mark <symbol> as global">, MetaVarName<"symbol">; + +defm globalize_symbols + : Eq<"globalize-symbols", + "Reads a list of symbols from <filename> and marks them global.">, + MetaVarName<"filename">; + defm keep_global_symbol : Eq<"keep-global-symbol", "Convert all symbols except <symbol> to local. May be repeated to " @@ -156,6 +167,11 @@ defm keep_global_symbols defm weaken_symbol : Eq<"weaken-symbol", "Mark <symbol> as weak">, MetaVarName<"symbol">; +defm weaken_symbols + : Eq<"weaken-symbols", + "Reads a list of symbols from <filename> and marks them weak.">, + MetaVarName<"filename">; + def W : JoinedOrSeparate<["-"], "W">, Alias<weaken_symbol>; def weaken : Flag<["-", "--"], "weaken">, HelpText<"Mark all global symbols as weak">; @@ -171,6 +187,11 @@ def discard_all def x : Flag<["-"], "x">, Alias<discard_all>; defm strip_symbol : Eq<"strip-symbol", "Remove symbol <symbol>">, MetaVarName<"symbol">; +defm strip_symbols + : Eq<"strip-symbols", + "Reads a list of symbols from <filename> and removes them.">, + MetaVarName<"filename">; + def N : JoinedOrSeparate<["-"], "N">, Alias<strip_symbol>; defm keep_symbol : Eq<"keep-symbol", "Do not remove symbol <symbol>">, MetaVarName<"symbol">; |

