| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ; 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-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \ |
| RUN: | FileCheck %s -check-prefix MFUN32 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \ |
| RUN: | FileCheck %s -check-prefix MFUN32 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \ |
| RUN: | FileCheck %s -check-prefix MFUN64 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \ |
| RUN: | FileCheck %s -check-prefix MFUN64 |
| |
| MFUN32: CodeViewLineTables [ |
| 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: 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: 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: 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: CodeViewLineTables [ |
| 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: 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: 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: 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-linetables %p/Inputs/multifile-linetables.obj.coff-2012-i368 \ |
| RUN: | FileCheck %s -check-prefix MFILE32 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-i368 \ |
| RUN: | FileCheck %s -check-prefix MFILE32 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \ |
| RUN: | FileCheck %s -check-prefix MFILE64 |
| RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \ |
| RUN: | FileCheck %s -check-prefix MFILE64 |
| |
| MFILE32: CodeViewLineTables [ |
| 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: 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: CodeViewLineTables [ |
| 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: 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-linetables %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \ |
| RUN: | FileCheck %s -check-prefix MCOMDAT |
| RUN: llvm-readobj -s -codeview-linetables %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: 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: 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: ] |