llvm-6502/test/tools/llvm-readobj/codeview-linetables.test
David Majnemer b1d6ad18ba [CodeView] Add support for emitting column information
Column information is present in CodeView when the line table subsection
has bit 0 set to 1 in it's flags field.  The column information is
represented as a pair of 16-bit quantities: a starting and ending
column.  This information is present at the end of the chunk, after all
the line-PC pairs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241764 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-09 00:19:51 +00:00

435 lines
13 KiB
Plaintext

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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: Magic: 0x4
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x52
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF5
MFUN32-NEXT: PayloadSize: 0x24
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
MFUN32: ProcStart {
MFUN32-NEXT: DisplayName: x
MFUN32-NEXT: Section: _x
MFUN32-NEXT: CodeSize: 0xA
MFUN32-NEXT: }
MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
MFUN32-NEXT: PayloadSize: 0x30
MFUN32: FunctionName: _x
MFUN32-NEXT: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF5
MFUN32-NEXT: PayloadSize: 0x24
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
MFUN32: ProcStart {
MFUN32-NEXT: DisplayName: y
MFUN32-NEXT: Section: _y
MFUN32-NEXT: CodeSize: 0xA
MFUN32-NEXT: }
MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
MFUN32-NEXT: PayloadSize: 0x30
MFUN32: FunctionName: _y
MFUN32-NEXT: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF5
MFUN32-NEXT: PayloadSize: 0x24
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
MFUN32: ProcStart {
MFUN32-NEXT: DisplayName: f
MFUN32-NEXT: Section: _f
MFUN32-NEXT: CodeSize: 0x14
MFUN32-NEXT: }
MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
MFUN32-NEXT: PayloadSize: 0x40
MFUN32: FunctionName: _f
MFUN32-NEXT: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF4
MFUN32-NEXT: PayloadSize: 0x18
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF3
MFUN32-NEXT: PayloadSize: 0x46
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x8
MFUN32: ]
MFUN32-NEXT: FunctionLineTable [
MFUN32-NEXT: FunctionName: _x
MFUN32-NEXT: Flags: 0x0
MFUN32-NEXT: CodeSize: 0xA
MFUN32-NEXT: FilenameSegment [
MFUN32-NEXT: Filename: d:\source.c
MFUN32-NEXT: +0x0: 3
MFUN32-NEXT: +0x3: 4
MFUN32-NEXT: +0x8: 5
MFUN32-NEXT: ]
MFUN32-NEXT: ]
MFUN32-NEXT: FunctionLineTable [
MFUN32-NEXT: FunctionName: _y
MFUN32-NEXT: Flags: 0x0
MFUN32-NEXT: CodeSize: 0xA
MFUN32-NEXT: FilenameSegment [
MFUN32-NEXT: Filename: d:\source.c
MFUN32-NEXT: +0x0: 7
MFUN32-NEXT: +0x3: 8
MFUN32-NEXT: +0x8: 9
MFUN32-NEXT: ]
MFUN32-NEXT: ]
MFUN32-NEXT: FunctionLineTable [
MFUN32-NEXT: FunctionName: _f
MFUN32-NEXT: Flags: 0x0
MFUN32-NEXT: CodeSize: 0x14
MFUN32-NEXT: FilenameSegment [
MFUN32-NEXT: Filename: d:\source.c
MFUN32-NEXT: +0x0: 11
MFUN32-NEXT: +0x3: 12
MFUN32-NEXT: +0x8: 13
MFUN32-NEXT: +0xD: 14
MFUN32-NEXT: +0x12: 15
MFUN32-NEXT: ]
MFUN32-NEXT: ]
MFUN32-NEXT: ]
MFUN64: CodeViewDebugInfo [
MFUN64-NEXT: Magic: 0x4
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x52
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
MFUN64: ProcStart {
MFUN64-NEXT: DisplayName: x
MFUN64-NEXT: Section: x
MFUN64-NEXT: CodeSize: 0xE
MFUN64-NEXT: }
MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
MFUN64-NEXT: PayloadSize: 0x30
MFUN64: FunctionName: x
MFUN64-NEXT: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
MFUN64: ProcStart {
MFUN64-NEXT: DisplayName: y
MFUN64-NEXT: Section: y
MFUN64-NEXT: CodeSize: 0xE
MFUN64-NEXT: }
MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
MFUN64-NEXT: PayloadSize: 0x30
MFUN64: FunctionName: y
MFUN64-NEXT: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
MFUN64: ProcStart {
MFUN64-NEXT: DisplayName: f
MFUN64-NEXT: Section: f
MFUN64-NEXT: CodeSize: 0x18
MFUN64-NEXT: }
MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
MFUN64-NEXT: PayloadSize: 0x40
MFUN64: FunctionName: f
MFUN64-NEXT: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF4
MFUN64-NEXT: PayloadSize: 0x18
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF3
MFUN64-NEXT: PayloadSize: 0xD
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x8
MFUN64: ]
MFUN64-NEXT: FunctionLineTable [
MFUN64-NEXT: FunctionName: x
MFUN64-NEXT: Flags: 0x0
MFUN64-NEXT: CodeSize: 0xE
MFUN64-NEXT: FilenameSegment [
MFUN64-NEXT: Filename: d:\source.c
MFUN64-NEXT: +0x0: 3
MFUN64-NEXT: +0x4: 4
MFUN64-NEXT: +0x9: 5
MFUN64-NEXT: ]
MFUN64-NEXT: ]
MFUN64-NEXT: FunctionLineTable [
MFUN64-NEXT: FunctionName: y
MFUN64-NEXT: Flags: 0x0
MFUN64-NEXT: CodeSize: 0xE
MFUN64-NEXT: FilenameSegment [
MFUN64-NEXT: Filename: d:\source.c
MFUN64-NEXT: +0x0: 7
MFUN64-NEXT: +0x4: 8
MFUN64-NEXT: +0x9: 9
MFUN64-NEXT: ]
MFUN64-NEXT: ]
MFUN64-NEXT: FunctionLineTable [
MFUN64-NEXT: FunctionName: f
MFUN64-NEXT: Flags: 0x0
MFUN64-NEXT: CodeSize: 0x18
MFUN64-NEXT: FilenameSegment [
MFUN64-NEXT: Filename: d:\source.c
MFUN64-NEXT: +0x0: 11
MFUN64-NEXT: +0x4: 12
MFUN64-NEXT: +0x9: 13
MFUN64-NEXT: +0xE: 14
MFUN64-NEXT: +0x13: 15
MFUN64-NEXT: ]
MFUN64-NEXT: ]
MFUN64-NEXT: ]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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-NEXT: Magic: 0x4
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF1
MFILE32-NEXT: PayloadSize: 0x51
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF5
MFILE32-NEXT: PayloadSize: 0x24
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF1
MFILE32-NEXT: PayloadSize: 0x4B
MFILE32: ProcStart {
MFILE32-NEXT: DisplayName: f
MFILE32-NEXT: Section: _f
MFILE32-NEXT: CodeSize: 0x14
MFILE32-NEXT: }
MFILE32-NEXT: ProcEnd
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF2
MFILE32-NEXT: PayloadSize: 0x64
MFILE32: FunctionName: _f
MFILE32-NEXT: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF4
MFILE32-NEXT: PayloadSize: 0x28
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF3
MFILE32-NEXT: PayloadSize: 0x57
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF1
MFILE32-NEXT: PayloadSize: 0x8
MFILE32: ]
MFILE32-NEXT: FunctionLineTable [
MFILE32-NEXT: FunctionName: _f
MFILE32-NEXT: Flags: 0x0
MFILE32-NEXT: CodeSize: 0x14
MFILE32-NEXT: FilenameSegment [
MFILE32-NEXT: Filename: d:\input.c
MFILE32-NEXT: +0x0: 3
MFILE32-NEXT: ]
MFILE32-NEXT: FilenameSegment [
MFILE32-NEXT: Filename: d:\one.c
MFILE32-NEXT: +0x3: 1
MFILE32-NEXT: ]
MFILE32-NEXT: FilenameSegment [
MFILE32-NEXT: Filename: d:\two.c
MFILE32-NEXT: +0x8: 2
MFILE32-NEXT: ]
MFILE32-NEXT: FilenameSegment [
MFILE32-NEXT: Filename: d:\one.c
MFILE32-NEXT: +0xD: 7
MFILE32-NEXT: +0x12: 8
MFILE32-NEXT: ]
MFILE32-NEXT: ]
MFILE32-NEXT: ]
MFILE64: CodeViewDebugInfo [
MFILE64-NEXT: Magic: 0x4
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF1
MFILE64-NEXT: PayloadSize: 0x51
MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF1
MFILE64-NEXT: PayloadSize: 0x4B
MFILE64: ProcStart {
MFILE64-NEXT: DisplayName: f
MFILE64-NEXT: Section: f
MFILE64-NEXT: CodeSize: 0x18
MFILE64-NEXT: }
MFILE64-NEXT: ProcEnd
MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF2
MFILE64-NEXT: PayloadSize: 0x64
MFILE64: FunctionName: f
MFILE64-NEXT: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF4
MFILE64-NEXT: PayloadSize: 0x28
MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF3
MFILE64-NEXT: PayloadSize: 0x1E
MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF1
MFILE64-NEXT: PayloadSize: 0x8
MFILE64: ]
MFILE64-NEXT: FunctionLineTable [
MFILE64-NEXT: FunctionName: f
MFILE64-NEXT: Flags: 0x0
MFILE64-NEXT: CodeSize: 0x18
MFILE64-NEXT: FilenameSegment [
MFILE64-NEXT: Filename: d:\input.c
MFILE64-NEXT: +0x0: 3
MFILE64-NEXT: ]
MFILE64-NEXT: FilenameSegment [
MFILE64-NEXT: Filename: d:\one.c
MFILE64-NEXT: +0x4: 1
MFILE64-NEXT: ]
MFILE64-NEXT: FilenameSegment [
MFILE64-NEXT: Filename: d:\two.c
MFILE64-NEXT: +0x9: 2
MFILE64-NEXT: ]
MFILE64-NEXT: FilenameSegment [
MFILE64-NEXT: Filename: d:\one.c
MFILE64-NEXT: +0xE: 7
MFILE64-NEXT: +0x13: 8
MFILE64-NEXT: ]
MFILE64-NEXT: ]
MFILE64-NEXT: ]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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: ProcStart {
MCOMDAT-NEXT: DisplayName: f
MCOMDAT-NEXT: Section: ?f@@YAHXZ
MCOMDAT-NEXT: CodeSize: 0x7
MCOMDAT-NEXT: }
MCOMDAT: FunctionLineTable [
MCOMDAT-NEXT: FunctionName: ?f@@YAHXZ
MCOMDAT-NEXT: Flags: 0x0
MCOMDAT-NEXT: CodeSize: 0x7
MCOMDAT-NEXT: FilenameSegment [
MCOMDAT-NEXT: Filename: c:\src\test.cc
MCOMDAT-NEXT: +0x0: 2
MCOMDAT-NEXT: +0x3: 3
MCOMDAT-NEXT: +0x5: 4
MCOMDAT-NEXT: ]
MCOMDAT-NEXT: ]
MCOMDAT: ProcStart {
MCOMDAT-NEXT: DisplayName: g
MCOMDAT-NEXT: Section: ?g@@YAHXZ
MCOMDAT-NEXT: CodeSize: 0x7
MCOMDAT-NEXT: }
MCOMDAT: FunctionLineTable [
MCOMDAT-NEXT: FunctionName: ?g@@YAHXZ
MCOMDAT-NEXT: Flags: 0x0
MCOMDAT-NEXT: CodeSize: 0x7
MCOMDAT-NEXT: FilenameSegment [
MCOMDAT-NEXT: Filename: c:\src\test.cc
MCOMDAT-NEXT: +0x0: 7
MCOMDAT-NEXT: +0x3: 8
MCOMDAT-NEXT: +0x5: 9
MCOMDAT-NEXT: ]
MCOMDAT-NEXT: ]