[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