Lines Matching +full:slice +full:- +full:per +full:- +full:line
1 //===-- llvm-objdump.cpp - Object file dumping utility for llvm -----------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
16 //===----------------------------------------------------------------------===//
18 #include "llvm-objdump.h"
127 std::size(NAME##_init) - 1);
158 std::size(NAME##_init) - 1);
173 "Mach-O object file displaying tool") {}
278 FunctionAddr = S->second;
282 return &R->second;
365 reportWarning(Msg, this->O.getFileName());
401 // in the --section flag, but we still want those to count toward the section
458 // files where the output is per member object.
509 "' mentioned in a -j/--section option, but not "
515 Triple TheTriple("unknown-unknown-unknown");
517 TheTriple = Obj->makeTriple();
520 auto Arch = Obj->getArch();
522 Obj->setARMSubArch(TheTriple);
530 reportError(Obj->getFileName(), "can't find target: " + Error);
567 unsigned Arch = MachO->getArch();
569 uint64_t Type = MachO->getRelocationType(Rel);
581 RelPrev.d.a--;
582 uint64_t PrevType = MachO->getRelocationType(RelPrev);
602 unsigned Column = OS.tell() - Start;
603 OS.indent(Column < TabStop - 1 ? TabStop - 1 - Column : 7 - Column % 8);
623 return Elf && Elf->getEMachine() == ELF::EM_AARCH64;
628 return Elf && Elf->getEMachine() == ELF::EM_ARM;
633 return Elf && Elf->getEMachine() == ELF::EM_CSKY;
667 FOS << "CO-RE " << Val;
681 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
710 dumpBytes(Bytes.slice(0, 4), OS);
720 SP->printSourceLine(OS, Address, ObjectFilename, LVP, "");
741 std::vector<RelocationRef>::const_iterator RelCur = Rels->begin();
742 std::vector<RelocationRef>::const_iterator RelEnd = Rels->end();
743 auto PrintReloc = [&]() -> void {
744 while ((RelCur != RelEnd) && (RelCur->getOffset() <= Address.Address)) {
745 if (RelCur->getOffset() == Address.Address) {
757 SP->printSourceLine(OS, Address, ObjectFilename, LVP, "");
775 Bytes = Bytes.slice(4);
790 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
800 // an unrecognized encoding - this is probably data so represent it
812 OS.indent(55 - (6 * Bytes.size()));
843 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
866 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
874 if (STI.checkFeatures("+thumb-mode")) {
891 dumpBytes(Bytes.slice(Pos), OS);
920 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
936 dumpBytes(Bytes.slice(Pos), OS);
958 SP->printSourceLine(OS, Address, ObjectFilename, LVP);
967 // 32-bit and 64-bit instructions.
975 // 16-bit and 48-bits instructions.
985 dumpBytes(Bytes.slice(Pos), OS);
1053 RegisterInfo(TheTarget->createMCRegInfo(TripleName)) {
1058 AsmInfo.reset(TheTarget->createMCAsmInfo(*RegisterInfo, TripleName, Options));
1063 TheTarget->createMCSubtargetInfo(TripleName, MCPU, Features.getString()));
1067 InstrInfo.reset(TheTarget->createMCInstrInfo());
1077 TheTarget->createMCObjectFileInfo(*Context, /*PIC=*/false));
1078 Context->setObjectFileInfo(ObjectFileInfo.get());
1080 DisAsm.reset(TheTarget->createMCDisassembler(*SubtargetInfo, *Context));
1085 DisAsm->setABIVersion(ELFObj->getEIdentABIVersion());
1087 InstrAnalysis.reset(TheTarget->createMCInstrAnalysis(InstrInfo.get()));
1089 int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
1090 InstPrinter.reset(TheTarget->createMCInstPrinter(Triple(TripleName),
1096 InstPrinter->setPrintImmHex(PrintImmHex);
1097 InstPrinter->setPrintBranchImmAsAddress(true);
1098 InstPrinter->setSymbolizeOperands(SymbolizeOperands);
1099 InstPrinter->setMCInstrAnalysis(InstrAnalysis.get());
1103 InstPrinter->setUseColor(true);
1106 InstPrinter->setUseColor(outs().has_colors());
1110 InstPrinter->setUseColor(false);
1118 SubtargetInfo(TheTarget->createMCSubtargetInfo(TripleName, MCPU,
1121 DisAsm(TheTarget->createMCDisassembler(*SubtargetInfo, *Context)),
1131 return unwrapOrError(Elf32LEObj->getSymbol(Sym.getRawDataRefImpl()),
1133 ->getType();
1135 return unwrapOrError(Elf64LEObj->getSymbol(Sym.getRawDataRefImpl()),
1137 ->getType();
1139 return unwrapOrError(Elf32BEObj->getSymbol(Sym.getRawDataRefImpl()),
1141 ->getType();
1143 return unwrapOrError(Elf64BEObj->getSymbol(Sym.getRawDataRefImpl()),
1145 ->getType();
1164 ->st_value;
1219 : Section->getAddress();
1250 for (auto Plt : ElfObj->getPltEntries()) {
1255 if (!NameOrErr->empty())
1293 uint64_t I = (uint64_t)-1;
1314 // Used for --adjust-vma to check if address should be adjusted by the
1316 // For ELF we do not adjust non-allocatable sections like debug ones,
1321 if (Obj->isELF())
1338 return (It - 1)->second;
1351 dumpBytes(Bytes.slice(Index, 4), OS);
1359 dumpBytes(Bytes.slice(Index, 2), OS);
1365 dumpBytes(Bytes.slice(Index, 1), OS);
1381 Byte = Bytes.slice(Index)[0];
1387 if (Index == End - 1 || NumBytes > 8) {
1390 IndentOffset = 3 * (8 - NumBytes);
1427 cast<WasmObjectFile>(&Obj)->getWasmSymbol(Symbol).Info.Kind;
1460 FunctionMap->getAddrMap().getBBRangeIndexForBaseAddress(StartAddress);
1466 FunctionMap->getAddrMap().BBRanges[I].BBEntries.size();
1467 const auto &BBRange = FunctionMap->getAddrMap().BBRanges[*BBRangeIndex];
1476 {LabelString, FunctionMap->constructPGOLabelString(
1488 const bool isPPC = STI->getTargetTriple().isPPC();
1489 if (!isPPC && !STI->getTargetTriple().isX86())
1493 MIA->resetState();
1499 const bool isXCOFF = STI->getTargetTriple().isOSBinFormatXCOFF();
1501 // Disassemble a real instruction and record function-local branch labels.
1504 ArrayRef<uint8_t> ThisBytes = Bytes.slice(Index - SectionAddr);
1506 DisAsm->getInstruction(Inst, Size, ThisBytes, Index, nulls());
1509 DisAsm->suggestBytesToSkip(ThisBytes, Index));
1514 bool TargetKnown = MIA->evaluateBranch(Inst, Index, Size, Target);
1524 MIA->updateState(Inst, Index);
1526 MIA->resetState();
1542 Target->createMCRelocationInfo(TripleName, Ctx));
1545 std::unique_ptr<MCSymbolizer> Symbolizer(Target->createMCSymbolizer(
1548 DisAsm->setSymbolizer(std::move(Symbolizer));
1559 ArrayRef<uint8_t> ThisBytes = Bytes.slice(Index);
1561 DisAsm->getInstruction(Inst, Size, ThisBytes, ThisAddr, nulls());
1564 DisAsm->suggestBytesToSkip(ThisBytes, Index));
1567 ArrayRef<uint64_t> LabelAddrsRef = SymbolizerPtr->getReferencedAddresses();
1573 LabelAddrs.resize(llvm::unique(LabelAddrs) - LabelAddrs.begin());
1584 RelInfo.reset(Target->createMCRelocationInfo(TripleName, Ctx));
1585 Symbolizer.reset(Target->createMCSymbolizer(
1587 DisAsm->setSymbolizer(std::move(Symbolizer));
1594 StringRef SegmentName = MachO->getSectionFinalSegmentName(DR);
1607 // Emit a line of comments.
1613 MAI.getCommentColumn() - 8 + getInstStartColumn(STI);
1626 Elf32LEObj->createFakeSections();
1628 Elf64LEObj->createFakeSections();
1630 Elf32BEObj->createFakeSections();
1632 Elf64BEObj->createFakeSections();
1644 std::optional<std::string> Path = BIDFetcher->fetch(BuildID);
1667 PrimaryTarget.SubtargetInfo->checkFeatures("+thumb-mode");
1669 const chpe_metadata *CHPEMetadata = COFFObj->getCHPEMetadata();
1670 if (CHPEMetadata && CHPEMetadata->CodeMapCount) {
1672 cantFail(COFFObj->getRvaPtr(CHPEMetadata->CodeMap, CodeMapInt));
1675 for (uint32_t i = 0; i < CHPEMetadata->CodeMapCount; ++i) {
1679 uint64_t Start = CodeMap[i].getStart() + COFFObj->getImageBase();
1706 if (NameOrErr->empty() && !(Obj.isXCOFF() && SymbolDescription))
1716 // AllMappingSymbols. If --show-all-symbols is unspecified, its label will
1722 uint64_t SectionAddr = SecI->getAddress();
1727 AllMappingSymbols[*SecI].emplace_back(Address - SectionAddr,
1741 if (NameOrErr->starts_with("__mh_") && NameOrErr->ends_with("_header"))
1743 // Don't ask a Mach-O STAB symbol for its section unless you know that
1747 uint8_t NType = (MachO->is64Bit() ?
1748 MachO->getSymbol64TableEntry(SymDRI).n_type:
1749 MachO->getSymbolTableEntry(SymDRI).n_type);
1776 // before same-addressed non-empty sections so that symbol lookups prefer the
1777 // non-empty section.
1790 for (const auto &ExportEntry : COFFObj->export_directories()) {
1801 uint64_t VA = COFFObj->getImageBase() + RVA;
1807 --Sec;
1808 AllSymbols[Sec->second].emplace_back(VA, Name, ELF::STT_NOTYPE);
1823 LiveVariablePrinter LVP(*DT->Context->getRegisterInfo(), *DT->SubtargetInfo);
1827 for (const std::unique_ptr<DWARFUnit> &CU : DICtx->compile_units())
1828 LVP.addCompileUnit(CU->getUnitDIE(false));
1839 auto BBAddrMapsOrErr = Elf->readBBAddrMap(SectionIndex, &PGOAnalyses);
1852 // For non-relocatable objects, Read all LLVM_BB_ADDR_MAP sections into a
1863 if (Error E = BTF->parse(Obj, Opts))
1893 addSymbolizer(*DT->Context, DT->TheTarget, TripleName, DT->DisAsm.get(),
1900 // Without --show-all-symbols, also insert one if all symbols at the start
1950 SymbolsHere = ArrayRef<SymbolInfoTy>(&Symbols[FirstSI], SI - FirstSI);
1984 // So here, we spot whether there's any non-data symbol present at all,
1988 // code-related symbol name to go with it.
1990 size_t DisplaySymIndex = SymbolsHere.size() - 1;
2005 // If the user has given the --disassemble-symbols option, then we must
2022 // Symbols array, because that array is pre-sorted in a way intended to
2031 // That way, '--show-all-symbols --disassemble-symbol=foo' will print
2047 // --stop-address.
2053 Start -= SectionAddr;
2054 End -= SectionAddr;
2092 // See if any of the symbols defined at this location triggers target-
2105 Expected<bool> RespondedOrErr = DT->DisAsm->onSymbolStart(
2106 Symbol, Size, Bytes.slice(Start, End - Start), SectionAddr + Start);
2123 StringRef Line;
2124 std::tie(Line, ErrMsg) = ErrMsg.split('\n');
2125 outs() << DT->Context->getAsmInfo()->getCommentString()
2126 << " error decoding " << SymNamesHere[SHI] << ": " << Line
2131 outs() << DT->Context->getAsmInfo()->getCommentString()
2151 Index = std::max<uint64_t>(Index, StartAddress - SectionAddr);
2161 uint64_t Offset = RelCur->getOffset() - RelAdjustment;
2169 Symbols[SI - 1].XCOFFSymInfo.StorageMappingClass &&
2170 (*Symbols[SI - 1].XCOFFSymInfo.StorageMappingClass == XCOFF::XMC_PR);
2177 collectLocalBranchTargets(Bytes, DT->InstrAnalysis.get(),
2178 DT->DisAsm.get(), DT->InstPrinter.get(),
2185 if (DT->InstrAnalysis)
2186 DT->InstrAnalysis->resetState();
2212 if (It != CHPECodeMap.begin() && Address < (It - 1)->second) {
2227 RelOffset = RelCur->getOffset() - RelAdjustment;
2247 MappingSymbols, *DT->SubtargetInfo, FOS);
2249 // When -z or --disassemble-zeroes are given we always dissasemble
2252 uint64_t MaxOffset = End - Index;
2253 // For --reloc: print zero blocks patched by relocations, so that
2256 MaxOffset = std::min(RelCur->getOffset() - RelAdjustment - Index,
2260 countSkippableZeroBytes(Bytes.slice(Index, MaxOffset))) {
2268 doesXCOFFTracebackTableBegin(Bytes.slice(Index, 4))) {
2269 dumpTracebackTable(Bytes.slice(Index),
2272 *DT->SubtargetInfo, cast<XCOFFObjectFile>(&Obj));
2280 for (const auto &BBLabel : Iter1->second)
2286 FOS << "<" << Iter2->second << ">:\n";
2292 ArrayRef<uint8_t> ThisBytes = Bytes.slice(Index);
2294 bool Disassembled = DT->DisAsm->getInstruction(
2299 DT->DisAsm->suggestBytesToSkip(ThisBytes, ThisAddr));
2304 DT->InstPrinter->setCommentStream(CommentStream);
2306 DT->Printer->printInst(
2307 *DT->InstPrinter, Disassembled ? &Inst : nullptr,
2308 Bytes.slice(Index, Size),
2310 "", *DT->SubtargetInfo, &SP, Obj.getFileName(), &Rels, LVP);
2312 DT->InstPrinter->setCommentStream(llvm::nulls());
2320 if (Disassembled && DT->InstrAnalysis) {
2323 bool PrintTarget = DT->InstrAnalysis->evaluateBranch(
2328 DT->InstrAnalysis->evaluateMemoryOperandAddress(
2329 Inst, DT->SubtargetInfo.get(), SectionAddr + Index,
2347 // In a non-relocatable object, the target may be in any section.
2362 --It;
2364 TargetSecAddr = It->first;
2365 if (It->first != TargetSecAddr)
2367 TargetSectionSymbols.push_back(&AllSymbols[It->second]);
2385 while (It != TargetSymbols->begin()) {
2386 --It;
2389 if (!It->IsMappingSymbol) {
2404 uint64_t TargetAddress = TargetSym->Addr;
2405 uint64_t Disp = Target - TargetAddress;
2406 std::string TargetName = Demangle ? demangle(TargetSym->Name)
2407 : TargetSym->Name.str();
2412 // On XCOFF, we use relocations, even without -r, so we
2422 RelCur->getRawDataRefImpl().p);
2423 RelFixedUp = Reloc->isFixupIndicated();
2424 RelocType = Reloc->Type;
2428 RelCur->getRawDataRefImpl().p);
2429 RelFixedUp = Reloc->isFixupIndicated();
2430 RelocType = Reloc->Type;
2444 // If -r was used, this error will be printed later.
2486 DT->InstrAnalysis->updateState(Inst, SectionAddr + Index);
2487 } else if (!Disassembled && DT->InstrAnalysis) {
2488 DT->InstrAnalysis->resetState();
2492 assert(DT->Context->getAsmInfo());
2493 emitPostInstructionInfo(FOS, *DT->Context->getAsmInfo(),
2494 *DT->SubtargetInfo, CommentStream.str(), LVP);
2503 // When --adjust-vma is used, update the address printed.
2504 if (RelCur->getSymbol() != Obj.symbol_end()) {
2506 RelCur->getSymbol()->getSection();
2533 if (Obj->symbols().empty()) {
2536 if (auto *O = dyn_cast<ObjectFile>(FetchedBinaryOpt->getBinary())) {
2537 if (!O->symbols().empty() ||
2538 (!O->sections().empty() && Obj->sections().empty())) {
2549 Expected<SubtargetFeatures> FeaturesValue = Obj->getFeatures();
2551 reportError(FeaturesValue.takeError(), Obj->getFileName());
2556 } else if (MCPU.empty() && Obj->getArch() == llvm::Triple::aarch64) {
2561 MCPU = Obj->tryGetCPUName().value_or("").str();
2564 // When disassembling big-endian Arm ELF, the instruction endianness is
2568 // flag, in which case instructions are little-endian regardless of data
2571 // We must set the big-endian-instructions SubtargetFeature to make the
2577 if (Elf32BE && (Elf32BE->isRelocatableObject() ||
2578 !(Elf32BE->getPlatformFlags() & ELF::EF_ARM_BE8))) {
2579 Features.AddFeature("+big-endian-instructions");
2595 if (!PrimaryTarget.SubtargetInfo->checkFeatures("+mclass")) {
2596 if (PrimaryTarget.SubtargetInfo->checkFeatures("+thumb-mode"))
2597 Features.AddFeature("-thumb-mode");
2599 Features.AddFeature("+thumb-mode");
2603 const chpe_metadata *CHPEMetadata = COFFObj->getCHPEMetadata();
2604 if (CHPEMetadata && CHPEMetadata->CodeMapCount) {
2617 reportWarning(Error, Obj->getFileName());
2623 if (!FetchedBinary.getBinary() && !Obj->hasDebugInfo()) {
2627 dyn_cast<const ObjectFile>(DebugBinaryOpt->getBinary())) {
2628 if (FetchedObj->hasDebugInfo()) {
2638 if (!DbgObj->hasDebugInfo()) {
2640 DbgObj = objdump::getMachODSymObject(MachOOF, Obj->getFileName(),
2647 SourcePrinter SP(DbgObj, TheTarget->getName());
2650 if (!PrimaryTarget.InstPrinter->applyTargetSpecificCLOption(Opt))
2651 reportError(Obj->getFileName(),
2721 // whose VMA and LMA are different and/or when --show-lma flag is used.
2775 outs() << format("%3" PRIu64 " %-*s %08" PRIx64 " ", Idx, NameWidth,
2781 outs() << format("%3" PRIu64 " %-*s %08" PRIx64 " ", Idx, NameWidth,
2791 StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName());
2809 StringRef Contents = unwrapOrError(Section.getContents(), Obj->getFileName());
2814 // Dump line of hex.
2863 auto Symbols = ELF->getDynamicSymbolIterators();
2865 ELF->readDynsymVersions();
2897 // Don't ask a Mach-O STAB symbol for its section unless you know that
2904 (MachO->is64Bit() ? MachO->getSymbol64TableEntry(SymDRI).n_type
2905 : MachO->getSymbolTableEntry(SymDRI).n_type);
2916 if (Expected<StringRef> NameOrErr = Section->getName())
2960 << GlobLoc // Local -> 'l', Global -> 'g', Neither -> ' '
2986 StringRef SectionName = unwrapOrError(Section->getName(), FileName);
2993 Expected<StringRef> NameOrErr = SymRef->getName();
2998 Demangle ? demangle(*NameOrErr) : NameOrErr->str();
3028 SymbolVersions[Symbol.getRawDataRefImpl().d.b - 1];
3078 /// into llvm-bcanalyzer.
3082 << "The -raw-clang-ast option will dump the raw binary contents of "
3085 "llvm-bcanalyzer.\n";
3090 if (Obj->isCOFF()) {
3111 unwrapOrError(ClangASTSection->getContents(), Obj->getFileName());
3118 if (Obj->isELF()) {
3120 } else if (Obj->isMachO()) {
3125 "for ELF and Mach-O executable files.\n";
3152 unwrapOrError(FaultMapSection->getContents(), Obj->getFileName());
3164 if (!O->isELF() && !O->isCOFF() && !O->isXCOFF())
3165 reportError(O->getFileName(), "Invalid/Unsupported object file format");
3167 Triple::ArchType AT = O->getArch();
3169 uint64_t Address = unwrapOrError(O->getStartAddress(), O->getFileName());
3171 StringRef Fmt = O->getBytesInAddress() > 4 ? "%016" PRIx64 : "%08" PRIx64;
3179 WithColor::error(errs(), ToolName) << "ill-formed archive entry.\n";
3184 outs() << ((Mode & sys::fs::owner_read) ? "r" : "-");
3185 outs() << ((Mode & sys::fs::owner_write) ? "w" : "-");
3186 outs() << ((Mode & sys::fs::owner_exe) ? "x" : "-");
3187 outs() << ((Mode & sys::fs::group_read) ? "r" : "-");
3188 outs() << ((Mode & sys::fs::group_write) ? "w" : "-");
3189 outs() << ((Mode & sys::fs::group_exe) ? "x" : "-");
3190 outs() << ((Mode & sys::fs::others_read) ? "r" : "-");
3191 outs() << ((Mode & sys::fs::others_write) ? "w" : "-");
3192 outs() << ((Mode & sys::fs::others_exe) ? "x" : "-");
3204 << "\" contains non-decimal chars) ";
3227 if (Elf->getEType() != ELF::ET_REL)
3238 for (const SectionRef &Section : Obj->sections())
3248 Twine::utohexstr(Stop) + " specified by --stop-address",
3249 Obj->getFileName());
3252 Twine::utohexstr(Start) + " specified by --start-address",
3253 Obj->getFileName());
3257 ") specified by --start-address/--stop-address",
3258 Obj->getFileName());
3265 reportError(DumperOrErr.takeError(), O->getFileName(),
3266 A ? A->getFileName() : "");
3275 outs() << A->getFileName() << "(" << O->getFileName() << ")";
3277 outs() << O->getFileName();
3278 outs() << ":\tfile format " << O->getFileFormatName().lower() << "\n";
3288 StringRef ArchiveName = A ? A->getFileName() : "";
3307 DICtx->dump(outs(), DumpOpts);
3320 // Mach-O specific options:
3343 StringRef ArchiveName = A ? A->getFileName() : "";
3348 << ArchiveName << "(" << I->getFileName() << ")"
3349 << ":\tfile format COFF-import-file"
3361 unsigned I = -1;
3362 for (auto &C : A->children(Err)) {
3367 reportError(std::move(E), getFileNameForError(C, I), A->getFileName());
3376 A->getFileName());
3379 reportError(std::move(Err), A->getFileName());
3384 // If we are using the Mach-O specific object file parser, then let it parse
3385 // the file and process the command line options. So the -arch flags can
3412 StringRef V(A->getValue());
3414 reportCmdLineError(A->getSpelling() +
3415 ": expected a non-negative integer, but got '" + V +
3422 StringRef V(A->getValue());
3425 reportCmdLineError(A->getSpelling() + ": expected a build ID, but got '" +
3431 reportCmdLineError("'" + StringRef(A->getValue()) +
3432 "' is not a valid value for '" + A->getSpelling() + "'");
3470 auto Filter = (A->getValue(0) + StringRef(",") + A->getValue(1)).str();
3490 const Option &O = A->getOption();
3512 DwarfDumpType = StringSwitch<DIDumpType>(A->getValue())
3548 reportCmdLineWarning("--symbolize-operands must be enabled for "
3549 "--pretty-pgo-analysis-map to have an effect");
3557 DbgVariables = StringSwitch<DebugVarsFormat>(A->getValue())
3565 DisassemblyColor = StringSwitch<ColorOutput>(A->getValue())
3578 // Parse -M (--disassembler-options) and deprecated
3579 // --x86-asm-syntax={att,intel}.
3588 switch (A->getOption().getID()) {
3590 AsmSyntax = "--x86-asm-syntax=att";
3593 AsmSyntax = "--x86-asm-syntax=intel";
3598 llvm::SplitString(A->getValue(), Values, ",");
3601 AsmSyntax = "--x86-asm-syntax=att";
3603 AsmSyntax = "--x86-asm-syntax=intel";
3608 SmallVector<const char *> Args = {"llvm-objdump"};
3610 Args.push_back(A->getValue());
3619 std::optional<std::string> Path = BIDFetcher->fetch(BuildID);
3621 reportCmdLineError(A->getSpelling() + ": could not find build ID '" +
3622 A->getValue() + "'");
3643 // llvm-objdump -> objdump
3644 // llvm-otool-10.exe -> otool
3645 // powerpc64-unknown-freebsd13-objdump -> objdump
3667 T->parseArgs(argc, argv, Unknown, Saver,
3671 T->printHelp(ToolName);
3675 T->printHelp(ToolName, /*ShowHidden=*/true);
3738 T->printHelp(ToolName);