[lld] r327895 - Support embedding natvis files in PDBs.
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 20 03:50:20 PDT 2018
On Tue, Mar 20, 2018 at 11:19 AM, Hans Wennborg <hans at chromium.org> wrote:
> On Mon, Mar 19, 2018 at 9:40 PM, Zachary Turner via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>> Is there anything you can do to help figure out why this REQUIRES line is
>> evaluating to the wrong value?
>>
>> It starts from lld/test/lit.site.cfg.py.in, which has this line:
>>
>> config.have_dia_sdk = "@LLVM_ENABLE_DIA_SDK@"
>>
>> That *should* get processed at CMake time and turns into
>> <output_dir>/tools/lld/test/lit.site.cfg.py:
>>
>> config.have_dia_sdk = "OFF"
>>
>> Then, in lld/test/lit.cfg.py, we have this block:
>>
>> if config.have_dia_sdk:
>> config.available_features.add("diasdk")
>>
>> which should get ignored on this bot.
>>
>> But this line is executing, so it makes me think the pre-processing step is
>> setting the value to "ON", which would make no sense to me.
>>
>> If you can offer some insight into why this might be happening that would
>> help.
>
> In this case, config.have_dia_sdk was set to "0", i.e. a string value
> which converts to true :-)
>
> I see this was modeled after config.llvm_libxml2_enabled which is also
> a string. I've fixed that in r327964. Dropping the quotes around
> @LLVM_ENABLE_DIA_SDK@ in your patch should make it work.
Actually, my change didn't work because the libxml2 cmake var doesn't
expand to 0 or 1: it expands to nothing or 1.
I've reverted my change. I suppose the easiest way to make yours work
is to check for '1' in the if-statement like the code for
llvm_libxml2_enabled does.
>> On Mon, Mar 19, 2018 at 1:32 PM Zachary Turner <zturner at google.com> wrote:
>>>
>>> Hmm, this test should not even be running on these platforms due to the
>>> `REQUIRES: diasdk` line.
>>>
>>> On Mon, Mar 19, 2018 at 1:29 PM Galina Kistanova <gkistanova at gmail.com>
>>> wrote:
>>>>
>>>> Hello Zachary,
>>>>
>>>> This commit added broken test one of our builders:
>>>>
>>>> http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast
>>>> . . .
>>>> Failing Tests (2):
>>>> . . .
>>>> lld :: COFF/pdb-natvis.test
>>>>
>>>> Please have a look?
>>>>
>>>> The builder was already red and did not send notifications on this.
>>>>
>>>> Thanks
>>>>
>>>>
>>>> Galina
>>>>
>>>> On Mon, Mar 19, 2018 at 12:53 PM, Zachary Turner via llvm-commits
>>>> <llvm-commits at lists.llvm.org> wrote:
>>>>>
>>>>> Author: zturner
>>>>> Date: Mon Mar 19 12:53:51 2018
>>>>> New Revision: 327895
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=327895&view=rev
>>>>> Log:
>>>>> Support embedding natvis files in PDBs.
>>>>>
>>>>> Natvis is a debug language supported by Visual Studio for
>>>>> specifying custom visualizers. The /NATVIS option is an
>>>>> undocumented link.exe flag which will take a .natvis file
>>>>> and "inject" it into the PDB. This way, you can ship the
>>>>> debug visualizers for a program along with the PDB, which
>>>>> is very useful for postmortem debugging.
>>>>>
>>>>> This is implemented by adding a new "named stream" to the
>>>>> PDB with a special name of /src/files/<natvis file name>
>>>>> and simply copying the contents of the xml into this file.
>>>>>
>>>>> Additionally, we need to emit a single stream named
>>>>> /src/headerblock which contains a hash table of embedded
>>>>> files to records describing them.
>>>>>
>>>>> This patch adds this functionality, including the /NATVIS
>>>>> option to lld-link.
>>>>>
>>>>> Differential Revision: https://reviews.llvm.org/D44328
>>>>>
>>>>> Added:
>>>>> lld/trunk/test/COFF/Inputs/generic.yaml
>>>>> lld/trunk/test/COFF/Inputs/natvis-1.natvis
>>>>> lld/trunk/test/COFF/Inputs/natvis-2.natvis
>>>>> lld/trunk/test/COFF/Inputs/natvis-3.natvis
>>>>> lld/trunk/test/COFF/pdb-natvis.test
>>>>> Modified:
>>>>> lld/trunk/COFF/Config.h
>>>>> lld/trunk/COFF/Driver.cpp
>>>>> lld/trunk/COFF/Options.td
>>>>> lld/trunk/COFF/PDB.cpp
>>>>> lld/trunk/test/lit.cfg.py
>>>>> lld/trunk/test/lit.site.cfg.py.in
>>>>>
>>>>> Modified: lld/trunk/COFF/Config.h
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Config.h?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/Config.h (original)
>>>>> +++ lld/trunk/COFF/Config.h Mon Mar 19 12:53:51 2018
>>>>> @@ -99,6 +99,7 @@ struct Configuration {
>>>>> bool DebugGHashes = false;
>>>>> bool ShowTiming = false;
>>>>> unsigned DebugTypes = static_cast<unsigned>(DebugType::None);
>>>>> + std::vector<std::string> NatvisFiles;
>>>>> llvm::SmallString<128> PDBPath;
>>>>> std::vector<llvm::StringRef> Argv;
>>>>>
>>>>>
>>>>> Modified: lld/trunk/COFF/Driver.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/Driver.cpp (original)
>>>>> +++ lld/trunk/COFF/Driver.cpp Mon Mar 19 12:53:51 2018
>>>>> @@ -933,9 +933,12 @@ void LinkerDriver::link(ArrayRef<const c
>>>>>
>>>>> // Handle /pdb
>>>>> bool ShouldCreatePDB = Args.hasArg(OPT_debug, OPT_debug_ghash);
>>>>> - if (ShouldCreatePDB)
>>>>> + if (ShouldCreatePDB) {
>>>>> if (auto *Arg = Args.getLastArg(OPT_pdb))
>>>>> Config->PDBPath = Arg->getValue();
>>>>> + if (Args.hasArg(OPT_natvis))
>>>>> + Config->NatvisFiles = Args.getAllArgValues(OPT_natvis);
>>>>> + }
>>>>>
>>>>> // Handle /noentry
>>>>> if (Args.hasArg(OPT_noentry)) {
>>>>>
>>>>> Modified: lld/trunk/COFF/Options.td
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Options.td?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/Options.td (original)
>>>>> +++ lld/trunk/COFF/Options.td Mon Mar 19 12:53:51 2018
>>>>> @@ -45,6 +45,7 @@ def nodefaultlib : P<"nodefaultlib", "Re
>>>>> def opt : P<"opt", "Control optimizations">;
>>>>> def order : P<"order", "Put functions in order">;
>>>>> def out : P<"out", "Path to file to write output">;
>>>>> +def natvis : P<"natvis", "Path to natvis file to embed in the PDB">;
>>>>> def pdb : P<"pdb", "PDB file path">;
>>>>> def section : P<"section", "Specify section attributes">;
>>>>> def stack : P<"stack", "Size of the stack">;
>>>>> @@ -162,7 +163,6 @@ def delay : QF<"delay">;
>>>>> def errorreport : QF<"errorreport">;
>>>>> def idlout : QF<"idlout">;
>>>>> def maxilksize : QF<"maxilksize">;
>>>>> -def natvis : QF<"natvis">;
>>>>> def pdbaltpath : QF<"pdbaltpath">;
>>>>> def tlbid : QF<"tlbid">;
>>>>> def tlbout : QF<"tlbout">;
>>>>>
>>>>> Modified: lld/trunk/COFF/PDB.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/PDB.cpp?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/PDB.cpp (original)
>>>>> +++ lld/trunk/COFF/PDB.cpp Mon Mar 19 12:53:51 2018
>>>>> @@ -90,6 +90,9 @@ public:
>>>>> /// Emit the basic PDB structure: initial streams, headers, etc.
>>>>> void initialize(const llvm::codeview::DebugInfo &BuildId);
>>>>>
>>>>> + /// Add natvis files specified on the command line.
>>>>> + void addNatvisFiles();
>>>>> +
>>>>> /// Link CodeView from each object file in the symbol table into the
>>>>> PDB.
>>>>> void addObjectsToPDB();
>>>>>
>>>>> @@ -961,6 +964,18 @@ void PDBLinker::addObjectsToPDB() {
>>>>> }
>>>>> }
>>>>>
>>>>> +void PDBLinker::addNatvisFiles() {
>>>>> + for (StringRef File : Config->NatvisFiles) {
>>>>> + ErrorOr<std::unique_ptr<MemoryBuffer>> DataOrErr =
>>>>> + MemoryBuffer::getFile(File);
>>>>> + if (!DataOrErr) {
>>>>> + warn("Cannot open input file: " + File);
>>>>> + continue;
>>>>> + }
>>>>> + Builder.addInjectedSource(File, std::move(*DataOrErr));
>>>>> + }
>>>>> +}
>>>>> +
>>>>> static void addCommonLinkerModuleSymbols(StringRef Path,
>>>>>
>>>>> pdb::DbiModuleDescriptorBuilder &Mod,
>>>>> BumpPtrAllocator &Allocator) {
>>>>> @@ -1041,6 +1056,7 @@ void coff::createPDB(SymbolTable *Symtab
>>>>> PDB.initialize(BuildId);
>>>>> PDB.addObjectsToPDB();
>>>>> PDB.addSections(OutputSections, SectionTable);
>>>>> + PDB.addNatvisFiles();
>>>>>
>>>>> ScopedTimer T2(DiskCommitTimer);
>>>>> PDB.commit();
>>>>>
>>>>> Added: lld/trunk/test/COFF/Inputs/generic.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/generic.yaml?rev=327895&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/generic.yaml (added)
>>>>> +++ lld/trunk/test/COFF/Inputs/generic.yaml Mon Mar 19 12:53:51 2018
>>>>> @@ -0,0 +1,282 @@
>>>>> +--- !COFF
>>>>> +header:
>>>>> + Machine: IMAGE_FILE_MACHINE_AMD64
>>>>> + Characteristics: [ ]
>>>>> +sections:
>>>>> + - Name: .text
>>>>> + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
>>>>> IMAGE_SCN_MEM_READ ]
>>>>> + Alignment: 16
>>>>> + SectionData:
>>>>> 4883EC1831C0C7442414000000004889542408894C24044883C418C3
>>>>> + - Name: .data
>>>>> + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>>>>> + Alignment: 4
>>>>> + SectionData: ''
>>>>> + - Name: .bss
>>>>> + Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>>>>> + Alignment: 4
>>>>> + SectionData: ''
>>>>> + - Name: .xdata
>>>>> + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ ]
>>>>> + Alignment: 4
>>>>> + SectionData: '0104010004220000'
>>>>> + - Name: .drectve
>>>>> + Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
>>>>> + Alignment: 1
>>>>> + SectionData:
>>>>> 202F44454641554C544C49423A6C6962636D742E6C6962202F44454641554C544C49423A6F6C646E616D65732E6C6962
>>>>> + - Name: '.debug$S'
>>>>> + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
>>>>> + Alignment: 4
>>>>> + SectionData:
>>>>> 04000000F10000002F0000002D003C1101000000D0000700000000000000581B000000000000636C616E672076657273696F6E20372E302E30200000F1000000760000002A0047110000000000000000000000001C000000000000000000000003100000000000000000006D61696E000D003E117400000001006172676300120045114F0100000400000017000000000005000D003E110010000001006172677600120045114F01000008000000170000000000050002004F110000F20000002800000000000000000000001C00000000000000020000001C00000000000000020000001700000003000000F40000001800000001000000100139E9A066A1995A99DD01F5A392F26D7C0000F30000003000000000443A5C7372635C6C6C766D6275696C645C636C5C52656C656173655C7836345C67656E657269632E63707000000000
>>>>> + Subsections:
>>>>> + - !Symbols
>>>>> + Records:
>>>>> + - Kind: S_COMPILE3
>>>>> + Compile3Sym:
>>>>> + Flags: [ ]
>>>>> + Machine: X64
>>>>> + FrontendMajor: 7
>>>>> + FrontendMinor: 0
>>>>> + FrontendBuild: 0
>>>>> + FrontendQFE: 0
>>>>> + BackendMajor: 7000
>>>>> + BackendMinor: 0
>>>>> + BackendBuild: 0
>>>>> + BackendQFE: 0
>>>>> + Version: 'clang version 7.0.0 '
>>>>> + - !Symbols
>>>>> + Records:
>>>>> + - Kind: S_GPROC32_ID
>>>>> + ProcSym:
>>>>> + CodeSize: 28
>>>>> + DbgStart: 0
>>>>> + DbgEnd: 0
>>>>> + FunctionType: 4099
>>>>> + Flags: [ ]
>>>>> + DisplayName: main
>>>>> + - Kind: S_LOCAL
>>>>> + LocalSym:
>>>>> + Type: 116
>>>>> + Flags: [ IsParameter ]
>>>>> + VarName: argc
>>>>> + - Kind: S_DEFRANGE_REGISTER_REL
>>>>> + DefRangeRegisterRelSym:
>>>>> + Register: 335
>>>>> + Flags: 0
>>>>> + BasePointerOffset: 4
>>>>> + Range:
>>>>> + OffsetStart: 23
>>>>> + ISectStart: 0
>>>>> + Range: 5
>>>>> + Gaps:
>>>>> + - Kind: S_LOCAL
>>>>> + LocalSym:
>>>>> + Type: 4096
>>>>> + Flags: [ IsParameter ]
>>>>> + VarName: argv
>>>>> + - Kind: S_DEFRANGE_REGISTER_REL
>>>>> + DefRangeRegisterRelSym:
>>>>> + Register: 335
>>>>> + Flags: 0
>>>>> + BasePointerOffset: 8
>>>>> + Range:
>>>>> + OffsetStart: 23
>>>>> + ISectStart: 0
>>>>> + Range: 5
>>>>> + Gaps:
>>>>> + - Kind: S_PROC_ID_END
>>>>> + ScopeEndSym:
>>>>> + - !Lines
>>>>> + CodeSize: 28
>>>>> + Flags: [ ]
>>>>> + RelocOffset: 0
>>>>> + RelocSegment: 0
>>>>> + Blocks:
>>>>> + - FileName:
>>>>> 'D:\src\llvmbuild\cl\Release\x64\generic.cpp'
>>>>> + Lines:
>>>>> + - Offset: 0
>>>>> + LineStart: 2
>>>>> + IsStatement: false
>>>>> + EndDelta: 0
>>>>> + - Offset: 23
>>>>> + LineStart: 3
>>>>> + IsStatement: false
>>>>> + EndDelta: 0
>>>>> + Columns:
>>>>> + - !FileChecksums
>>>>> + Checksums:
>>>>> + - FileName:
>>>>> 'D:\src\llvmbuild\cl\Release\x64\generic.cpp'
>>>>> + Kind: MD5
>>>>> + Checksum: 39E9A066A1995A99DD01F5A392F26D7C
>>>>> + - !StringTable
>>>>> + Strings:
>>>>> + - 'D:\src\llvmbuild\cl\Release\x64\generic.cpp'
>>>>> + - ''
>>>>> + - ''
>>>>> + - ''
>>>>> + Relocations:
>>>>> + - VirtualAddress: 100
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_SECREL
>>>>> + - VirtualAddress: 104
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_SECTION
>>>>> + - VirtualAddress: 139
>>>>> + SymbolName: .text
>>>>> + Type: IMAGE_REL_AMD64_SECREL
>>>>> + - VirtualAddress: 143
>>>>> + SymbolName: .text
>>>>> + Type: IMAGE_REL_AMD64_SECTION
>>>>> + - VirtualAddress: 174
>>>>> + SymbolName: .text
>>>>> + Type: IMAGE_REL_AMD64_SECREL
>>>>> + - VirtualAddress: 178
>>>>> + SymbolName: .text
>>>>> + Type: IMAGE_REL_AMD64_SECTION
>>>>> + - VirtualAddress: 196
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_SECREL
>>>>> + - VirtualAddress: 200
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_SECTION
>>>>> + - Name: '.debug$T'
>>>>> + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
>>>>> + Alignment: 4
>>>>> + SectionData:
>>>>> 040000000A000210700600000C0001000E0001120200000074000000001000000E0008107400000000000200011000001200011600000000021000006D61696E00F3F2F1
>>>>> + Types:
>>>>> + - Kind: LF_POINTER
>>>>> + Pointer:
>>>>> + ReferentType: 1648
>>>>> + Attrs: 65548
>>>>> + - Kind: LF_ARGLIST
>>>>> + ArgList:
>>>>> + ArgIndices: [ 116, 4096 ]
>>>>> + - Kind: LF_PROCEDURE
>>>>> + Procedure:
>>>>> + ReturnType: 116
>>>>> + CallConv: NearC
>>>>> + Options: [ None ]
>>>>> + ParameterCount: 2
>>>>> + ArgumentList: 4097
>>>>> + - Kind: LF_FUNC_ID
>>>>> + FuncId:
>>>>> + ParentScope: 0
>>>>> + FunctionType: 4098
>>>>> + Name: main
>>>>> + - Name: .pdata
>>>>> + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ ]
>>>>> + Alignment: 4
>>>>> + SectionData: 000000001C00000000000000
>>>>> + Relocations:
>>>>> + - VirtualAddress: 0
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_ADDR32NB
>>>>> + - VirtualAddress: 4
>>>>> + SymbolName: main
>>>>> + Type: IMAGE_REL_AMD64_ADDR32NB
>>>>> + - VirtualAddress: 8
>>>>> + SymbolName: .xdata
>>>>> + Type: IMAGE_REL_AMD64_ADDR32NB
>>>>> +symbols:
>>>>> + - Name: .text
>>>>> + Value: 0
>>>>> + SectionNumber: 1
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 28
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 594448369
>>>>> + Number: 1
>>>>> + - Name: .data
>>>>> + Value: 0
>>>>> + SectionNumber: 2
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 0
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 0
>>>>> + Number: 2
>>>>> + - Name: .bss
>>>>> + Value: 0
>>>>> + SectionNumber: 3
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 0
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 0
>>>>> + Number: 3
>>>>> + - Name: .xdata
>>>>> + Value: 0
>>>>> + SectionNumber: 4
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 8
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 1192424177
>>>>> + Number: 4
>>>>> + - Name: .drectve
>>>>> + Value: 0
>>>>> + SectionNumber: 5
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 48
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 149686238
>>>>> + Number: 5
>>>>> + - Name: '.debug$S'
>>>>> + Value: 0
>>>>> + SectionNumber: 6
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 324
>>>>> + NumberOfRelocations: 8
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 4196717433
>>>>> + Number: 6
>>>>> + - Name: '.debug$T'
>>>>> + Value: 0
>>>>> + SectionNumber: 7
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 68
>>>>> + NumberOfRelocations: 0
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 485351071
>>>>> + Number: 7
>>>>> + - Name: .pdata
>>>>> + Value: 0
>>>>> + SectionNumber: 8
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_NULL
>>>>> + StorageClass: IMAGE_SYM_CLASS_STATIC
>>>>> + SectionDefinition:
>>>>> + Length: 12
>>>>> + NumberOfRelocations: 3
>>>>> + NumberOfLinenumbers: 0
>>>>> + CheckSum: 722740324
>>>>> + Number: 8
>>>>> + - Name: main
>>>>> + Value: 0
>>>>> + SectionNumber: 1
>>>>> + SimpleType: IMAGE_SYM_TYPE_NULL
>>>>> + ComplexType: IMAGE_SYM_DTYPE_FUNCTION
>>>>> + StorageClass: IMAGE_SYM_CLASS_EXTERNAL
>>>>> +...
>>>>>
>>>>> Added: lld/trunk/test/COFF/Inputs/natvis-1.natvis
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/natvis-1.natvis?rev=327895&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/natvis-1.natvis (added)
>>>>> +++ lld/trunk/test/COFF/Inputs/natvis-1.natvis Mon Mar 19 12:53:51 2018
>>>>> @@ -0,0 +1 @@
>>>>> +1st Natvis Test
>>>>>
>>>>> Added: lld/trunk/test/COFF/Inputs/natvis-2.natvis
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/natvis-2.natvis?rev=327895&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/natvis-2.natvis (added)
>>>>> +++ lld/trunk/test/COFF/Inputs/natvis-2.natvis Mon Mar 19 12:53:51 2018
>>>>> @@ -0,0 +1 @@
>>>>> +Second Natvis Test
>>>>>
>>>>> Added: lld/trunk/test/COFF/Inputs/natvis-3.natvis
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/natvis-3.natvis?rev=327895&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/natvis-3.natvis (added)
>>>>> +++ lld/trunk/test/COFF/Inputs/natvis-3.natvis Mon Mar 19 12:53:51 2018
>>>>> @@ -0,0 +1 @@
>>>>> +Third Natvis Test
>>>>>
>>>>> Added: lld/trunk/test/COFF/pdb-natvis.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb-natvis.test?rev=327895&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/pdb-natvis.test (added)
>>>>> +++ lld/trunk/test/COFF/pdb-natvis.test Mon Mar 19 12:53:51 2018
>>>>> @@ -0,0 +1,26 @@
>>>>> +REQUIRES: diasdk
>>>>> +
>>>>> +RUN: yaml2obj %p/Inputs/generic.yaml > %t.obj
>>>>> +RUN: lld-link /DEBUG %t.obj /nodefaultlib /entry:main
>>>>> /NATVIS:%p/Inputs/natvis-1.natvis \
>>>>> +RUN: /NATVIS:%p/Inputs/natvis-2.natvis
>>>>> /NATVIS:%p/Inputs/natvis-3.natvis /OUT:%t.exe \
>>>>> +RUN: /PDB:%t.pdb
>>>>> +RUN: llvm-pdbutil pretty -injected-sources -injected-source-content
>>>>> %t.pdb | FileCheck \
>>>>> +RUN: --check-prefix=CHECK-FIRST %s
>>>>> +RUN: llvm-pdbutil pretty -injected-sources -injected-source-content
>>>>> %t.pdb | FileCheck \
>>>>> +RUN: --check-prefix=CHECK-SECOND %s
>>>>> +RUN: llvm-pdbutil pretty -injected-sources -injected-source-content
>>>>> %t.pdb | FileCheck \
>>>>> +RUN: --check-prefix=CHECK-THIRD %s
>>>>> +
>>>>> +RUN: lld-link /DEBUG %t.obj /nodefaultlib /entry:main
>>>>> /NATVIS:%p/Inputs/test2.natvis \
>>>>> +RUN: /OUT:%t.exe /PDB:%t.pdb 2>&1 | FileCheck
>>>>> --check-prefix=CHECK-MISSING %s
>>>>> +
>>>>> +CHECK-FIRST: {{.*}}natvis-1.natvis (16 bytes): obj=<null>,
>>>>> vname={{.*}}natvis-1.natvis, crc=355285096, compression=None
>>>>> +CHECK-FIRST-NEXT: 1st Natvis Test
>>>>> +
>>>>> +CHECK-SECOND: {{.*}}natvis-2.natvis (19 bytes): obj=<null>,
>>>>> vname={{.*}}natvis-2.natvis, crc=4252640062, compression=None
>>>>> +CHECK-SECOND-NEXT: Second Natvis Test
>>>>> +
>>>>> +CHECK-THIRD: {{.*}}natvis-3.natvis (18 bytes): obj=<null>,
>>>>> vname={{.*}}natvis-3.natvis, crc=2069719849, compression=None
>>>>> +CHECK-THIRD-NEXT: Third Natvis Test
>>>>> +
>>>>> +CHECK-MISSING: Cannot open input file: {{.*}}test2.natvis
>>>>> \ No newline at end of file
>>>>>
>>>>> Modified: lld/trunk/test/lit.cfg.py
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/lit.cfg.py?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/lit.cfg.py (original)
>>>>> +++ lld/trunk/test/lit.cfg.py Mon Mar 19 12:53:51 2018
>>>>> @@ -85,6 +85,9 @@ if (lit.util.which('cvtres', config.envi
>>>>> if (config.llvm_libxml2_enabled == '1'):
>>>>> config.available_features.add('libxml2')
>>>>>
>>>>> +if config.have_dia_sdk:
>>>>> + config.available_features.add("diasdk")
>>>>> +
>>>>> tar_executable = lit.util.which('tar', config.environment['PATH'])
>>>>> if tar_executable:
>>>>> tar_version = subprocess.Popen(
>>>>>
>>>>> Modified: lld/trunk/test/lit.site.cfg.py.in
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/lit.site.cfg.py.in?rev=327895&r1=327894&r2=327895&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/lit.site.cfg.py.in (original)
>>>>> +++ lld/trunk/test/lit.site.cfg.py.in Mon Mar 19 12:53:51 2018
>>>>> @@ -1,5 +1,6 @@
>>>>> @LIT_SITE_CFG_IN_HEADER@
>>>>>
>>>>> +config.have_dia_sdk = "@LLVM_ENABLE_DIA_SDK@"
>>>>> config.llvm_src_root = "@LLVM_SOURCE_DIR@"
>>>>> config.llvm_obj_root = "@LLVM_BINARY_DIR@"
>>>>> config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>
>>>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
More information about the llvm-commits
mailing list