llvm/llvm/test/tools/llvm-readobj/COFF/codeview-linetables.test

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; The following two object files were generated using the following command:
;   D:\> cl /Z7 /c source.c
; with the following contents of D:\source.c:
;   void z(void);
;
;   void x(void) {
;     z();
;   }
;
;   void y(void) {
;     z();
;   }
;
;   void f(void) {
;     x();
;     y();
;     z();
;   }
; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \
RUN:   | FileCheck %s -check-prefix MFUN32
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \
RUN:   | FileCheck %s -check-prefix MFUN32
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \
RUN:   | FileCheck %s -check-prefix MFUN64
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \
RUN:   | FileCheck %s -check-prefix MFUN64

MFUN32:      CodeViewDebugInfo [
MFUN32-NEXT:   Section: .debug$S (2)
MFUN32-NEXT:   Magic: 0x4
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: Symbols (0xF1)
MFUN32-NEXT:     SubSectionSize: 0x52
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: FrameData (0xF5)
MFUN32-NEXT:     SubSectionSize: 0x24
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: Symbols (0xF1)
MFUN32-NEXT:     SubSectionSize: 0x4B
MFUN32:          GlobalProcIdSym {
MFUN32:            CodeSize: 0xA
MFUN32:            DisplayName: x
MFUN32:            LinkageName: _x
MFUN32:          }
MFUN32:          ProcEnd
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: Lines (0xF2)
MFUN32-NEXT:     SubSectionSize: 0x30
MFUN32:          LinkageName: _x
MFUN32-NEXT:   ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: FrameData (0xF5)
MFUN32-NEXT:     SubSectionSize: 0x24
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: Symbols (0xF1)
MFUN32-NEXT:     SubSectionSize: 0x4B
MFUN32:          GlobalProcIdSym {
MFUN32:            CodeSize: 0xA
MFUN32:            DisplayName: y
MFUN32:            LinkageName: _y
MFUN32:          }
MFUN32:          ProcEnd
MFUN32:        ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: Lines (0xF2)
MFUN32-NEXT:     SubSectionSize: 0x30
MFUN32:          LinkageName: _y
MFUN32-NEXT:   ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: FrameData (0xF5)
MFUN32-NEXT:     SubSectionSize: 0x24
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: Symbols (0xF1)
MFUN32-NEXT:     SubSectionSize: 0x4B
MFUN32:          GlobalProcIdSym {
MFUN32:            CodeSize: 0x14
MFUN32:            DisplayName: f
MFUN32:            LinkageName: _f
MFUN32:          }
MFUN32:          ProcEnd
MFUN32:        ]
MFUN32:        Subsection [
MFUN32-NEXT:     SubSectionType: Lines (0xF2)
MFUN32-NEXT:     SubSectionSize: 0x40
MFUN32:          LinkageName: _f
MFUN32-NEXT:   ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: FileChecksums (0xF4)
MFUN32-NEXT:     SubSectionSize: 0x18
MFUN32:        ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: StringTable (0xF3)
MFUN32-NEXT:     SubSectionSize: 0x46
MFUN32:        ]
MFUN32-NEXT:   Subsection [
MFUN32-NEXT:     SubSectionType: Symbols (0xF1)
MFUN32-NEXT:     SubSectionSize: 0x8
MFUN32:        ]
MFUN32-NEXT:   FunctionLineTable [
MFUN32-NEXT      LinkageName: _x
MFUN32-NEXT      Flags: 0x0
MFUN32-NEXT      CodeSize: 0xA
MFUN32-NEXT      FilenameSegment [
MFUN32-NEXT        Filename: d:\source.c
MFUN32-NEXT        +0x0 [
MFUN32-NEXT          LineNumberStart: 3
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x3 [
MFUN32-NEXT          LineNumberStart: 4
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x8 [
MFUN32-NEXT          LineNumberStart: 5
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT      ]
MFUN32-NEXT    ]
MFUN32-NEXT    FunctionLineTable [
MFUN32-NEXT      LinkageName: _y
MFUN32-NEXT      Flags: 0x0
MFUN32-NEXT      CodeSize: 0xA
MFUN32-NEXT      FilenameSegment [
MFUN32-NEXT        Filename: d:\source.c
MFUN32-NEXT        +0x0 [
MFUN32-NEXT          LineNumberStart: 7
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x3 [
MFUN32-NEXT          LineNumberStart: 8
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x8 [
MFUN32-NEXT          LineNumberStart: 9
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT      ]
MFUN32-NEXT    ]
MFUN32-NEXT    FunctionLineTable [
MFUN32-NEXT      LinkageName: _f
MFUN32-NEXT      Flags: 0x0
MFUN32-NEXT      CodeSize: 0x14
MFUN32-NEXT      FilenameSegment [
MFUN32-NEXT        Filename: d:\source.c
MFUN32-NEXT        +0x0 [
MFUN32-NEXT          LineNumberStart: 11
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x3 [
MFUN32-NEXT          LineNumberStart: 12
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x8 [
MFUN32-NEXT          LineNumberStart: 13
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0xD [
MFUN32-NEXT          LineNumberStart: 14
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT        +0x12 [
MFUN32-NEXT          LineNumberStart: 15
MFUN32-NEXT          LineNumberEndDelta: 0
MFUN32-NEXT          IsStatement: Yes
MFUN32-NEXT        ]
MFUN32-NEXT      ]
MFUN32-NEXT    ]
MFUN32:      ]

MFUN64:      CodeViewDebugInfo [
MFUN64:        Magic: 0x4
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Symbols (0xF1)
MFUN64-NEXT:     SubSectionSize: 0x52
MFUN64:        ]
MFUN64:        Subsection [
MFUN64-NEXT:     SubSectionType: Symbols (0xF1)
MFUN64-NEXT:     SubSectionSize: 0x4B
MFUN64:          GlobalProcIdSym {
MFUN64:            CodeSize: 0xE
MFUN64:            DisplayName: x
MFUN64:            LinkageName: x
MFUN64:          }
MFUN64:          ProcEnd
MFUN64:        ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Lines (0xF2)
MFUN64-NEXT:     SubSectionSize: 0x30
MFUN64:          LinkageName: x
MFUN64-NEXT:   ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Symbols (0xF1)
MFUN64-NEXT:     SubSectionSize: 0x4B
MFUN64:          GlobalProcIdSym {
MFUN64:            CodeSize: 0xE
MFUN64:            DisplayName: y
MFUN64:            LinkageName: y
MFUN64:          }
MFUN64:          ProcEnd
MFUN64:        ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Lines (0xF2)
MFUN64-NEXT:     SubSectionSize: 0x30
MFUN64:          LinkageName: y
MFUN64-NEXT:   ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Symbols (0xF1)
MFUN64-NEXT:     SubSectionSize: 0x4B
MFUN64:          GlobalProcIdSym {
MFUN64:            CodeSize: 0x18
MFUN64:            DisplayName: f
MFUN64:            LinkageName: f
MFUN64:          }
MFUN64:          ProcEnd
MFUN64:        ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Lines (0xF2)
MFUN64-NEXT:     SubSectionSize: 0x40
MFUN64:          LinkageName: f
MFUN64-NEXT:   ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: FileChecksums (0xF4)
MFUN64-NEXT:     SubSectionSize: 0x18
MFUN64:        ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: StringTable (0xF3)
MFUN64-NEXT:     SubSectionSize: 0xD
MFUN64:        ]
MFUN64-NEXT:   Subsection [
MFUN64-NEXT:     SubSectionType: Symbols (0xF1)
MFUN64-NEXT:     SubSectionSize: 0x8
MFUN64:        ]
MFUN64-NEXT:   FunctionLineTable [
MFUN64-NEXT:     LinkageName: x
MFUN64-NEXT:     Flags: 0x0
MFUN64-NEXT:     CodeSize: 0xE
MFUN64-NEXT:     FilenameSegment [
MFUN64-NEXT:       Filename: d:\source.c
MFUN64-NEXT:       +0x0 [
MFUN64-NEXT:         LineNumberStart: 3
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x4 [
MFUN64-NEXT:         LineNumberStart: 4
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x9 [
MFUN64-NEXT:         LineNumberStart: 5
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:     ]
MFUN64-NEXT:   ]
MFUN64-NEXT:   FunctionLineTable [
MFUN64-NEXT:     LinkageName: y
MFUN64-NEXT:     Flags: 0x0
MFUN64-NEXT:     CodeSize: 0xE
MFUN64-NEXT:     FilenameSegment [
MFUN64-NEXT:       Filename: d:\source.c
MFUN64-NEXT:       +0x0 [
MFUN64-NEXT:         LineNumberStart: 7
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x4 [
MFUN64-NEXT:         LineNumberStart: 8
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x9 [
MFUN64-NEXT:         LineNumberStart: 9
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:     ]
MFUN64-NEXT:   ]
MFUN64-NEXT:   FunctionLineTable [
MFUN64-NEXT:     LinkageName: f
MFUN64-NEXT:     Flags: 0x0
MFUN64-NEXT:     CodeSize: 0x18
MFUN64-NEXT:     FilenameSegment [
MFUN64-NEXT:       Filename: d:\source.c
MFUN64-NEXT:       +0x0 [
MFUN64-NEXT:         LineNumberStart: 11
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x4 [
MFUN64-NEXT:         LineNumberStart: 12
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x9 [
MFUN64-NEXT:         LineNumberStart: 13
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0xE [
MFUN64-NEXT:         LineNumberStart: 14
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:       +0x13 [
MFUN64-NEXT:         LineNumberStart: 15
MFUN64-NEXT:         LineNumberEndDelta: 0
MFUN64-NEXT:         IsStatement: Yes
MFUN64-NEXT:       ]
MFUN64-NEXT:     ]
MFUN64-NEXT:   ]
MFUN64:      ]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; The following two object files were generated using the following command:
;   D:\> cl /Z7 /c input.c
; with the following contents of D:\input.c:
;   void g(void);
;
;   void f(void) {
;   #line 1 "one.c"
;     g();
;   #line 2 "two.c"
;     g();
;   #line 7 "one.c"
;     g();
;   }
; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-i368 \
RUN:   | FileCheck %s -check-prefix MFILE32
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-i368 \
RUN:   | FileCheck %s -check-prefix MFILE32
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \
RUN:   | FileCheck %s -check-prefix MFILE64
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \
RUN:   | FileCheck %s -check-prefix MFILE64

MFILE32:      CodeViewDebugInfo [
MFILE32:        Magic: 0x4
MFILE32-NEXT:   Subsection [
MFILE32-NEXT:     SubSectionType: Symbols (0xF1)
MFILE32-NEXT:     SubSectionSize: 0x51
MFILE32:        ]
MFILE32:        Subsection [
MFILE32-NEXT:     SubSectionType: FrameData (0xF5)
MFILE32-NEXT:     SubSectionSize: 0x24
MFILE32:        ]
MFILE32:        Subsection [
MFILE32-NEXT:     SubSectionType: Symbols (0xF1)
MFILE32-NEXT:     SubSectionSize: 0x4B
MFILE32:          GlobalProcIdSym {
MFILE32:            CodeSize: 0x14
MFILE32:            DisplayName: f
MFILE32:            LinkageName: _f
MFILE32:          }
MFILE32:          ProcEnd
MFILE32:        ]
MFILE32-NEXT:   Subsection [
MFILE32-NEXT:     SubSectionType: Lines (0xF2)
MFILE32-NEXT:     SubSectionSize: 0x64
MFILE32:          LinkageName: _f
MFILE32-NEXT:   ]
MFILE32-NEXT:   Subsection [
MFILE32-NEXT:     SubSectionType: FileChecksums (0xF4)
MFILE32-NEXT:     SubSectionSize: 0x28
MFILE32:        ]
MFILE32-NEXT:   Subsection [
MFILE32-NEXT:     SubSectionType: StringTable (0xF3)
MFILE32-NEXT:     SubSectionSize: 0x57
MFILE32:        ]
MFILE32-NEXT:   Subsection [
MFILE32-NEXT:     SubSectionType: Symbols (0xF1)
MFILE32-NEXT:     SubSectionSize: 0x8
MFILE32:        ]
MFILE32-NEXT:   FunctionLineTable [
MFILE32-NEXT:     LinkageName: _f
MFILE32-NEXT:     Flags: 0x0
MFILE32-NEXT:     CodeSize: 0x14
MFILE32-NEXT:     FilenameSegment [
MFILE32-NEXT:       Filename: d:\input.c
MFILE32-NEXT:       +0x0 [
MFILE32-NEXT:         LineNumberStart: 3
MFILE32-NEXT:         LineNumberEndDelta: 0
MFILE32-NEXT:         IsStatement: Yes
MFILE32-NEXT:       ]
MFILE32-NEXT:     ]
MFILE32-NEXT:     FilenameSegment [
MFILE32-NEXT:       Filename: d:\one.c
MFILE32-NEXT:       +0x3 [
MFILE32-NEXT:         LineNumberStart: 1
MFILE32-NEXT:         LineNumberEndDelta: 0
MFILE32-NEXT:         IsStatement: Yes
MFILE32-NEXT:       ]
MFILE32-NEXT:     ]
MFILE32-NEXT:     FilenameSegment [
MFILE32-NEXT:       Filename: d:\two.c
MFILE32-NEXT:       +0x8 [
MFILE32-NEXT:         LineNumberStart: 2
MFILE32-NEXT:         LineNumberEndDelta: 0
MFILE32-NEXT:         IsStatement: Yes
MFILE32-NEXT:       ]
MFILE32-NEXT:     ]
MFILE32-NEXT:     FilenameSegment [
MFILE32-NEXT:       Filename: d:\one.c
MFILE32-NEXT:       +0xD [
MFILE32-NEXT:         LineNumberStart: 7
MFILE32-NEXT:         LineNumberEndDelta: 0
MFILE32-NEXT:         IsStatement: Yes
MFILE32-NEXT:       ]
MFILE32-NEXT:       +0x12 [
MFILE32-NEXT:         LineNumberStart: 8
MFILE32-NEXT:         LineNumberEndDelta: 0
MFILE32-NEXT:         IsStatement: Yes
MFILE32-NEXT:       ]
MFILE32-NEXT:     ]
MFILE32-NEXT:   ]
MFILE32:      ]

MFILE64:      CodeViewDebugInfo [
MFILE64:        Magic: 0x4
MFILE64-NEXT:   Subsection [
MFILE64-NEXT:     SubSectionType: Symbols (0xF1)
MFILE64-NEXT:     SubSectionSize: 0x51
MFILE64:        ]
MFILE64:        Subsection [
MFILE64-NEXT:     SubSectionType: Symbols (0xF1)
MFILE64-NEXT:     SubSectionSize: 0x4B
MFILE64:          GlobalProcIdSym {
MFILE64:            CodeSize: 0x18
MFILE64:            DisplayName: f
MFILE64:            LinkageName: f
MFILE64:          }
MFILE64:          ProcEnd
MFILE64:        ]
MFILE64-NEXT:   Subsection [
MFILE64-NEXT:     SubSectionType: Lines (0xF2)
MFILE64-NEXT:     SubSectionSize: 0x64
MFILE64:          LinkageName: f
MFILE64-NEXT:   ]
MFILE64-NEXT:   Subsection [
MFILE64-NEXT:     SubSectionType: FileChecksums (0xF4)
MFILE64-NEXT:     SubSectionSize: 0x28
MFILE64:        ]
MFILE64-NEXT:   Subsection [
MFILE64-NEXT:     SubSectionType: StringTable (0xF3)
MFILE64-NEXT:     SubSectionSize: 0x1E
MFILE64:        ]
MFILE64-NEXT:   Subsection [
MFILE64-NEXT:     SubSectionType: Symbols (0xF1)
MFILE64-NEXT:     SubSectionSize: 0x8
MFILE64:        ]
MFILE64-NEXT:  FunctionLineTable [
MFILE64-NEXT:    LinkageName: f
MFILE64-NEXT:    Flags: 0x0
MFILE64-NEXT:    CodeSize: 0x18
MFILE64-NEXT:    FilenameSegment [
MFILE64-NEXT:      Filename: d:\input.c
MFILE64-NEXT:      +0x0 [
MFILE64-NEXT:        LineNumberStart: 3
MFILE64-NEXT:        LineNumberEndDelta: 0
MFILE64-NEXT:        IsStatement: Yes
MFILE64-NEXT:      ]
MFILE64-NEXT:    ]
MFILE64-NEXT:    FilenameSegment [
MFILE64-NEXT:      Filename: d:\one.c
MFILE64-NEXT:      +0x4 [
MFILE64-NEXT:        LineNumberStart: 1
MFILE64-NEXT:        LineNumberEndDelta: 0
MFILE64-NEXT:        IsStatement: Yes
MFILE64-NEXT:      ]
MFILE64-NEXT:    ]
MFILE64-NEXT:    FilenameSegment [
MFILE64-NEXT:      Filename: d:\two.c
MFILE64-NEXT:      +0x9 [
MFILE64-NEXT:        LineNumberStart: 2
MFILE64-NEXT:        LineNumberEndDelta: 0
MFILE64-NEXT:        IsStatement: Yes
MFILE64-NEXT:      ]
MFILE64-NEXT:    ]
MFILE64-NEXT:    FilenameSegment [
MFILE64-NEXT:      Filename: d:\one.c
MFILE64-NEXT:      +0xE [
MFILE64-NEXT:        LineNumberStart: 7
MFILE64-NEXT:        LineNumberEndDelta: 0
MFILE64-NEXT:        IsStatement: Yes
MFILE64-NEXT:      ]
MFILE64-NEXT:      +0x13 [
MFILE64-NEXT:        LineNumberStart: 8
MFILE64-NEXT:        LineNumberEndDelta: 0
MFILE64-NEXT:        IsStatement: Yes
MFILE64-NEXT:      ]
MFILE64-NEXT:    ]
MFILE64:      ]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; The following object files were generated using the following command:
;   C:\src> cl /Z7 /Gy /c test.cc
; with the following contents of C:\src\test.cc:
;   int f()
;   {
;     return 0;
;   }
;
;   int g()
;   {
;     return 0;
;   }
; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively.
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \
RUN:   | FileCheck %s -check-prefix MCOMDAT
RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \
RUN:   | FileCheck %s -check-prefix MCOMDAT

MCOMDAT:      GlobalProcIdSym {
MCOMDAT:        CodeSize: 0x7
MCOMDAT:        DisplayName: f
MCOMDAT:        LinkageName: ?f@@YAHXZ
MCOMDAT:      }
MCOMDAT:      FunctionLineTable [
MCOMDAT-NEXT:   LinkageName: ?f@@YAHXZ
MCOMDAT-NEXT:   Flags: 0x0
MCOMDAT-NEXT:   CodeSize: 0x7
MCOMDAT-NEXT:   FilenameSegment [
MCOMDAT-NEXT:     Filename: c:\src\test.cc
MCOMDAT-NEXT:     +0x0 [
MCOMDAT-NEXT:       LineNumberStart: 2
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:     +0x3 [
MCOMDAT-NEXT:       LineNumberStart: 3
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:     +0x5 [
MCOMDAT-NEXT:       LineNumberStart: 4
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:   ]
MCOMDAT-NEXT: ]
MCOMDAT:      GlobalProcIdSym {
MCOMDAT:        CodeSize: 0x7
MCOMDAT:        DisplayName: g
MCOMDAT:        LinkageName: ?g@@YAHXZ
MCOMDAT:      }
MCOMDAT:      FunctionLineTable [
MCOMDAT-NEXT:   LinkageName: ?g@@YAHXZ
MCOMDAT-NEXT:   Flags: 0x0
MCOMDAT-NEXT:   CodeSize: 0x7
MCOMDAT-NEXT:   FilenameSegment [
MCOMDAT-NEXT:     Filename: c:\src\test.cc
MCOMDAT-NEXT:     +0x0 [
MCOMDAT-NEXT:       LineNumberStart: 7
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:     +0x3 [
MCOMDAT-NEXT:       LineNumberStart: 8
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:     +0x5 [
MCOMDAT-NEXT:       LineNumberStart: 9
MCOMDAT-NEXT:       LineNumberEndDelta: 0
MCOMDAT-NEXT:       IsStatement: Yes
MCOMDAT-NEXT:     ]
MCOMDAT-NEXT:   ]
MCOMDAT-NEXT: ]