Lines Matching refs:Obj
350 static const Target *getTarget(const ObjectFile *Obj) { in getTarget() argument
354 TheTriple = Obj->makeTriple(); in getTarget()
357 auto Arch = Obj->getArch(); in getTarget()
359 Obj->setARMSubArch(TheTriple); in getTarget()
367 reportError(Obj->getFileName(), "can't find target: " + Error); in getTarget()
380 const ObjectFile *Obj = Rel.getObject(); in getRelocationValueString() local
381 if (auto *ELF = dyn_cast<ELFObjectFileBase>(Obj)) in getRelocationValueString()
383 if (auto *COFF = dyn_cast<COFFObjectFile>(Obj)) in getRelocationValueString()
385 if (auto *Wasm = dyn_cast<WasmObjectFile>(Obj)) in getRelocationValueString()
387 if (auto *MachO = dyn_cast<MachOObjectFile>(Obj)) in getRelocationValueString()
389 if (auto *XCOFF = dyn_cast<XCOFFObjectFile>(Obj)) in getRelocationValueString()
434 static bool isAArch64Elf(const ObjectFile *Obj) { in isAArch64Elf() argument
435 const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj); in isAArch64Elf()
439 static bool isArmElf(const ObjectFile *Obj) { in isArmElf() argument
440 const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj); in isArmElf()
444 static bool hasMappingSymbols(const ObjectFile *Obj) { in hasMappingSymbols() argument
445 return isArmElf(Obj) || isAArch64Elf(Obj); in hasMappingSymbols()
673 static uint8_t getElfSymbolType(const ObjectFile *Obj, const SymbolRef &Sym) { in getElfSymbolType() argument
674 assert(Obj->isELF()); in getElfSymbolType()
675 if (auto *Elf32LEObj = dyn_cast<ELF32LEObjectFile>(Obj)) in getElfSymbolType()
677 Obj->getFileName()) in getElfSymbolType()
679 if (auto *Elf64LEObj = dyn_cast<ELF64LEObjectFile>(Obj)) in getElfSymbolType()
681 Obj->getFileName()) in getElfSymbolType()
683 if (auto *Elf32BEObj = dyn_cast<ELF32BEObjectFile>(Obj)) in getElfSymbolType()
685 Obj->getFileName()) in getElfSymbolType()
687 if (auto *Elf64BEObj = cast<ELF64BEObjectFile>(Obj)) in getElfSymbolType()
689 Obj->getFileName()) in getElfSymbolType()
695 addDynamicElfSymbols(const ELFObjectFile<ELFT> *Obj, in addDynamicElfSymbols() argument
697 for (auto Symbol : Obj->getDynamicSymbolIterators()) { in addDynamicElfSymbols()
702 uint64_t Address = unwrapOrError(Symbol.getAddress(), Obj->getFileName()); in addDynamicElfSymbols()
706 Address = unwrapOrError(Obj->getSymbol(Symbol.getRawDataRefImpl()), in addDynamicElfSymbols()
707 Obj->getFileName()) in addDynamicElfSymbols()
710 StringRef Name = unwrapOrError(Symbol.getName(), Obj->getFileName()); in addDynamicElfSymbols()
715 unwrapOrError(Symbol.getSection(), Obj->getFileName()); in addDynamicElfSymbols()
716 if (SecI == Obj->section_end()) in addDynamicElfSymbols()
724 addDynamicElfSymbols(const ObjectFile *Obj, in addDynamicElfSymbols() argument
726 assert(Obj->isELF()); in addDynamicElfSymbols()
727 if (auto *Elf32LEObj = dyn_cast<ELF32LEObjectFile>(Obj)) in addDynamicElfSymbols()
729 else if (auto *Elf64LEObj = dyn_cast<ELF64LEObjectFile>(Obj)) in addDynamicElfSymbols()
731 else if (auto *Elf32BEObj = dyn_cast<ELF32BEObjectFile>(Obj)) in addDynamicElfSymbols()
733 else if (auto *Elf64BEObj = cast<ELF64BEObjectFile>(Obj)) in addDynamicElfSymbols()
739 static Optional<SectionRef> getWasmCodeSection(const WasmObjectFile *Obj) { in getWasmCodeSection() argument
740 for (auto SecI : Obj->sections()) { in getWasmCodeSection()
741 const WasmSection &Section = Obj->getWasmSection(SecI); in getWasmCodeSection()
749 addMissingWasmCodeSymbols(const WasmObjectFile *Obj, in addMissingWasmCodeSymbols() argument
751 Optional<SectionRef> Section = getWasmCodeSection(Obj); in addMissingWasmCodeSymbols()
760 for (const wasm::WasmFunction &Function : Obj->functions()) { in addMissingWasmCodeSymbols()
776 static void addPltEntries(const ObjectFile *Obj, in addPltEntries() argument
780 for (const SectionRef &Section : Obj->sections()) { in addPltEntries()
791 if (auto *ElfObj = dyn_cast<ELFObjectFileBase>(Obj)) { in addPltEntries()
795 uint8_t SymbolType = getElfSymbolType(Obj, Symbol); in addPltEntries()
809 Obj->getFileName()); in addPltEntries()
835 getRelocsMap(object::ObjectFile const &Obj) { in getRelocsMap() argument
838 for (SectionRef Sec : Obj.sections()) { in getRelocsMap()
842 reportError(Obj.getFileName(), in getRelocsMap()
848 if (Relocated == Obj.section_end() || !checkSectionFilter(*Relocated).Keep) in getRelocsMap()
864 const ObjectFile *Obj = Section.getObject(); in shouldAdjustVA() local
865 if (Obj->isELF()) in shouldAdjustVA()
886 uint64_t End, const ObjectFile *Obj, in dumpARMELFData() argument
891 Obj->isLittleEndian() ? support::little : support::big; in dumpARMELFData()
946 SymbolInfoTy objdump::createSymbolInfo(const ObjectFile *Obj, in createSymbolInfo() argument
948 const StringRef FileName = Obj->getFileName(); in createSymbolInfo()
952 if (Obj->isXCOFF() && SymbolDescription) { in createSymbolInfo()
953 const auto *XCOFFObj = cast<XCOFFObjectFile>(Obj); in createSymbolInfo()
963 Obj->isELF() ? getElfSymbolType(Obj, Symbol) in createSymbolInfo()
967 static SymbolInfoTy createDummySymbolInfo(const ObjectFile *Obj, in createDummySymbolInfo() argument
970 if (Obj->isXCOFF() && SymbolDescription) in createDummySymbolInfo()
1102 static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj, in disassembleObject() argument
1113 if (isArmElf(Obj)) in disassembleObject()
1118 RelocMap = getRelocsMap(*Obj); in disassembleObject()
1119 bool Is64Bits = Obj->getBytesInAddress() > 4; in disassembleObject()
1125 const StringRef FileName = Obj->getFileName(); in disassembleObject()
1126 const MachOObjectFile *MachO = dyn_cast<const MachOObjectFile>(Obj); in disassembleObject()
1127 for (const SymbolRef &Symbol : Obj->symbols()) { in disassembleObject()
1133 if (NameOrErr->empty() && !(Obj->isXCOFF() && SymbolDescription)) in disassembleObject()
1136 if (Obj->isELF() && getElfSymbolType(Obj, Symbol) == ELF::STT_SECTION) in disassembleObject()
1157 if (SecI != Obj->section_end()) in disassembleObject()
1158 AllSymbols[*SecI].push_back(createSymbolInfo(Obj, Symbol)); in disassembleObject()
1160 AbsoluteSymbols.push_back(createSymbolInfo(Obj, Symbol)); in disassembleObject()
1163 if (AllSymbols.empty() && Obj->isELF()) in disassembleObject()
1164 addDynamicElfSymbols(Obj, AllSymbols); in disassembleObject()
1166 if (Obj->isWasm()) in disassembleObject()
1167 addMissingWasmCodeSymbols(cast<WasmObjectFile>(Obj), AllSymbols); in disassembleObject()
1171 addPltEntries(Obj, AllSymbols, Saver); in disassembleObject()
1178 for (SectionRef Sec : Obj->sections()) in disassembleObject()
1188 if (const auto *COFFObj = dyn_cast<COFFObjectFile>(Obj)) { in disassembleObject()
1192 reportError(std::move(E), Obj->getFileName()); in disassembleObject()
1198 reportError(std::move(E), Obj->getFileName()); in disassembleObject()
1225 DICtx = DWARFContext::create(*Obj); in disassembleObject()
1232 for (const SectionRef &Section : ToolSectionFilter(*Obj)) { in disassembleObject()
1245 if (hasMappingSymbols(Obj)) { in disassembleObject()
1263 unwrapOrError(Section.getContents(), Obj->getFileName())); in disassembleObject()
1266 if (Obj->isELF() && Obj->getArch() == Triple::amdgcn) { in disassembleObject()
1273 StringRef SectionName = unwrapOrError(Section.getName(), Obj->getFileName()); in disassembleObject()
1277 createDummySymbolInfo(Obj, SectionAddr, SectionName, in disassembleObject()
1292 uint64_t RelAdjustment = Obj->isRelocatableObject() ? 0 : SectionAddr; in disassembleObject()
1338 if (Obj->isXCOFF() && SymbolDescription) { in disassembleObject()
1390 if (Obj->isELF() && !DisassembleAll && Section.isText()) { in disassembleObject()
1398 bool CheckARMELFData = hasMappingSymbols(Obj) && in disassembleObject()
1429 Size = dumpARMELFData(SectionAddr, Index, End, Obj, Bytes, in disassembleObject()
1472 "", *STI, &SP, Obj->getFileName(), &Rels, LVP); in disassembleObject()
1510 if (!Obj->isRelocatableObject()) { in disassembleObject()
1586 if (Obj->getArch() != Triple::hexagon) { in disassembleObject()
1605 if (RelCur->getSymbol() != Obj->symbol_end()) { in disassembleObject()
1608 if (SymSI && *SymSI != Obj->section_end() && in disassembleObject()
1613 printRelocation(FOS, Obj->getFileName(), *RelCur, in disassembleObject()
1630 static void disassembleObject(const ObjectFile *Obj, bool InlineRelocs) { in disassembleObject() argument
1631 const Target *TheTarget = getTarget(Obj); in disassembleObject()
1634 SubtargetFeatures Features = Obj->getFeatures(); in disassembleObject()
1642 reportError(Obj->getFileName(), in disassembleObject()
1650 reportError(Obj->getFileName(), in disassembleObject()
1654 MCPU = Obj->tryGetCPUName().getValueOr("").str(); in disassembleObject()
1659 reportError(Obj->getFileName(), in disassembleObject()
1663 reportError(Obj->getFileName(), in disassembleObject()
1674 reportError(Obj->getFileName(), "no disassembler for target " + TripleName); in disassembleObject()
1682 if (isArmElf(Obj) && !STI->checkFeatures("+mclass")) { in disassembleObject()
1699 reportError(Obj->getFileName(), in disassembleObject()
1707 SourcePrinter SP(Obj, TheTarget->getName()); in disassembleObject()
1711 reportError(Obj->getFileName(), in disassembleObject()
1714 disassembleObject(TheTarget, Obj, Ctx, DisAsm.get(), SecondaryDisAsm.get(), in disassembleObject()
1719 void objdump::printRelocations(const ObjectFile *Obj) { in printRelocations() argument
1720 StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 : in printRelocations()
1724 if (!Obj->isRelocatableObject()) in printRelocations()
1732 for (const SectionRef &Section : ToolSectionFilter(*Obj, &Ndx)) { in printRelocations()
1737 reportError(Obj->getFileName(), in printRelocations()
1745 StringRef SecName = unwrapOrError(P.first.getName(), Obj->getFileName()); in printRelocations()
1747 uint32_t OffsetPadding = (Obj->getBytesInAddress() > 4 ? 16 : 8); in printRelocations()
1762 reportError(std::move(E), Obj->getFileName()); in printRelocations()
1772 void objdump::printDynamicRelocations(const ObjectFile *Obj) { in printDynamicRelocations() argument
1774 if (!Obj->isELF()) in printDynamicRelocations()
1777 const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj); in printDynamicRelocations()
1779 reportError(Obj->getFileName(), "not a dynamic object"); in printDynamicRelocations()
1783 std::vector<SectionRef> DynRelSec = Obj->dynamic_relocation_sections(); in printDynamicRelocations()
1788 StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 : "%08" PRIx64; in printDynamicRelocations()
1796 reportError(std::move(E), Obj->getFileName()); in printDynamicRelocations()
1805 static bool shouldDisplayLMA(const ObjectFile *Obj) { in shouldDisplayLMA() argument
1806 if (!Obj->isELF()) in shouldDisplayLMA()
1808 for (const SectionRef &S : ToolSectionFilter(*Obj)) in shouldDisplayLMA()
1814 static size_t getMaxSectionNameWidth(const ObjectFile *Obj) { in getMaxSectionNameWidth() argument
1817 for (const SectionRef &Section : ToolSectionFilter(*Obj)) { in getMaxSectionNameWidth()
1818 StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName()); in getMaxSectionNameWidth()
1824 void objdump::printSectionHeaders(const ObjectFile *Obj) { in printSectionHeaders() argument
1825 size_t NameWidth = getMaxSectionNameWidth(Obj); in printSectionHeaders()
1826 size_t AddressWidth = 2 * Obj->getBytesInAddress(); in printSectionHeaders()
1827 bool HasLMAColumn = shouldDisplayLMA(Obj); in printSectionHeaders()
1838 for (const SectionRef &Section : ToolSectionFilter(*Obj, &Idx)) { in printSectionHeaders()
1839 StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName()); in printSectionHeaders()
1867 void objdump::printSectionContents(const ObjectFile *Obj) { in printSectionContents() argument
1868 const MachOObjectFile *MachO = dyn_cast<const MachOObjectFile>(Obj); in printSectionContents()
1870 for (const SectionRef &Section : ToolSectionFilter(*Obj)) { in printSectionContents()
1871 StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName()); in printSectionContents()
1889 StringRef Contents = unwrapOrError(Section.getContents(), Obj->getFileName()); in printSectionContents()
2096 static void printRawClangAST(const ObjectFile *Obj) { in printRawClangAST() argument
2107 if (Obj->isCOFF()) { in printRawClangAST()
2112 for (auto Sec : ToolSectionFilter(*Obj)) { in printRawClangAST()
2128 ClangASTSection.getValue().getContents(), Obj->getFileName()); in printRawClangAST()
2132 static void printFaultMaps(const ObjectFile *Obj) { in printFaultMaps() argument
2135 if (Obj->isELF()) { in printFaultMaps()
2137 } else if (Obj->isMachO()) { in printFaultMaps()
2148 for (auto Sec : ToolSectionFilter(*Obj)) { in printFaultMaps()
2169 unwrapOrError(FaultMapSection.getValue().getContents(), Obj->getFileName()); in printFaultMaps()
2258 static bool shouldWarnForInvalidStartStopAddress(ObjectFile *Obj) { in shouldWarnForInvalidStartStopAddress() argument
2259 if (const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj)) { in shouldWarnForInvalidStartStopAddress()
2266 static void checkForInvalidStartStopAddress(ObjectFile *Obj, in checkForInvalidStartStopAddress() argument
2268 if (!shouldWarnForInvalidStartStopAddress(Obj)) in checkForInvalidStartStopAddress()
2271 for (const SectionRef &Section : Obj->sections()) in checkForInvalidStartStopAddress()
2282 Obj->getFileName()); in checkForInvalidStartStopAddress()
2286 Obj->getFileName()); in checkForInvalidStartStopAddress()
2291 Obj->getFileName()); in checkForInvalidStartStopAddress()