[lld] r307571 - Resubmit "Add pdb-diff test."

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 10 12:16:49 PDT 2017


Author: zturner
Date: Mon Jul 10 12:16:49 2017
New Revision: 307571

URL: http://llvm.org/viewvc/llvm-project?rev=307571&view=rev
Log:
Resubmit "Add pdb-diff test."

This was originally reverted because of two issues.
  1) Printing ANSI color escape codes even when outputting to
     a file
  2) Module name comparisons were failing when comparing a PDB
     generated on one machine to a PDB generated on another
     machine.

I attempted to fix #2 by adding command line options which let
you specify prefixes to strip from the beginning of embedded
paths, which effectively lets us specify a path to "base" each
PDB from and only compare the parts under the base.  But this is
tricky because PDB paths always use Windows path syntax, even
when they are created on non-Windows hosts.  A problem still
existed when constructing the prefix to strip, where we were
accidentally using a host-specific path separator instead of
a Windows path separator.

This resubmission fixes the issue on Linux (and I have verified
that the test now passes on Linux).

Added:
    lld/trunk/test/COFF/pdb-diff.test

Added: lld/trunk/test/COFF/pdb-diff.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb-diff.test?rev=307571&view=auto
==============================================================================
--- lld/trunk/test/COFF/pdb-diff.test (added)
+++ lld/trunk/test/COFF/pdb-diff.test Mon Jul 10 12:16:49 2017
@@ -0,0 +1,212 @@
+This test verifies that we produce PDBs compatible with MSVC in various ways.
+We check in a cl-generated object file, PDB, and original source which serve
+as the "baseline" for us to measure against.  Then we link the same object
+file with LLD and compare the two PDBs.  Since the baseline object file and
+PDB are already checked in, we just run LLD on the object file.
+
+RUN: lld-link /debug /pdb:%T/pdb-diff-lld.pdb /nodefaultlib /entry:main %S/Inputs/pdb-diff.obj
+RUN: llvm-pdbutil diff -result -values=false -left-bin-root=%S -right-bin-root=D:/src/llvm-mono/lld/test/COFF/ %T/pdb-diff-lld.pdb %S/Inputs/pdb-diff-cl.pdb | FileCheck %s
+
+CHECK:        ----------------------
+CHECK-NEXT:   |  MSF Super Block   |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   |           File |   |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   |     Block Size | I |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   |    Block Count |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   |      Unknown 1 | I |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   | Directory Size |
+CHECK-NEXT:   |----------------+---|
+CHECK-NEXT:   ------------------------------------
+CHECK-NEXT:   |         Stream Directory         |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                         File |   |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                 Stream Count | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |            Old MSF Directory | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                   PDB Stream | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                   TPI Stream | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                   DBI Stream | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                   IPI Stream | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                 New FPO Data | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |          Section Header Data | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |        Named Stream "/names" | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |     Named Stream "/LinkInfo" | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   | Module "Inputs\pdb-diff.obj" | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |          Module "* Linker *" | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                     TPI Hash | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                     IPI Hash | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |           Global Symbol Hash | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |           Public Symbol Hash | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |        Public Symbol Records | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   ------------------------------------
+CHECK-NEXT:   |           String Table           |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                         File |   |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |            Number of Strings | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                 Hash Version | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                    Byte Size |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                    Signature | I |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |                Empty Strings |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |  {{.*}}pdb-diff.cpp | {{[EI]}} |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |  $T0 $ebp = $...p $T0 8 + =  | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   |  d:\src\llvm-...er internal) | D |
+CHECK-NEXT:   |------------------------------+---|
+CHECK-NEXT:   ----------------------------
+CHECK-NEXT:   |        PDB Stream        |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |                 File |   |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |          Stream Size |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |                  Age | I |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |                 Guid | D |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |            Signature | D |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |              Version | I |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |       Features (set) | I |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |              Feature | I |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |    Named Stream Size |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |  Named Streams (map) | {{[EI]}} |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |               /names | {{[EI]}} |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   |            /LinkInfo | {{[EI]}} |
+CHECK-NEXT:   |----------------------+---|
+CHECK-NEXT:   ----------------------------------------------
+CHECK-NEXT:   |                 DBI Stream                 |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                   File |   |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            Dbi Version | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                    Age | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                Machine | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                  Flags | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            Build Major | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            Build Minor | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           Build Number | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        PDB DLL Version | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           PDB DLL RBLD | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                              DBG (FPO) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        DBG (Exception) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            DBG (Fixup) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        DBG (OmapToSrc) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                      DBG (OmapFromSrc) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                       DBG (SectionHdr) | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                      DBG (TokenRidMap) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            DBG (Xdata) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            DBG (Pdata) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           DBG (NewFPO) | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                   DBG (SectionHdrOrig) | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                         Globals Stream | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                         Publics Stream | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                         Symbol Records | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                             Has CTypes | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                Is Incrementally Linked | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                            Is Stripped | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           Module Count | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                      Source File Count | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   | Module "Inputs\pdb-diff.obj" |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                 - Modi | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - Obj File Name | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                         - Debug Stream | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - C11 Byte Size | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - C13 Byte Size | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           - # of files | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                  - Pdb File Path Index | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |               - Source File Name Index | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                     - Symbol Byte Size | D |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |            Module "* Linker *"             |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                                 - Modi | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - Obj File Name | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                         - Debug Stream | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - C11 Byte Size | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                        - C13 Byte Size | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                           - # of files | I |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                  - Pdb File Path Index | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |               - Source File Name Index | {{[EI]}} |
+CHECK-NEXT:   |----------------------------------------+---|
+CHECK-NEXT:   |                     - Symbol Byte Size | D |
+CHECK-NEXT:   |----------------------------------------+---|
+
+




More information about the llvm-commits mailing list