Lines Matching +full:trim +full:- +full:config

1 //===- ObjcopyOptions.cpp -------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
45 std::size(NAME##_init) - 1);
77 std::size(NAME##_init) - 1);
108 std::size(NAME##_init) - 1);
137 std::size(NAME##_init) - 1);
197 "bad format for --rename-section: missing '='"); in parseRenameSectionValue()
242 "bad format for --set-section-flags: missing '='"); in parseSetSectionFlagValue()
286 {"elf32-i386", {ELF::EM_386, false, true}},
287 {"elf32-x86-64", {ELF::EM_X86_64, false, true}},
288 {"elf64-x86-64", {ELF::EM_X86_64, true, true}},
290 {"elf32-iamcu", {ELF::EM_IAMCU, false, true}},
292 {"elf32-littlearm", {ELF::EM_ARM, false, true}},
294 {"elf64-aarch64", {ELF::EM_AARCH64, true, true}},
295 {"elf64-littleaarch64", {ELF::EM_AARCH64, true, true}},
296 // RISC-V
297 {"elf32-littleriscv", {ELF::EM_RISCV, false, true}},
298 {"elf64-littleriscv", {ELF::EM_RISCV, true, true}},
300 {"elf32-powerpc", {ELF::EM_PPC, false, false}},
301 {"elf32-powerpcle", {ELF::EM_PPC, false, true}},
302 {"elf64-powerpc", {ELF::EM_PPC64, true, false}},
303 {"elf64-powerpcle", {ELF::EM_PPC64, true, true}},
305 {"elf32-bigmips", {ELF::EM_MIPS, false, false}},
306 {"elf32-ntradbigmips", {ELF::EM_MIPS, false, false}},
307 {"elf32-ntradlittlemips", {ELF::EM_MIPS, false, true}},
308 {"elf32-tradbigmips", {ELF::EM_MIPS, false, false}},
309 {"elf32-tradlittlemips", {ELF::EM_MIPS, false, true}},
310 {"elf64-tradbigmips", {ELF::EM_MIPS, true, false}},
311 {"elf64-tradlittlemips", {ELF::EM_MIPS, true, true}},
313 {"elf32-sparc", {ELF::EM_SPARC, false, false}},
314 {"elf32-sparcel", {ELF::EM_SPARC, false, true}},
316 {"elf32-hexagon", {ELF::EM_HEXAGON, false, true}},
318 {"elf32-loongarch", {ELF::EM_LOONGARCH, false, true}},
319 {"elf64-loongarch", {ELF::EM_LOONGARCH, true, true}},
321 {"elf64-s390", {ELF::EM_S390, true, false}},
327 bool IsFreeBSD = TargetName.consume_back("-freebsd"); in getOutputTargetInfoByTargetName()
333 MachineInfo MI = Iter->getValue(); in getOutputTargetInfoByTargetName()
357 BufOrErr.get()->getBuffer().split(Lines, '\n'); in addSymbolsFromFile()
359 // Ignore everything after '#', trim whitespace, and only add the symbol if in addSymbolsFromFile()
361 auto TrimmedLine = Line.split('#').first.trim(); in addSymbolsFromFile()
380 BufOrErr.get()->getBuffer().split(Lines, '\n'); in addSymbolsToRenameFromFile()
383 StringRef TrimmedLine = Lines[LineNo].split('#').first.trim(); in addSymbolsToRenameFromFile()
388 StringRef NewName = Pair.second.trim(); in addSymbolsToRenameFromFile()
416 ToolName = "llvm-objcopy"; in printHelp()
420 ToolName = "llvm-strip"; in printHelp()
424 ToolName = "llvm-install-name-tool"; in printHelp()
428 ToolName = "llvm-bitcode-strip"; in printHelp()
441 // Parse value given with --add-symbol option and create the in parseNewSymbolInfo()
442 // new symbol if possible. The value format for --add-symbol is: in parseNewSymbolInfo()
447 // <name> - symbol name, can be empty string in parseNewSymbolInfo()
448 // <section> - optional section name. If not given ABS symbol is created in parseNewSymbolInfo()
449 // <value> - symbol value, can be decimal or hexadecimal number prefixed in parseNewSymbolInfo()
451 // <flags> - optional flags affecting symbol type, binding or visibility. in parseNewSymbolInfo()
458 "bad format for --add-symbol, missing '=' after '%s'", in parseNewSymbolInfo()
466 "bad format for --add-symbol, missing section name or symbol value"); in parseNewSymbolInfo()
498 "indirect-function", in parseNewSymbolInfo()
509 .CaseLower("unique-object", in parseNewSymbolInfo()
522 "unsupported flag%s for --add-symbol: '%s'", in parseNewSymbolInfo()
560 } else if (ArgValue.starts_with("*-")) { in parseChangeSectionLMA()
566 "supported. Use *+val or *-val instead"); in parseChangeSectionLMA()
567 } else if (ArgValue.contains("+") || ArgValue.contains("-")) { in parseChangeSectionLMA()
571 "supported. Use *+val or *-val instead"); in parseChangeSectionLMA()
587 // parseObjcopyOptions returns the config and sets the input arguments. If a
597 llvm::find_if(RawArgsArr, [](StringRef Str) { return Str == "--"; }); in parseObjcopyOptions()
623 outs() << "llvm-objcopy, compatible with GNU objcopy\n"; in parseObjcopyOptions()
632 Arg->getAsString(InputArgs).c_str()); in parseObjcopyOptions()
635 Positional.push_back(Arg->getValue()); in parseObjcopyOptions()
646 CommonConfig &Config = ConfigMgr.Common; in parseObjcopyOptions() local
650 Config.InputFilename = Positional[0]; in parseObjcopyOptions()
651 Config.OutputFilename = Positional[Positional.size() == 1 ? 0 : 1]; in parseObjcopyOptions()
657 "--target cannot be used with --input-target or --output-target"); in parseObjcopyOptions()
661 "--regex and --wildcard are incompatible"); in parseObjcopyOptions()
679 // FIXME: Currently, we ignore the target for non-binary/ihex formats in parseObjcopyOptions()
680 // explicitly specified by -I option (e.g. -Ielf32-x86-64) and guess the in parseObjcopyOptions()
682 Config.InputFormat = StringSwitch<FileFormat>(InputFormat) in parseObjcopyOptions()
707 std::tie(Subsystem, Version) = StringRef(Arg->getValue()).split(':'); in parseObjcopyOptions()
713 .Cases("efi_application", "efi-app", in parseObjcopyOptions()
715 .Cases("efi_boot_service_driver", "efi-bsd", in parseObjcopyOptions()
718 .Cases("efi_runtime_driver", "efi-rtd", in parseObjcopyOptions()
746 Config.OutputFormat = StringSwitch<FileFormat>(OutputFormat) in parseObjcopyOptions()
751 if (Config.OutputFormat == FileFormat::Unspecified) { in parseObjcopyOptions()
753 Config.OutputFormat = Config.InputFormat; in parseObjcopyOptions()
759 Config.OutputFormat = Target->Format; in parseObjcopyOptions()
760 Config.OutputArch = Target->Machine; in parseObjcopyOptions()
765 Config.CompressionType = StringSwitch<DebugCompressionType>(A->getValue()) in parseObjcopyOptions()
769 if (Config.CompressionType == DebugCompressionType::None) { in parseObjcopyOptions()
772 "invalid or unsupported --compress-debug-sections format: %s", in parseObjcopyOptions()
773 A->getValue()); in parseObjcopyOptions()
776 compression::formatFor(Config.CompressionType))) in parseObjcopyOptions()
782 StringRef(A->getValue()).split(Fields, '='); in parseObjcopyOptions()
786 A->getSpelling() + in parseObjcopyOptions()
787 ": parse error, not 'section-glob=[none|zlib|zstd]'"); in parseObjcopyOptions()
797 "invalid or unsupported --compress-sections format: %s", in parseObjcopyOptions()
798 A->getValue()); in parseObjcopyOptions()
801 auto &P = Config.compressSections.emplace_back(); in parseObjcopyOptions()
807 if (Matcher && !Matcher->isPositiveMatch()) { in parseObjcopyOptions()
810 "--compress-sections: negative pattern is unsupported"); in parseObjcopyOptions()
816 Config.AddGnuDebugLink = InputArgs.getLastArgValue(OBJCOPY_add_gnu_debuglink); in parseObjcopyOptions()
821 if (!Config.AddGnuDebugLink.empty()) { in parseObjcopyOptions()
822 auto DebugOrErr = MemoryBuffer::getFile(Config.AddGnuDebugLink); in parseObjcopyOptions()
824 return createFileError(Config.AddGnuDebugLink, DebugOrErr.getError()); in parseObjcopyOptions()
826 Config.GnuDebugLinkCRC32 = in parseObjcopyOptions()
827 llvm::crc32(arrayRefFromStringRef(Debug->getBuffer())); in parseObjcopyOptions()
829 Config.SplitDWO = InputArgs.getLastArgValue(OBJCOPY_split_dwo); in parseObjcopyOptions()
831 Config.SymbolsPrefix = InputArgs.getLastArgValue(OBJCOPY_prefix_symbols); in parseObjcopyOptions()
832 Config.SymbolsPrefixRemove = in parseObjcopyOptions()
835 Config.AllocSectionsPrefix = in parseObjcopyOptions()
838 Config.ExtractPartition = Arg->getValue(); in parseObjcopyOptions()
841 if (Config.OutputFormat != FileFormat::Binary) in parseObjcopyOptions()
844 "'--gap-fill' is only supported for binary output"); in parseObjcopyOptions()
845 ErrorOr<uint64_t> Val = getAsInteger<uint64_t>(A->getValue()); in parseObjcopyOptions()
847 return createStringError(Val.getError(), "--gap-fill: bad number: %s", in parseObjcopyOptions()
848 A->getValue()); in parseObjcopyOptions()
852 "gap-fill value %s is out of range (0 to 0xff)", in parseObjcopyOptions()
853 A->getValue()); in parseObjcopyOptions()
854 Config.GapFill = ByteVal; in parseObjcopyOptions()
858 if (Config.OutputFormat != FileFormat::Binary) in parseObjcopyOptions()
861 "'--pad-to' is only supported for binary output"); in parseObjcopyOptions()
862 ErrorOr<uint64_t> Addr = getAsInteger<uint64_t>(A->getValue()); in parseObjcopyOptions()
864 return createStringError(Addr.getError(), "--pad-to: bad number: %s", in parseObjcopyOptions()
865 A->getValue()); in parseObjcopyOptions()
866 Config.PadTo = *Addr; in parseObjcopyOptions()
871 parseChangeSectionLMA(Arg->getValue(), Arg->getSpelling()); in parseObjcopyOptions()
874 Config.ChangeSectionLMAValAll = *LMAValue; in parseObjcopyOptions()
878 if (!StringRef(Arg->getValue()).contains('=')) in parseObjcopyOptions()
880 "bad format for --redefine-sym"); in parseObjcopyOptions()
881 auto Old2New = StringRef(Arg->getValue()).split('='); in parseObjcopyOptions()
882 if (!Config.SymbolsToRename.insert(Old2New).second) in parseObjcopyOptions()
889 if (Error E = addSymbolsToRenameFromFile(Config.SymbolsToRename, DC.Alloc, in parseObjcopyOptions()
890 Arg->getValue())) in parseObjcopyOptions()
895 parseRenameSectionValue(StringRef(Arg->getValue())); in parseObjcopyOptions()
898 if (!Config.SectionsToRename.try_emplace(SR->OriginalName, *SR).second) in parseObjcopyOptions()
901 SR->OriginalName.str().c_str()); in parseObjcopyOptions()
905 parseSetSectionAttribute("--set-section-alignment", Arg->getValue()); in parseObjcopyOptions()
908 Config.SetSectionAlignment[NameAndAlign->first] = NameAndAlign->second; in parseObjcopyOptions()
912 parseSetSectionFlagValue(Arg->getValue()); in parseObjcopyOptions()
915 if (!Config.SetSectionFlags.try_emplace(SFU->Name, *SFU).second) in parseObjcopyOptions()
918 "--set-section-flags set multiple times for section '%s'", in parseObjcopyOptions()
919 SFU->Name.str().c_str()); in parseObjcopyOptions()
923 parseSetSectionAttribute("--set-section-type", Arg->getValue()); in parseObjcopyOptions()
926 Config.SetSectionType[NameAndType->first] = NameAndType->second; in parseObjcopyOptions()
928 // Prohibit combinations of --set-section-{flags,type} when the section name in parseObjcopyOptions()
929 // is used as the destination of a --rename-section. in parseObjcopyOptions()
930 for (const auto &E : Config.SectionsToRename) { in parseObjcopyOptions()
935 "--set-section-%s=%s conflicts with --rename-section=%s=%s", Option, in parseObjcopyOptions()
939 if (Config.SetSectionFlags.count(SR.NewName)) in parseObjcopyOptions()
941 if (Config.SetSectionType.count(SR.NewName)) in parseObjcopyOptions()
946 if (Error E = Config.ToRemove.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
947 Arg->getValue(), SectionMatchStyle, ErrorCallback))) in parseObjcopyOptions()
950 if (Error E = Config.KeepSection.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
951 Arg->getValue(), SectionMatchStyle, ErrorCallback))) in parseObjcopyOptions()
954 if (Error E = Config.OnlySection.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
955 Arg->getValue(), SectionMatchStyle, ErrorCallback))) in parseObjcopyOptions()
958 if (Error Err = loadNewSectionData(Arg->getValue(), "--add-section", in parseObjcopyOptions()
959 Config.AddSection)) in parseObjcopyOptions()
963 if (Error Err = loadNewSectionData(Arg->getValue(), "--update-section", in parseObjcopyOptions()
964 Config.UpdateSection)) in parseObjcopyOptions()
968 StringRef Value(Arg->getValue()); in parseObjcopyOptions()
972 "bad format for --dump-section, expected section=file"); in parseObjcopyOptions()
973 Config.DumpSection.push_back(Value); in parseObjcopyOptions()
975 Config.StripAll = InputArgs.hasArg(OBJCOPY_strip_all); in parseObjcopyOptions()
976 Config.StripAllGNU = InputArgs.hasArg(OBJCOPY_strip_all_gnu); in parseObjcopyOptions()
977 Config.StripDebug = InputArgs.hasArg(OBJCOPY_strip_debug); in parseObjcopyOptions()
978 Config.StripDWO = InputArgs.hasArg(OBJCOPY_strip_dwo); in parseObjcopyOptions()
979 Config.StripSections = InputArgs.hasArg(OBJCOPY_strip_sections); in parseObjcopyOptions()
980 Config.StripNonAlloc = InputArgs.hasArg(OBJCOPY_strip_non_alloc); in parseObjcopyOptions()
981 Config.StripUnneeded = InputArgs.hasArg(OBJCOPY_strip_unneeded); in parseObjcopyOptions()
982 Config.ExtractDWO = InputArgs.hasArg(OBJCOPY_extract_dwo); in parseObjcopyOptions()
983 Config.ExtractMainPartition = in parseObjcopyOptions()
986 Config.Weaken = InputArgs.hasArg(OBJCOPY_weaken); in parseObjcopyOptions()
989 Config.DiscardMode = Arg->getOption().matches(OBJCOPY_discard_all) in parseObjcopyOptions()
997 Config.OnlyKeepDebug = InputArgs.hasArg(OBJCOPY_only_keep_debug); in parseObjcopyOptions()
1000 Config.DecompressDebugSections = in parseObjcopyOptions()
1002 if (Config.DiscardMode == DiscardType::All) { in parseObjcopyOptions()
1003 Config.StripDebug = true; in parseObjcopyOptions()
1007 if (Error E = Config.SymbolsToLocalize.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1008 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1011 if (Error E = addSymbolsFromFile(Config.SymbolsToLocalize, DC.Alloc, in parseObjcopyOptions()
1012 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1016 if (Error E = Config.SymbolsToKeepGlobal.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1017 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1020 if (Error E = addSymbolsFromFile(Config.SymbolsToKeepGlobal, DC.Alloc, in parseObjcopyOptions()
1021 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1025 if (Error E = Config.SymbolsToGlobalize.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1026 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1029 if (Error E = addSymbolsFromFile(Config.SymbolsToGlobalize, DC.Alloc, in parseObjcopyOptions()
1030 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1034 if (Error E = Config.SymbolsToWeaken.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1035 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1038 if (Error E = addSymbolsFromFile(Config.SymbolsToWeaken, DC.Alloc, in parseObjcopyOptions()
1039 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1043 if (Error E = Config.SymbolsToRemove.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1044 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1047 if (Error E = addSymbolsFromFile(Config.SymbolsToRemove, DC.Alloc, in parseObjcopyOptions()
1048 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1053 Config.UnneededSymbolsToRemove.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1054 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1057 if (Error E = addSymbolsFromFile(Config.UnneededSymbolsToRemove, DC.Alloc, in parseObjcopyOptions()
1058 Arg->getValue(), SymbolMatchStyle, in parseObjcopyOptions()
1062 if (Error E = Config.SymbolsToKeep.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1063 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1067 addSymbolsFromFile(Config.SymbolsToKeep, DC.Alloc, Arg->getValue(), in parseObjcopyOptions()
1071 if (Error E = Config.SymbolsToSkip.addMatcher(NameOrPattern::create( in parseObjcopyOptions()
1072 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseObjcopyOptions()
1076 addSymbolsFromFile(Config.SymbolsToSkip, DC.Alloc, Arg->getValue(), in parseObjcopyOptions()
1080 Expected<NewSymbolInfo> SymInfo = parseNewSymbolInfo(Arg->getValue()); in parseObjcopyOptions()
1084 Config.SymbolsToAdd.push_back(*SymInfo); in parseObjcopyOptions()
1087 if (!StringRef(Arg->getValue()).contains('=')) in parseObjcopyOptions()
1089 "bad format for --set-symbol-visibility"); in parseObjcopyOptions()
1090 auto [Sym, Visibility] = StringRef(Arg->getValue()).split('='); in parseObjcopyOptions()
1100 if (!StringRef(Arg->getValue()).contains('=')) in parseObjcopyOptions()
1102 "bad format for --set-symbols-visibility"); in parseObjcopyOptions()
1103 auto [File, Visibility] = StringRef(Arg->getValue()).split('='); in parseObjcopyOptions()
1116 Config.DeterministicArchives = InputArgs.hasFlag( in parseObjcopyOptions()
1120 Config.PreserveDates = InputArgs.hasArg(OBJCOPY_preserve_dates); in parseObjcopyOptions()
1122 if (Config.PreserveDates && in parseObjcopyOptions()
1123 (Config.OutputFilename == "-" || Config.InputFilename == "-")) in parseObjcopyOptions()
1125 "--preserve-dates requires a file"); in parseObjcopyOptions()
1128 if (Arg->getOption().matches(OBJCOPY_set_start)) { in parseObjcopyOptions()
1129 auto EAddr = getAsInteger<uint64_t>(Arg->getValue()); in parseObjcopyOptions()
1132 EAddr.getError(), "bad entry point address: '%s'", Arg->getValue()); in parseObjcopyOptions()
1135 } else if (Arg->getOption().matches(OBJCOPY_change_start)) { in parseObjcopyOptions()
1136 auto EIncr = getAsInteger<int64_t>(Arg->getValue()); in parseObjcopyOptions()
1140 Arg->getValue()); in parseObjcopyOptions()
1148 if (Config.DecompressDebugSections && in parseObjcopyOptions()
1149 Config.CompressionType != DebugCompressionType::None) { in parseObjcopyOptions()
1152 "cannot specify both --compress-debug-sections and " in parseObjcopyOptions()
1153 "--decompress-debug-sections"); in parseObjcopyOptions()
1156 if (Config.ExtractPartition && Config.ExtractMainPartition) in parseObjcopyOptions()
1158 "cannot specify --extract-partition together with " in parseObjcopyOptions()
1159 "--extract-main-partition"); in parseObjcopyOptions()
1165 // parseInstallNameToolOptions returns the config and sets the input arguments.
1172 CommonConfig &Config = ConfigMgr.Common; in parseInstallNameToolOptions() local
1197 outs() << "llvm-install-name-tool, compatible with cctools " in parseInstallNameToolOptions()
1204 MachOConfig.RPathToAdd.push_back(Arg->getValue()); in parseInstallNameToolOptions()
1207 MachOConfig.RPathToPrepend.push_back(Arg->getValue()); in parseInstallNameToolOptions()
1210 StringRef RPath = Arg->getValue(); in parseInstallNameToolOptions()
1216 "cannot specify both -add_rpath '%s' and -delete_rpath '%s'", in parseInstallNameToolOptions()
1221 "cannot specify both -prepend_rpath '%s' and -delete_rpath '%s'", in parseInstallNameToolOptions()
1228 StringRef Old = Arg->getValue(0); in parseInstallNameToolOptions()
1229 StringRef New = Arg->getValue(1); in parseInstallNameToolOptions()
1233 // Cannot specify duplicate -rpath entries in parseInstallNameToolOptions()
1241 "cannot specify both -rpath '" + in parseInstallNameToolOptions()
1242 It1->getFirst() + "' '" + It1->getSecond() + in parseInstallNameToolOptions()
1243 "' and -rpath '" + Old + "' '" + New + "'"); in parseInstallNameToolOptions()
1245 // Cannot specify the same rpath under both -delete_rpath and -rpath in parseInstallNameToolOptions()
1249 "cannot specify both -delete_rpath '" + *It2 + in parseInstallNameToolOptions()
1250 "' and -rpath '" + Old + "' '" + New + "'"); in parseInstallNameToolOptions()
1252 // Cannot specify the same rpath under both -add_rpath and -rpath in parseInstallNameToolOptions()
1256 "cannot specify both -add_rpath '" + *It3 + in parseInstallNameToolOptions()
1257 "' and -rpath '" + Old + "' '" + New + "'"); in parseInstallNameToolOptions()
1259 // Cannot specify the same rpath under both -prepend_rpath and -rpath. in parseInstallNameToolOptions()
1263 "cannot specify both -prepend_rpath '" + *It4 + in parseInstallNameToolOptions()
1264 "' and -rpath '" + Old + "' '" + New + "'"); in parseInstallNameToolOptions()
1270 MachOConfig.SharedLibId = Arg->getValue(); in parseInstallNameToolOptions()
1271 if (MachOConfig.SharedLibId->empty()) in parseInstallNameToolOptions()
1278 {Arg->getValue(0), Arg->getValue(1)}); in parseInstallNameToolOptions()
1286 Arg->getAsString(InputArgs).c_str()); in parseInstallNameToolOptions()
1288 Positional.push_back(Arg->getValue()); in parseInstallNameToolOptions()
1294 "llvm-install-name-tool expects a single input file"); in parseInstallNameToolOptions()
1295 Config.InputFilename = Positional[0]; in parseInstallNameToolOptions()
1296 Config.OutputFilename = Positional[0]; in parseInstallNameToolOptions()
1299 createBinary(Config.InputFilename); in parseInstallNameToolOptions()
1301 return createFileError(Config.InputFilename, BinaryOrErr.takeError()); in parseInstallNameToolOptions()
1303 if (!Binary->isMachO() && !Binary->isMachOUniversalBinary()) in parseInstallNameToolOptions()
1305 "input file: %s is not a Mach-O file", in parseInstallNameToolOptions()
1306 Config.InputFilename.str().c_str()); in parseInstallNameToolOptions()
1317 CommonConfig &Config = ConfigMgr.Common; in parseBitcodeStripOptions() local
1335 outs() << "llvm-bitcode-strip, compatible with cctools " in parseBitcodeStripOptions()
1343 Arg->getAsString(InputArgs).c_str()); in parseBitcodeStripOptions()
1347 Positional.push_back(Arg->getValue()); in parseBitcodeStripOptions()
1350 "llvm-bitcode-strip expects a single input file"); in parseBitcodeStripOptions()
1352 Config.InputFilename = Positional[0]; in parseBitcodeStripOptions()
1356 "-o is a required argument"); in parseBitcodeStripOptions()
1358 Config.OutputFilename = InputArgs.getLastArgValue(BITCODE_STRIP_output); in parseBitcodeStripOptions()
1363 // We only support -r for now, which removes all bitcode sections and in parseBitcodeStripOptions()
1365 cantFail(Config.ToRemove.addMatcher(NameOrPattern::create( in parseBitcodeStripOptions()
1367 cantFail(Config.ToRemove.addMatcher(NameOrPattern::create( in parseBitcodeStripOptions()
1369 cantFail(Config.ToRemove.addMatcher(NameOrPattern::create( in parseBitcodeStripOptions()
1371 cantFail(Config.ToRemove.addMatcher(NameOrPattern::create( in parseBitcodeStripOptions()
1373 cantFail(Config.ToRemove.addMatcher(NameOrPattern::create( in parseBitcodeStripOptions()
1381 // parseStripOptions returns the config and sets the input arguments. If a
1388 llvm::find_if(RawArgsArr, [](StringRef Str) { return Str == "--"; }); in parseStripOptions()
1409 outs() << "llvm-strip, compatible with GNU strip\n"; in parseStripOptions()
1417 Arg->getAsString(InputArgs).c_str()); in parseStripOptions()
1419 Positional.push_back(Arg->getValue()); in parseStripOptions()
1428 "multiple input files cannot be used in combination with -o"); in parseStripOptions()
1431 CommonConfig &Config = ConfigMgr.Common; in parseStripOptions() local
1437 "--regex and --wildcard are incompatible"); in parseStripOptions()
1445 Config.StripDebug = InputArgs.hasArg(STRIP_strip_debug); in parseStripOptions()
1448 Config.DiscardMode = Arg->getOption().matches(STRIP_discard_all) in parseStripOptions()
1451 Config.StripSections = InputArgs.hasArg(STRIP_strip_sections); in parseStripOptions()
1452 Config.StripUnneeded = InputArgs.hasArg(STRIP_strip_unneeded); in parseStripOptions()
1454 Config.StripAll = Arg->getOption().getID() == STRIP_strip_all; in parseStripOptions()
1455 Config.StripAllGNU = InputArgs.hasArg(STRIP_strip_all_gnu); in parseStripOptions()
1457 Config.OnlyKeepDebug = InputArgs.hasArg(STRIP_only_keep_debug); in parseStripOptions()
1462 if (Error E = Config.KeepSection.addMatcher(NameOrPattern::create( in parseStripOptions()
1463 Arg->getValue(), SectionMatchStyle, ErrorCallback))) in parseStripOptions()
1467 if (Error E = Config.ToRemove.addMatcher(NameOrPattern::create( in parseStripOptions()
1468 Arg->getValue(), SectionMatchStyle, ErrorCallback))) in parseStripOptions()
1472 if (Error E = Config.SymbolsToRemove.addMatcher(NameOrPattern::create( in parseStripOptions()
1473 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseStripOptions()
1477 if (Error E = Config.SymbolsToKeep.addMatcher(NameOrPattern::create( in parseStripOptions()
1478 Arg->getValue(), SymbolMatchStyle, ErrorCallback))) in parseStripOptions()
1481 if (!InputArgs.hasArg(STRIP_no_strip_all) && !Config.StripDebug && in parseStripOptions()
1482 !Config.OnlyKeepDebug && !Config.StripUnneeded && in parseStripOptions()
1483 Config.DiscardMode == DiscardType::None && !Config.StripAllGNU && in parseStripOptions()
1484 Config.SymbolsToRemove.empty()) in parseStripOptions()
1485 Config.StripAll = true; in parseStripOptions()
1487 if (Config.DiscardMode == DiscardType::All) { in parseStripOptions()
1488 Config.StripDebug = true; in parseStripOptions()
1492 Config.DeterministicArchives = in parseStripOptions()
1496 Config.PreserveDates = InputArgs.hasArg(STRIP_preserve_dates); in parseStripOptions()
1497 Config.InputFormat = FileFormat::Unspecified; in parseStripOptions()
1498 Config.OutputFormat = FileFormat::Unspecified; in parseStripOptions()
1502 Config.InputFilename = Positional[0]; in parseStripOptions()
1503 Config.OutputFilename = in parseStripOptions()
1510 if (Filename == "-") in parseStripOptions()
1513 "cannot specify '-' as an input file more than once"); in parseStripOptions()
1519 Config.InputFilename = Filename; in parseStripOptions()
1520 Config.OutputFilename = Filename; in parseStripOptions()
1525 if (Config.PreserveDates && (is_contained(Positional, "-") || in parseStripOptions()
1526 InputArgs.getLastArgValue(STRIP_output) == "-")) in parseStripOptions()
1528 "--preserve-dates requires a file"); in parseStripOptions()