llvm.org GIT mirror llvm / 5974613
[PDB] Teach libpdb to write DBI Stream ECNames. Based strictly on the name, this seems to have something to do width edit & continue. The goal of this patch has nothing to do with supporting edit and continue though. msvc link.exe writes very basic information into this area even when *not* compiling with support for E&C, and so the goal here is to bring lld-link to parity. Since we cannot know what assumptions standard tools make about the content of PDB files, we need to be as close as possible. This ECNames data structure is a standard PDB string hash table. link.exe puts a single string into this hash table, which is the full path to the PDB file on disk. It then references this string from the module descriptor for the compiler generated `* Linker *` module. With this patch, lld-link will generate the exact same sequence of bytes as MSVC link for this subsection for a given object file input (as reported by `llvm-pdbutil bytes -ec`). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307356 91177308-0d34-0410-b5e6-96231b3b80d8 Zachary Turner 2 years ago
8 changed file(s) with 84 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
4646 DbiModuleDescriptorBuilder &
4747 operator=(const DbiModuleDescriptorBuilder &) = delete;
4848
49 void setPdbFilePathNI(uint32_t NI);
4950 void setObjFileName(StringRef Name);
5051 void addSymbol(codeview::CVSymbol Symbol);
5152
8485 msf::MSFBuilder &MSF;
8586
8687 uint32_t SymbolByteSize = 0;
88 uint32_t PdbFilePathNI = 0;
8789 std::string ModuleName;
8890 std::string ObjFileName;
8991 std::vector SourceFiles;
8282 FixedStreamArray getSectionMap() const;
8383 void visitSectionContributions(ISectionContribVisitor &Visitor) const;
8484
85 Expected getECName(uint32_t NI) const;
86
8587 private:
8688 Error initializeSectionContributionData();
8789 Error initializeSectionHeadersData();
1414 #include "llvm/Support/Error.h"
1515
1616 #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
17 #include "llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h"
1718 #include "llvm/DebugInfo/PDB/Native/RawConstants.h"
1819 #include "llvm/DebugInfo/PDB/PDBTypes.h"
1920 #include "llvm/Support/BinaryByteStream.h"
5253
5354 // Add given bytes as a new stream.
5455 Error addDbgStream(pdb::DbgHeaderType Type, ArrayRef Data);
56
57 uint32_t addECName(StringRef Name);
5558
5659 uint32_t calculateSerializedLength() const;
5760
107110
108111 StringMap SourceFileNames;
109112
113 PDBStringTableBuilder ECNamesBuilder;
110114 WritableBinaryStreamRef NamesBuffer;
111115 MutableBinaryByteStream FileInfoBuffer;
112116 std::vector SectionContribs;
6464 ObjFileName = Name;
6565 }
6666
67 void DbiModuleDescriptorBuilder::setPdbFilePathNI(uint32_t NI) {
68 PdbFilePathNI = NI;
69 }
70
6771 void DbiModuleDescriptorBuilder::addSymbol(CVSymbol Symbol) {
6872 Symbols.push_back(Symbol);
6973 // Symbols written to a PDB file are required to be 4 byte aligned. The same
110114 (void)Layout.Mod; // Set in constructor
111115 (void)Layout.ModDiStream; // Set in finalizeMsfLayout
112116 Layout.NumFiles = SourceFiles.size();
113 Layout.PdbFilePathNI = 0;
117 Layout.PdbFilePathNI = PdbFilePathNI;
114118 Layout.SrcFileNameNI = 0;
115119
116120 // This value includes both the signature field as well as the record bytes
224224 }
225225 }
226226
227 Expected DbiStream::getECName(uint32_t NI) const {
228 return ECNames.getStringForID(NI);
229 }
230
227231 Error DbiStream::initializeSectionContributionData() {
228232 if (SecContrSubstream.empty())
229233 return Error::success();
6262 return Error::success();
6363 }
6464
65 uint32_t DbiStreamBuilder::addECName(StringRef Name) {
66 return ECNamesBuilder.insert(Name);
67 }
68
6569 uint32_t DbiStreamBuilder::calculateSerializedLength() const {
6670 // For now we only support serializing the header.
6771 return sizeof(DbiStreamHeader) + calculateFileInfoSubstreamSize() +
6872 calculateModiSubstreamSize() + calculateSectionContribsStreamSize() +
69 calculateSectionMapStreamSize() + calculateDbgStreamsSize();
73 calculateSectionMapStreamSize() + calculateDbgStreamsSize() +
74 ECNamesBuilder.calculateSerializedSize();
7075 }
7176
7277 Expected
246251 H->PdbDllVersion = PdbDllVersion;
247252 H->MachineType = static_cast(MachineType);
248253
249 H->ECSubstreamSize = 0;
254 H->ECSubstreamSize = ECNamesBuilder.calculateSerializedSize();
250255 H->FileInfoSize = FileInfoBuffer.getLength();
251256 H->ModiSubstreamSize = calculateModiSubstreamSize();
252257 H->OptionalDbgHdrSize = DbgStreams.size() * sizeof(uint16_t);
382387 if (auto EC = Writer.writeStreamRef(FileInfoBuffer))
383388 return EC;
384389
390 if (auto EC = ECNamesBuilder.commit(Writer))
391 return EC;
392
385393 for (auto &Stream : DbgStreams)
386394 if (auto EC = Writer.writeInteger(Stream.StreamNumber))
387395 return EC;
6666 ALL-NEXT: Mod 0000 | Name: `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
6767 ALL-NEXT: Obj: `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
6868 ALL-NEXT: debug stream: 12, # files: 1, has ec info: false
69 ALL-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
6970 ALL-NEXT: Mod 0001 | Name: `* Linker *`:
7071 ALL-NEXT: Obj: ``:
7172 ALL-NEXT: debug stream: 14, # files: 0, has ec info: false
73 ALL-NEXT: pdb file ni: 1 `{{.*empty.pdb}}`, src file ni: 0 ``
7274 ALL: Files
7375 ALL-NEXT: ============================================================
7476 ALL-NEXT: Mod 0000 | `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
567569 BIG-NEXT: Mod 0000 | Name: `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
568570 BIG-NEXT: Obj: `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
569571 BIG-NEXT: debug stream: 12, # files: 1, has ec info: false
572 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
570573 BIG-NEXT: Mod 0001 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_cpu_disp_.obj`:
571574 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
572575 BIG-NEXT: debug stream: 14, # files: 14, has ec info: false
576 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
573577 BIG-NEXT: Mod 0002 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_initsect_.obj`:
574578 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
575579 BIG-NEXT: debug stream: 15, # files: 19, has ec info: false
580 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
576581 BIG-NEXT: Mod 0003 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_sehprolg4_.obj`:
577582 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
578583 BIG-NEXT: debug stream: 16, # files: 1, has ec info: false
584 BIG-NEXT: pdb file ni: 0 ``, src file ni: 1 `f:\dd\vctools\crt\vcstartup\src\eh\i386\sehprolg4.asm`
579585 BIG-NEXT: Mod 0004 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_chandler4gs_.obj`:
580586 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
581587 BIG-NEXT: debug stream: 17, # files: 14, has ec info: false
588 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
582589 BIG-NEXT: Mod 0005 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_secchk_.obj`:
583590 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
584591 BIG-NEXT: debug stream: 18, # files: 14, has ec info: false
592 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
585593 BIG-NEXT: Mod 0006 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_cookie.obj`:
586594 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
587595 BIG-NEXT: debug stream: 19, # files: 9, has ec info: false
596 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
588597 BIG-NEXT: Mod 0007 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_report.obj`:
589598 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
590599 BIG-NEXT: debug stream: 20, # files: 14, has ec info: false
600 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
591601 BIG-NEXT: Mod 0008 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_support.obj`:
592602 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
593603 BIG-NEXT: debug stream: 21, # files: 10, has ec info: false
604 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
594605 BIG-NEXT: Mod 0009 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\checkcfg.obj`:
595606 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
596607 BIG-NEXT: debug stream: 22, # files: 14, has ec info: false
608 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
597609 BIG-NEXT: Mod 0010 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\guard_support.obj`:
598610 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
599611 BIG-NEXT: debug stream: 23, # files: 10, has ec info: false
612 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
600613 BIG-NEXT: Mod 0011 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\loadcfg.obj`:
601614 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
602615 BIG-NEXT: debug stream: 24, # files: 9, has ec info: false
616 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
603617 BIG-NEXT: Mod 0012 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\dyn_tls_dtor.obj`:
604618 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
605619 BIG-NEXT: debug stream: 25, # files: 11, has ec info: false
620 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
606621 BIG-NEXT: Mod 0013 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\dyn_tls_init.obj`:
607622 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
608623 BIG-NEXT: debug stream: 26, # files: 10, has ec info: false
624 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
609625 BIG-NEXT: Mod 0014 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\matherr_detection.obj`:
610626 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
611627 BIG-NEXT: debug stream: 27, # files: 1, has ec info: false
628 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
612629 BIG-NEXT: Mod 0015 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\ucrt_detection.obj`:
613630 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
614631 BIG-NEXT: debug stream: 28, # files: 1, has ec info: false
632 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
615633 BIG-NEXT: Mod 0016 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\argv_mode.obj`:
616634 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
617635 BIG-NEXT: debug stream: 29, # files: 1, has ec info: false
636 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
618637 BIG-NEXT: Mod 0017 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\commit_mode.obj`:
619638 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
620639 BIG-NEXT: debug stream: 30, # files: 1, has ec info: false
640 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
621641 BIG-NEXT: Mod 0018 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\default_local_stdio_options.obj`:
622642 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
623643 BIG-NEXT: debug stream: 31, # files: 24, has ec info: false
644 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
624645 BIG-NEXT: Mod 0019 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\denormal_control.obj`:
625646 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
626647 BIG-NEXT: debug stream: 32, # files: 1, has ec info: false
648 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
627649 BIG-NEXT: Mod 0020 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\env_mode.obj`:
628650 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
629651 BIG-NEXT: debug stream: 33, # files: 1, has ec info: false
652 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
630653 BIG-NEXT: Mod 0021 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\file_mode.obj`:
631654 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
632655 BIG-NEXT: debug stream: 34, # files: 1, has ec info: false
656 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
633657 BIG-NEXT: Mod 0022 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\invalid_parameter_handler.obj`:
634658 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
635659 BIG-NEXT: debug stream: 35, # files: 1, has ec info: false
660 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
636661 BIG-NEXT: Mod 0023 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\matherr.obj`:
637662 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
638663 BIG-NEXT: debug stream: 36, # files: 2, has ec info: false
664 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
639665 BIG-NEXT: Mod 0024 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\new_mode.obj`:
640666 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
641667 BIG-NEXT: debug stream: 37, # files: 1, has ec info: false
668 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
642669 BIG-NEXT: Mod 0025 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\thread_locale.obj`:
643670 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
644671 BIG-NEXT: debug stream: 38, # files: 1, has ec info: false
672 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
645673 BIG-NEXT: Mod 0026 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\tncleanup.obj`:
646674 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
647675 BIG-NEXT: debug stream: 39, # files: 21, has ec info: false
676 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
648677 BIG-NEXT: Mod 0027 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\exe_main.obj`:
649678 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
650679 BIG-NEXT: debug stream: 40, # files: 26, has ec info: false
680 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
651681 BIG-NEXT: Mod 0028 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\initializers.obj`:
652682 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
653683 BIG-NEXT: debug stream: 41, # files: 20, has ec info: false
684 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
654685 BIG-NEXT: Mod 0029 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\utility.obj`:
655686 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
656687 BIG-NEXT: debug stream: 42, # files: 20, has ec info: false
688 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
657689 BIG-NEXT: Mod 0030 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\ucrt_stubs.obj`:
658690 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
659691 BIG-NEXT: debug stream: 43, # files: 1, has ec info: false
692 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
660693 BIG-NEXT: Mod 0031 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\utility_desktop.obj`:
661694 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
662695 BIG-NEXT: debug stream: 44, # files: 20, has ec info: false
696 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
663697 BIG-NEXT: Mod 0032 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\default_precision.obj`:
664698 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
665699 BIG-NEXT: debug stream: 45, # files: 20, has ec info: false
700 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
666701 BIG-NEXT: Mod 0033 | Name: `Import:KERNEL32.dll`:
667702 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\um\x86\kernel32.lib`:
668703 BIG-NEXT: debug stream: 47, # files: 0, has ec info: false
704 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
669705 BIG-NEXT: Mod 0034 | Name: `KERNEL32.dll`:
670706 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\um\x86\kernel32.lib`:
671707 BIG-NEXT: debug stream: 46, # files: 0, has ec info: false
708 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
672709 BIG-NEXT: Mod 0035 | Name: `Import:VCRUNTIME140.dll`:
673710 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\vcruntime.lib`:
674711 BIG-NEXT: debug stream: 49, # files: 0, has ec info: false
712 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
675713 BIG-NEXT: Mod 0036 | Name: `VCRUNTIME140.dll`:
676714 BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\vcruntime.lib`:
677715 BIG-NEXT: debug stream: 48, # files: 0, has ec info: false
716 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
678717 BIG-NEXT: Mod 0037 | Name: `Import:api-ms-win-crt-stdio-l1-1-0.dll`:
679718 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
680719 BIG-NEXT: debug stream: 59, # files: 0, has ec info: false
720 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
681721 BIG-NEXT: Mod 0038 | Name: `api-ms-win-crt-stdio-l1-1-0.dll`:
682722 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
683723 BIG-NEXT: debug stream: 58, # files: 0, has ec info: false
724 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
684725 BIG-NEXT: Mod 0039 | Name: `Import:api-ms-win-crt-runtime-l1-1-0.dll`:
685726 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
686727 BIG-NEXT: debug stream: 57, # files: 0, has ec info: false
728 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
687729 BIG-NEXT: Mod 0040 | Name: `api-ms-win-crt-runtime-l1-1-0.dll`:
688730 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
689731 BIG-NEXT: debug stream: 56, # files: 0, has ec info: false
732 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
690733 BIG-NEXT: Mod 0041 | Name: `Import:api-ms-win-crt-math-l1-1-0.dll`:
691734 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
692735 BIG-NEXT: debug stream: 55, # files: 0, has ec info: false
736 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
693737 BIG-NEXT: Mod 0042 | Name: `api-ms-win-crt-math-l1-1-0.dll`:
694738 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
695739 BIG-NEXT: debug stream: 54, # files: 0, has ec info: false
740 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
696741 BIG-NEXT: Mod 0043 | Name: `Import:api-ms-win-crt-locale-l1-1-0.dll`:
697742 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
698743 BIG-NEXT: debug stream: 53, # files: 0, has ec info: false
744 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
699745 BIG-NEXT: Mod 0044 | Name: `api-ms-win-crt-locale-l1-1-0.dll`:
700746 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
701747 BIG-NEXT: debug stream: 52, # files: 0, has ec info: false
748 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
702749 BIG-NEXT: Mod 0045 | Name: `Import:api-ms-win-crt-heap-l1-1-0.dll`:
703750 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
704751 BIG-NEXT: debug stream: 51, # files: 0, has ec info: false
752 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
705753 BIG-NEXT: Mod 0046 | Name: `api-ms-win-crt-heap-l1-1-0.dll`:
706754 BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
707755 BIG-NEXT: debug stream: 50, # files: 0, has ec info: false
756 BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
708757 BIG-NEXT: Mod 0047 | Name: `* Linker *`:
709758 BIG-NEXT: Obj: ``:
710759 BIG-NEXT: debug stream: 60, # files: 0, has ec info: false
760 BIG-NEXT: pdb file ni: 55 `{{.*test.pdb}}`, src file ni: 0 ``
711761 BIG: Files
712762 BIG-NEXT: ============================================================
713763 BIG-NEXT: Mod 0000 | `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
417417 P.formatLine(" debug stream: {0}, # files: {1}, has ec info: {2}",
418418 Modi.getModuleStreamIndex(), Modi.getNumberOfFiles(),
419419 Modi.hasECInfo());
420 StringRef PdbFilePath =
421 Err(Stream.getECName(Modi.getPdbFilePathNameIndex()));
422 StringRef SrcFilePath =
423 Err(Stream.getECName(Modi.getSourceFileNameIndex()));
424 P.formatLine(" pdb file ni: {0} `{1}`, src file ni: {2} `{3}`",
425 Modi.getPdbFilePathNameIndex(), PdbFilePath,
426 Modi.getSourceFileNameIndex(), SrcFilePath);
420427 }
421428 return Error::success();
422429 }