diff options
author | Reid Kleckner <rnk@google.com> | 2016-01-13 19:32:35 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-01-13 19:32:35 +0000 |
commit | 72e2ba7abb17a5d509df45451c546b9ac5de743f (patch) | |
tree | 209f68da6cef60b984bf971da7dfbbafba07a128 /llvm/test/tools/llvm-readobj/codeview-linetables.test | |
parent | a39ca601262f2709c5b936a25f3d99c35dc84411 (diff) | |
download | llvm-72e2ba7abb17a5d509df45451c546b9ac5de743f.zip llvm-72e2ba7abb17a5d509df45451c546b9ac5de743f.tar.gz llvm-72e2ba7abb17a5d509df45451c546b9ac5de743f.tar.bz2 |
[readobj] Expand CodeView dumping functionality
This rewrites and expands the existing codeview dumping functionality in
llvm-readobj using techniques similar to those in lib/Object. This defines a
number of new records and enums useful for reading memory mapped codeview
sections in COFF objects.
The dumper is intended as a testing tool for LLVM as it grows more codeview
output capabilities.
Reviewers: majnemer
Differential Revision: http://reviews.llvm.org/D16104
llvm-svn: 257658
Diffstat (limited to 'llvm/test/tools/llvm-readobj/codeview-linetables.test')
-rw-r--r-- | llvm/test/tools/llvm-readobj/codeview-linetables.test | 263 |
1 files changed, 132 insertions, 131 deletions
diff --git a/llvm/test/tools/llvm-readobj/codeview-linetables.test b/llvm/test/tools/llvm-readobj/codeview-linetables.test index a1c6ab6..4867a62 100644 --- a/llvm/test/tools/llvm-readobj/codeview-linetables.test +++ b/llvm/test/tools/llvm-readobj/codeview-linetables.test @@ -28,79 +28,80 @@ RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetabl RUN: | FileCheck %s -check-prefix MFUN64 MFUN32: CodeViewDebugInfo [ +MFUN32-NEXT: Section: .debug$S (2) MFUN32-NEXT: Magic: 0x4 MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF1 -MFUN32-NEXT: PayloadSize: 0x52 +MFUN32-NEXT: SubSectionType: Symbols (0xF1) +MFUN32-NEXT: SubSectionSize: 0x52 MFUN32: ] -MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF5 -MFUN32-NEXT: PayloadSize: 0x24 +MFUN32: Subsection [ +MFUN32-NEXT: SubSectionType: FrameData (0xF5) +MFUN32-NEXT: SubSectionSize: 0x24 MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF1 -MFUN32-NEXT: PayloadSize: 0x4B +MFUN32-NEXT: SubSectionType: Symbols (0xF1) +MFUN32-NEXT: SubSectionSize: 0x4B MFUN32: ProcStart { -MFUN32-NEXT: DisplayName: x -MFUN32-NEXT: Section: _x -MFUN32-NEXT: CodeSize: 0xA -MFUN32-NEXT: } -MFUN32-NEXT: ProcEnd +MFUN32: CodeSize: 0xA +MFUN32: DisplayName: x +MFUN32: LinkageName: _x +MFUN32: } +MFUN32: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF2 -MFUN32-NEXT: PayloadSize: 0x30 +MFUN32-NEXT: SubSectionType: Lines (0xF2) +MFUN32-NEXT: SubSectionSize: 0x30 MFUN32: LinkageName: _x MFUN32-NEXT: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF5 -MFUN32-NEXT: PayloadSize: 0x24 +MFUN32-NEXT: SubSectionType: FrameData (0xF5) +MFUN32-NEXT: SubSectionSize: 0x24 MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF1 -MFUN32-NEXT: PayloadSize: 0x4B +MFUN32-NEXT: SubSectionType: Symbols (0xF1) +MFUN32-NEXT: SubSectionSize: 0x4B MFUN32: ProcStart { -MFUN32-NEXT: DisplayName: y -MFUN32-NEXT: Section: _y -MFUN32-NEXT: CodeSize: 0xA -MFUN32-NEXT: } -MFUN32-NEXT: ProcEnd +MFUN32: CodeSize: 0xA +MFUN32: DisplayName: y +MFUN32: LinkageName: _y +MFUN32: } +MFUN32: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF2 -MFUN32-NEXT: PayloadSize: 0x30 +MFUN32-NEXT: SubSectionType: Lines (0xF2) +MFUN32-NEXT: SubSectionSize: 0x30 MFUN32: LinkageName: _y MFUN32-NEXT: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF5 -MFUN32-NEXT: PayloadSize: 0x24 +MFUN32-NEXT: SubSectionType: FrameData (0xF5) +MFUN32-NEXT: SubSectionSize: 0x24 MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF1 -MFUN32-NEXT: PayloadSize: 0x4B +MFUN32-NEXT: SubSectionType: Symbols (0xF1) +MFUN32-NEXT: SubSectionSize: 0x4B MFUN32: ProcStart { -MFUN32-NEXT: DisplayName: f -MFUN32-NEXT: Section: _f -MFUN32-NEXT: CodeSize: 0x14 -MFUN32-NEXT: } -MFUN32-NEXT: ProcEnd +MFUN32: CodeSize: 0x14 +MFUN32: DisplayName: f +MFUN32: LinkageName: _f +MFUN32: } +MFUN32: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF2 -MFUN32-NEXT: PayloadSize: 0x40 +MFUN32-NEXT: SubSectionType: Lines (0xF2) +MFUN32-NEXT: SubSectionSize: 0x40 MFUN32: LinkageName: _f MFUN32-NEXT: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF4 -MFUN32-NEXT: PayloadSize: 0x18 +MFUN32-NEXT: SubSectionType: FileChecksums (0xF4) +MFUN32-NEXT: SubSectionSize: 0x18 MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF3 -MFUN32-NEXT: PayloadSize: 0x46 +MFUN32-NEXT: SubSectionType: StringTable (0xF3) +MFUN32-NEXT: SubSectionSize: 0x46 MFUN32: ] MFUN32-NEXT: Subsection [ -MFUN32-NEXT: Type: 0xF1 -MFUN32-NEXT: PayloadSize: 0x8 +MFUN32-NEXT: SubSectionType: Symbols (0xF1) +MFUN32-NEXT: SubSectionSize: 0x8 MFUN32: ] MFUN32-NEXT: FunctionLineTable [ MFUN32-NEXT LinkageName: _x @@ -181,70 +182,70 @@ MFUN32-NEXT IsStatement: Yes MFUN32-NEXT ] MFUN32-NEXT ] MFUN32-NEXT ] -MFUN32-NEXT ] +MFUN32: ] MFUN64: CodeViewDebugInfo [ -MFUN64-NEXT: Magic: 0x4 +MFUN64: Magic: 0x4 MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF1 -MFUN64-NEXT: PayloadSize: 0x52 +MFUN64-NEXT: SubSectionType: Symbols (0xF1) +MFUN64-NEXT: SubSectionSize: 0x52 MFUN64: ] -MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF1 -MFUN64-NEXT: PayloadSize: 0x4B +MFUN64: Subsection [ +MFUN64-NEXT: SubSectionType: Symbols (0xF1) +MFUN64-NEXT: SubSectionSize: 0x4B MFUN64: ProcStart { -MFUN64-NEXT: DisplayName: x -MFUN64-NEXT: Section: x -MFUN64-NEXT: CodeSize: 0xE -MFUN64-NEXT: } -MFUN64-NEXT: ProcEnd +MFUN64: CodeSize: 0xE +MFUN64: DisplayName: x +MFUN64: LinkageName: x +MFUN64: } +MFUN64: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF2 -MFUN64-NEXT: PayloadSize: 0x30 +MFUN64-NEXT: SubSectionType: Lines (0xF2) +MFUN64-NEXT: SubSectionSize: 0x30 MFUN64: LinkageName: x MFUN64-NEXT: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF1 -MFUN64-NEXT: PayloadSize: 0x4B +MFUN64-NEXT: SubSectionType: Symbols (0xF1) +MFUN64-NEXT: SubSectionSize: 0x4B MFUN64: ProcStart { -MFUN64-NEXT: DisplayName: y -MFUN64-NEXT: Section: y -MFUN64-NEXT: CodeSize: 0xE -MFUN64-NEXT: } -MFUN64-NEXT: ProcEnd +MFUN64: CodeSize: 0xE +MFUN64: DisplayName: y +MFUN64: LinkageName: y +MFUN64: } +MFUN64: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF2 -MFUN64-NEXT: PayloadSize: 0x30 +MFUN64-NEXT: SubSectionType: Lines (0xF2) +MFUN64-NEXT: SubSectionSize: 0x30 MFUN64: LinkageName: y MFUN64-NEXT: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF1 -MFUN64-NEXT: PayloadSize: 0x4B +MFUN64-NEXT: SubSectionType: Symbols (0xF1) +MFUN64-NEXT: SubSectionSize: 0x4B MFUN64: ProcStart { -MFUN64-NEXT: DisplayName: f -MFUN64-NEXT: Section: f -MFUN64-NEXT: CodeSize: 0x18 -MFUN64-NEXT: } -MFUN64-NEXT: ProcEnd +MFUN64: CodeSize: 0x18 +MFUN64: DisplayName: f +MFUN64: LinkageName: f +MFUN64: } +MFUN64: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF2 -MFUN64-NEXT: PayloadSize: 0x40 +MFUN64-NEXT: SubSectionType: Lines (0xF2) +MFUN64-NEXT: SubSectionSize: 0x40 MFUN64: LinkageName: f MFUN64-NEXT: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF4 -MFUN64-NEXT: PayloadSize: 0x18 +MFUN64-NEXT: SubSectionType: FileChecksums (0xF4) +MFUN64-NEXT: SubSectionSize: 0x18 MFUN64: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF3 -MFUN64-NEXT: PayloadSize: 0xD +MFUN64-NEXT: SubSectionType: StringTable (0xF3) +MFUN64-NEXT: SubSectionSize: 0xD MFUN64: ] MFUN64-NEXT: Subsection [ -MFUN64-NEXT: Type: 0xF1 -MFUN64-NEXT: PayloadSize: 0x8 +MFUN64-NEXT: SubSectionType: Symbols (0xF1) +MFUN64-NEXT: SubSectionSize: 0x8 MFUN64: ] MFUN64-NEXT: FunctionLineTable [ MFUN64-NEXT: LinkageName: x @@ -325,7 +326,7 @@ MFUN64-NEXT: IsStatement: Yes MFUN64-NEXT: ] MFUN64-NEXT: ] MFUN64-NEXT: ] -MFUN64-NEXT: ] +MFUN64: ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; The following two object files were generated using the following command: @@ -352,41 +353,41 @@ RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.o RUN: | FileCheck %s -check-prefix MFILE64 MFILE32: CodeViewDebugInfo [ -MFILE32-NEXT: Magic: 0x4 +MFILE32: Magic: 0x4 MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF1 -MFILE32-NEXT: PayloadSize: 0x51 +MFILE32-NEXT: SubSectionType: Symbols (0xF1) +MFILE32-NEXT: SubSectionSize: 0x51 MFILE32: ] -MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF5 -MFILE32-NEXT: PayloadSize: 0x24 +MFILE32: Subsection [ +MFILE32-NEXT: SubSectionType: FrameData (0xF5) +MFILE32-NEXT: SubSectionSize: 0x24 MFILE32: ] MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF1 -MFILE32-NEXT: PayloadSize: 0x4B +MFILE32-NEXT: SubSectionType: Symbols (0xF1) +MFILE32-NEXT: SubSectionSize: 0x4B MFILE32: ProcStart { -MFILE32-NEXT: DisplayName: f -MFILE32-NEXT: Section: _f -MFILE32-NEXT: CodeSize: 0x14 -MFILE32-NEXT: } -MFILE32-NEXT: ProcEnd +MFILE32: CodeSize: 0x14 +MFILE32: DisplayName: f +MFILE32: LinkageName: _f +MFILE32: } +MFILE32: ProcEnd MFILE32: ] MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF2 -MFILE32-NEXT: PayloadSize: 0x64 +MFILE32-NEXT: SubSectionType: Lines (0xF2) +MFILE32-NEXT: SubSectionSize: 0x64 MFILE32: LinkageName: _f MFILE32-NEXT: ] MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF4 -MFILE32-NEXT: PayloadSize: 0x28 +MFILE32-NEXT: SubSectionType: FileChecksums (0xF4) +MFILE32-NEXT: SubSectionSize: 0x28 MFILE32: ] MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF3 -MFILE32-NEXT: PayloadSize: 0x57 +MFILE32-NEXT: SubSectionType: StringTable (0xF3) +MFILE32-NEXT: SubSectionSize: 0x57 MFILE32: ] MFILE32-NEXT: Subsection [ -MFILE32-NEXT: Type: 0xF1 -MFILE32-NEXT: PayloadSize: 0x8 +MFILE32-NEXT: SubSectionType: Symbols (0xF1) +MFILE32-NEXT: SubSectionSize: 0x8 MFILE32: ] MFILE32-NEXT: FunctionLineTable [ MFILE32-NEXT: LinkageName: _f @@ -430,40 +431,40 @@ MFILE32-NEXT: IsStatement: Yes MFILE32-NEXT: ] MFILE32-NEXT: ] MFILE32-NEXT: ] -MFILE32-NEXT: ] +MFILE32: ] MFILE64: CodeViewDebugInfo [ -MFILE64-NEXT: Magic: 0x4 +MFILE64: Magic: 0x4 MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF1 -MFILE64-NEXT: PayloadSize: 0x51 +MFILE64-NEXT: SubSectionType: Symbols (0xF1) +MFILE64-NEXT: SubSectionSize: 0x51 MFILE64: ] -MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF1 -MFILE64-NEXT: PayloadSize: 0x4B +MFILE64: Subsection [ +MFILE64-NEXT: SubSectionType: Symbols (0xF1) +MFILE64-NEXT: SubSectionSize: 0x4B MFILE64: ProcStart { -MFILE64-NEXT: DisplayName: f -MFILE64-NEXT: Section: f -MFILE64-NEXT: CodeSize: 0x18 -MFILE64-NEXT: } -MFILE64-NEXT: ProcEnd +MFILE64: CodeSize: 0x18 +MFILE64: DisplayName: f +MFILE64: LinkageName: f +MFILE64: } +MFILE64: ProcEnd MFILE64: ] MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF2 -MFILE64-NEXT: PayloadSize: 0x64 +MFILE64-NEXT: SubSectionType: Lines (0xF2) +MFILE64-NEXT: SubSectionSize: 0x64 MFILE64: LinkageName: f MFILE64-NEXT: ] MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF4 -MFILE64-NEXT: PayloadSize: 0x28 +MFILE64-NEXT: SubSectionType: FileChecksums (0xF4) +MFILE64-NEXT: SubSectionSize: 0x28 MFILE64: ] MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF3 -MFILE64-NEXT: PayloadSize: 0x1E +MFILE64-NEXT: SubSectionType: StringTable (0xF3) +MFILE64-NEXT: SubSectionSize: 0x1E MFILE64: ] MFILE64-NEXT: Subsection [ -MFILE64-NEXT: Type: 0xF1 -MFILE64-NEXT: PayloadSize: 0x8 +MFILE64-NEXT: SubSectionType: Symbols (0xF1) +MFILE64-NEXT: SubSectionSize: 0x8 MFILE64: ] MFILE64-NEXT: FunctionLineTable [ MFILE64-NEXT: LinkageName: f @@ -506,7 +507,7 @@ MFILE64-NEXT: LineNumberEndDelta: 0 MFILE64-NEXT: IsStatement: Yes MFILE64-NEXT: ] MFILE64-NEXT: ] -MFILE64-NEXT: ] +MFILE64: ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; The following object files were generated using the following command: @@ -528,10 +529,10 @@ RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-lineta RUN: | FileCheck %s -check-prefix MCOMDAT MCOMDAT: ProcStart { -MCOMDAT-NEXT: DisplayName: f -MCOMDAT-NEXT: Section: ?f@@YAHXZ -MCOMDAT-NEXT: CodeSize: 0x7 -MCOMDAT-NEXT: } +MCOMDAT: CodeSize: 0x7 +MCOMDAT: DisplayName: f +MCOMDAT: LinkageName: ?f@@YAHXZ +MCOMDAT: } MCOMDAT: FunctionLineTable [ MCOMDAT-NEXT: LinkageName: ?f@@YAHXZ MCOMDAT-NEXT: Flags: 0x0 @@ -556,10 +557,10 @@ MCOMDAT-NEXT: ] MCOMDAT-NEXT: ] MCOMDAT-NEXT: ] MCOMDAT: ProcStart { -MCOMDAT-NEXT: DisplayName: g -MCOMDAT-NEXT: Section: ?g@@YAHXZ -MCOMDAT-NEXT: CodeSize: 0x7 -MCOMDAT-NEXT: } +MCOMDAT: CodeSize: 0x7 +MCOMDAT: DisplayName: g +MCOMDAT: LinkageName: ?g@@YAHXZ +MCOMDAT: } MCOMDAT: FunctionLineTable [ MCOMDAT-NEXT: LinkageName: ?g@@YAHXZ MCOMDAT-NEXT: Flags: 0x0 |