Lines Matching +full:- +full:- +full:dllname
1 //===-- COFFDump.cpp - COFF-specific dumper ---------------------*- C++ -*-===//
8 //===----------------------------------------------------------------------===//
11 /// \brief This file implements the COFF-specific dumper for llvm-objdump.
14 /// http://msdn.microsoft.com/en-us/library/ck9asaa9.aspx
16 //===----------------------------------------------------------------------===//
18 #include "llvm-objdump.h"
171 ResolvedSection = Obj->getCOFFSection(**Iter); in resolveSectionAndAddress()
182 uint64_t Ofs = I->getOffset(); in resolveSymbol()
184 Sym = *I->getSymbol(); in resolveSymbol()
205 if (std::error_code EC = Obj->getSectionContents(Section, Contents)) in getSectionContents()
244 error(Obj->getPE32Header(PE32Header)); in printSEHTable()
245 uint32_t ImageBase = PE32Header->ImageBase; in printSEHTable()
247 error(Obj->getVaPtr(TableVA, IntPtr)); in printSEHTable()
260 << format_hex(TLSDir->StartAddressOfRawData, FormatWidth) in printTLSDirectoryT()
262 << format_hex(TLSDir->EndAddressOfRawData, FormatWidth) in printTLSDirectoryT()
264 << format_hex(TLSDir->AddressOfIndex, FormatWidth) in printTLSDirectoryT()
266 << format_hex(TLSDir->AddressOfCallBacks, FormatWidth) in printTLSDirectoryT()
268 << TLSDir->SizeOfZeroFill in printTLSDirectoryT()
270 << TLSDir->Characteristics in printTLSDirectoryT()
272 << TLSDir->getAlignment() in printTLSDirectoryT()
278 error(Obj->getPE32Header(PE32Header)); in printTLSDirectory()
281 error(Obj->getPE32PlusHeader(PE32PlusHeader)); in printTLSDirectory()
288 error(Obj->getDataDirectory(COFF::TLS_TABLE, DataDir)); in printTLSDirectory()
290 if (DataDir->RelativeVirtualAddress == 0) in printTLSDirectory()
292 error(Obj->getRvaPtr(DataDir->RelativeVirtualAddress, IntPtr)); in printTLSDirectory()
308 error(Obj->getPE32Header(PE32Header)); in printLoadConfiguration()
313 if (Obj->getMachine() != COFF::IMAGE_FILE_MACHINE_I386) in printLoadConfiguration()
317 error(Obj->getDataDirectory(COFF::LOAD_CONFIG_TABLE, DataDir)); in printLoadConfiguration()
319 if (DataDir->RelativeVirtualAddress == 0) in printLoadConfiguration()
321 error(Obj->getRvaPtr(DataDir->RelativeVirtualAddress, IntPtr)); in printLoadConfiguration()
325 << "\n Timestamp: " << LoadConf->TimeDateStamp in printLoadConfiguration()
326 << "\n Major Version: " << LoadConf->MajorVersion in printLoadConfiguration()
327 << "\n Minor Version: " << LoadConf->MinorVersion in printLoadConfiguration()
328 << "\n GlobalFlags Clear: " << LoadConf->GlobalFlagsClear in printLoadConfiguration()
329 << "\n GlobalFlags Set: " << LoadConf->GlobalFlagsSet in printLoadConfiguration()
330 << "\n Critical Section Default Timeout: " << LoadConf->CriticalSectionDefaultTimeout in printLoadConfiguration()
331 << "\n Decommit Free Block Threshold: " << LoadConf->DeCommitFreeBlockThreshold in printLoadConfiguration()
332 << "\n Decommit Total Free Threshold: " << LoadConf->DeCommitTotalFreeThreshold in printLoadConfiguration()
333 << "\n Lock Prefix Table: " << LoadConf->LockPrefixTable in printLoadConfiguration()
334 << "\n Maximum Allocation Size: " << LoadConf->MaximumAllocationSize in printLoadConfiguration()
335 << "\n Virtual Memory Threshold: " << LoadConf->VirtualMemoryThreshold in printLoadConfiguration()
336 << "\n Process Affinity Mask: " << LoadConf->ProcessAffinityMask in printLoadConfiguration()
337 << "\n Process Heap Flags: " << LoadConf->ProcessHeapFlags in printLoadConfiguration()
338 << "\n CSD Version: " << LoadConf->CSDVersion in printLoadConfiguration()
339 << "\n Security Cookie: " << LoadConf->SecurityCookie in printLoadConfiguration()
340 << "\n SEH Table: " << LoadConf->SEHandlerTable in printLoadConfiguration()
341 << "\n SEH Count: " << LoadConf->SEHandlerCount in printLoadConfiguration()
343 printSEHTable(Obj, LoadConf->SEHandlerTable, LoadConf->SEHandlerCount); in printLoadConfiguration()
350 import_directory_iterator I = Obj->import_directory_begin(); in printImportTables()
351 import_directory_iterator E = Obj->import_directory_end(); in printImportTables()
355 for (const ImportDirectoryEntryRef &DirRef : Obj->import_directories()) { in printImportTables()
362 static_cast<uint32_t>(Dir->ImportLookupTableRVA), in printImportTables()
363 static_cast<uint32_t>(Dir->TimeDateStamp), in printImportTables()
364 static_cast<uint32_t>(Dir->ForwarderChain), in printImportTables()
365 static_cast<uint32_t>(Dir->NameRVA), in printImportTables()
366 static_cast<uint32_t>(Dir->ImportAddressTableRVA)); in printImportTables()
385 if (Obj->getHintName(HintNameRVA, Hint, Name)) in printImportTables()
397 export_directory_iterator I = Obj->export_directory_begin(); in printExportTable()
398 export_directory_iterator E = Obj->export_directory_end(); in printExportTable()
401 StringRef DllName; in printExportTable() local
403 if (I->getDllName(DllName)) in printExportTable()
405 if (I->getOrdinalBase(OrdinalBase)) in printExportTable()
407 outs() << " DLL name: " << DllName << "\n"; in printExportTable()
412 if (I->getOrdinal(Ordinal)) in printExportTable()
415 if (I->getExportRVA(RVA)) in printExportTable()
418 if (I->isForwarder(IsForwarder)) in printExportTable()
422 // Export table entries can be used to re-export symbols that in printExportTable()
431 if (I->getSymbolName(Name)) in printExportTable()
437 if (I->getForwardTo(S)) in printExportTable()
450 for (const SectionRef &Section : Obj->sections()) { in getPDataSection()
456 const coff_section *Pdata = Obj->getCOFFSection(Section); in getPDataSection()
464 error(Obj->getSectionContents(Pdata, Contents)); in getPDataSection()
479 outs() << " Version: " << static_cast<int>(UI->getVersion()) << "\n"; in printWin64EHUnwindInfo()
480 outs() << " Flags: " << static_cast<int>(UI->getFlags()); in printWin64EHUnwindInfo()
481 if (UI->getFlags()) { in printWin64EHUnwindInfo()
482 if (UI->getFlags() & UNW_ExceptionHandler) in printWin64EHUnwindInfo()
484 if (UI->getFlags() & UNW_TerminateHandler) in printWin64EHUnwindInfo()
486 if (UI->getFlags() & UNW_ChainInfo) in printWin64EHUnwindInfo()
490 outs() << " Size of prolog: " << static_cast<int>(UI->PrologSize) << "\n"; in printWin64EHUnwindInfo()
491 outs() << " Number of Codes: " << static_cast<int>(UI->NumCodes) << "\n"; in printWin64EHUnwindInfo()
493 if (UI->getFrameRegister()) { in printWin64EHUnwindInfo()
495 << getUnwindRegisterName(UI->getFrameRegister()) << "\n"; in printWin64EHUnwindInfo()
496 outs() << " Frame offset: " << 16 * UI->getFrameOffset() << "\n"; in printWin64EHUnwindInfo()
500 if (UI->getFlags() & (UNW_ExceptionHandler | UNW_TerminateHandler)) { in printWin64EHUnwindInfo()
502 } else if (UI->getFlags() & UNW_ChainInfo) { in printWin64EHUnwindInfo()
506 if (UI->NumCodes) in printWin64EHUnwindInfo()
509 printAllUnwindCodes(makeArrayRef(&UI->UnwindCodes[0], UI->NumCodes)); in printWin64EHUnwindInfo()
529 if (Obj->getRvaPtr(RF.UnwindInfoOffset, addr)) in printRuntimeFunction()
585 if (Obj->getMachine() != COFF::IMAGE_FILE_MACHINE_AMD64) { in printCOFFUnwindInfo()
621 for (unsigned SI = 0, SE = coff->getNumberOfSymbols(); SI != SE; ++SI) { in printCOFFSymbolTable()
622 ErrorOr<COFFSymbolRef> Symbol = coff->getSymbol(SI); in printCOFFSymbolTable()
625 error(coff->getSymbolName(*Symbol, Name)); in printCOFFSymbolTable()
628 << "(sec " << format("%2d", int(Symbol->getSectionNumber())) << ")" in printCOFFSymbolTable()
630 << "(ty " << format("%3x", unsigned(Symbol->getType())) << ")" in printCOFFSymbolTable()
631 << "(scl " << format("%3x", unsigned(Symbol->getStorageClass())) << ") " in printCOFFSymbolTable()
632 << "(nx " << unsigned(Symbol->getNumberOfAuxSymbols()) << ") " in printCOFFSymbolTable()
633 << "0x" << format("%08x", unsigned(Symbol->getValue())) << " " in printCOFFSymbolTable()
636 for (unsigned AI = 0, AE = Symbol->getNumberOfAuxSymbols(); AI < AE; ++AI, ++SI) { in printCOFFSymbolTable()
637 if (Symbol->isSectionDefinition()) { in printCOFFSymbolTable()
639 error(coff->getAuxSymbol<coff_aux_section_definition>(SI + 1, asd)); in printCOFFSymbolTable()
641 int32_t AuxNumber = asd->getNumber(Symbol->isBigObj()); in printCOFFSymbolTable()
645 , unsigned(asd->Length) in printCOFFSymbolTable()
646 , unsigned(asd->NumberOfRelocations) in printCOFFSymbolTable()
647 , unsigned(asd->NumberOfLinenumbers) in printCOFFSymbolTable()
648 , unsigned(asd->CheckSum)) in printCOFFSymbolTable()
651 , unsigned(asd->Selection)); in printCOFFSymbolTable()
652 } else if (Symbol->isFileRecord()) { in printCOFFSymbolTable()
654 error(coff->getAuxSymbol<char>(SI + 1, FileName)); in printCOFFSymbolTable()
656 StringRef Name(FileName, Symbol->getNumberOfAuxSymbols() * in printCOFFSymbolTable()
657 coff->getSymbolTableEntrySize()); in printCOFFSymbolTable()
660 SI = SI + Symbol->getNumberOfAuxSymbols(); in printCOFFSymbolTable()
662 } else if (Symbol->isWeakExternal()) { in printCOFFSymbolTable()
664 error(coff->getAuxSymbol<coff_aux_weak_external>(SI + 1, awe)); in printCOFFSymbolTable()
667 static_cast<uint32_t>(awe->TagIndex), in printCOFFSymbolTable()
668 static_cast<uint32_t>(awe->Characteristics)); in printCOFFSymbolTable()