mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[CodeView] Improve the line table dumper
This change has us print out fields we didn't previously understand. To improve readability, we now group column information with it's respective line. llvm-svn: 257552
This commit is contained in:
parent
6bfddf84c3
commit
32661ec901
@ -656,6 +656,15 @@ namespace COFF {
|
||||
}
|
||||
};
|
||||
|
||||
enum CodeViewLine : unsigned {
|
||||
CVL_LineNumberStartBits = 24,
|
||||
CVL_LineNumberEndDeltaBits = 7,
|
||||
CVL_LineNumberEndDeltaMask = (1U << CVL_LineNumberEndDeltaBits) - 1,
|
||||
CVL_MaxLineNumber = (1U << CVL_LineNumberStartBits) - 1,
|
||||
CVL_IsStatement = 1U << 31,
|
||||
CVL_MaxColumnNumber = UINT16_MAX,
|
||||
};
|
||||
|
||||
enum CodeViewIdentifiers {
|
||||
DEBUG_LINE_TABLES_HAVE_COLUMN_RECORDS = 0x1,
|
||||
DEBUG_SECTION_MAGIC = 0x4,
|
||||
|
@ -110,17 +110,28 @@
|
||||
; OBJ32-NEXT: Flags: 0x1
|
||||
; OBJ32-NEXT: CodeSize: 0x6
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\asm.c
|
||||
; OBJ32-NEXT: Filename: D:\asm.c
|
||||
; FIXME: An empty __asm stmt creates an extra entry.
|
||||
; We seem to know that these offsets are the same statically during the
|
||||
; execution of endModule(). See PR18679 for the details.
|
||||
; OBJ32-NEXT: +0x0: 4
|
||||
; OBJ32-NEXT: +0x0: 5
|
||||
; OBJ32-NEXT: +0x5: 6
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 4
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 5
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 6
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
@ -232,20 +243,36 @@
|
||||
; OBJ64-NEXT: CodeSize: 0xE
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\asm.c
|
||||
; OBJ64-NEXT: +0x0: 3
|
||||
; FIXME: An empty __asm stmt creates an extra entry.
|
||||
; See PR18679 for the details.
|
||||
; OBJ64-NEXT: +0x4: 4
|
||||
; OBJ64-NEXT: +0x4: 5
|
||||
; OBJ64-NEXT: +0x9: 6
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 3
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 4
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 5
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 6
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
|
||||
|
@ -137,24 +137,40 @@
|
||||
; OBJ32-NEXT: CodeSize: 0x10
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\one.c
|
||||
; OBJ32-NEXT: +0x0: 1
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 1
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\two.c
|
||||
; OBJ32-NEXT: +0x5: 2
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 2
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\one.c
|
||||
; OBJ32-NEXT: +0xA: 7
|
||||
; OBJ32-NEXT: +0xF: 8
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0xA [
|
||||
; OBJ32-NEXT: LineNumberStart: 7
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0xF [
|
||||
; OBJ32-NEXT: LineNumberStart: 8
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
|
||||
@ -297,30 +313,50 @@
|
||||
; OBJ64-NEXT: CodeSize: 0x18
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\input.c
|
||||
; OBJ64-NEXT: +0x0: 3
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 3
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\one.c
|
||||
; OBJ64-NEXT: +0x4: 1
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 1
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\two.c
|
||||
; OBJ64-NEXT: +0x9: 2
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 2
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\one.c
|
||||
; OBJ64-NEXT: +0xE: 7
|
||||
; OBJ64-NEXT: +0x13: 8
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0xE [
|
||||
; OBJ64-NEXT: LineNumberStart: 7
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x13 [
|
||||
; OBJ64-NEXT: LineNumberStart: 8
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
|
||||
|
@ -265,49 +265,82 @@
|
||||
; OBJ32-NEXT: CodeSize: 0x6
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\source.c
|
||||
; OBJ32-NEXT: +0x0: 4
|
||||
; OBJ32-NEXT: +0x5: 5
|
||||
; OBJ32-NEXT: ColStart: 42
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 43
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 4
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 42
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 5
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 43
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: FunctionLineTable [
|
||||
; OBJ32-NEXT: Name: _y
|
||||
; OBJ32-NEXT: LinkageName: _y
|
||||
; OBJ32-NEXT: Flags: 0x1
|
||||
; OBJ32-NEXT: CodeSize: 0x6
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\source.c
|
||||
; OBJ32-NEXT: +0x0: 8
|
||||
; OBJ32-NEXT: +0x5: 9
|
||||
; OBJ32-NEXT: ColStart: 52
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 53
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 8
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 52
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 9
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 53
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: FunctionLineTable [
|
||||
; OBJ32-NEXT: Name: _f
|
||||
; OBJ32-NEXT: LinkageName: _f
|
||||
; OBJ32-NEXT: Flags: 0x1
|
||||
; OBJ32-NEXT: CodeSize: 0x10
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\source.c
|
||||
; OBJ32-NEXT: +0x0: 12
|
||||
; OBJ32-NEXT: +0x5: 13
|
||||
; OBJ32-NEXT: +0xA: 14
|
||||
; OBJ32-NEXT: +0xF: 15
|
||||
; OBJ32-NEXT: ColStart: 62
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 63
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 72
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 73
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 12
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 62
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 13
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 63
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0xA [
|
||||
; OBJ32-NEXT: LineNumberStart: 14
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 72
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0xF [
|
||||
; OBJ32-NEXT: LineNumberStart: 15
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 73
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
|
||||
|
||||
; X64-LABEL: x:
|
||||
; X64-NEXT: .L{{.*}}:
|
||||
; X64-NEXT: [[X_START:.*]]:{{$}}
|
||||
@ -570,60 +603,104 @@
|
||||
; OBJ64-NEXT: Type: 0xF2
|
||||
; OBJ64: ]
|
||||
; OBJ64: FunctionLineTable [
|
||||
; OBJ64-NEXT: Name: x
|
||||
; OBJ64-NEXT: LinkageName: x
|
||||
; OBJ64-NEXT: Flags: 0x1
|
||||
; OBJ64-NEXT: CodeSize: 0xE
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\source.c
|
||||
; OBJ64-NEXT: +0x0: 3
|
||||
; OBJ64-NEXT: +0x4: 4
|
||||
; OBJ64-NEXT: +0x9: 5
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 42
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 43
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 3
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 4
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 42
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 5
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 43
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: FunctionLineTable [
|
||||
; OBJ64-NEXT: Name: y
|
||||
; OBJ64-NEXT: LinkageName: y
|
||||
; OBJ64-NEXT: Flags: 0x1
|
||||
; OBJ64-NEXT: CodeSize: 0xE
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\source.c
|
||||
; OBJ64-NEXT: +0x0: 7
|
||||
; OBJ64-NEXT: +0x4: 8
|
||||
; OBJ64-NEXT: +0x9: 9
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 52
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 53
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 7
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 8
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 52
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 9
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 53
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: FunctionLineTable [
|
||||
; OBJ64-NEXT: Name: f
|
||||
; OBJ64-NEXT: LinkageName: f
|
||||
; OBJ64-NEXT: Flags: 0x1
|
||||
; OBJ64-NEXT: CodeSize: 0x18
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\source.c
|
||||
; OBJ64-NEXT: +0x0: 11
|
||||
; OBJ64-NEXT: +0x4: 12
|
||||
; OBJ64-NEXT: +0x9: 13
|
||||
; OBJ64-NEXT: +0xE: 14
|
||||
; OBJ64-NEXT: +0x13: 15
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 62
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 63
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 72
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 73
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 11
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 12
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 62
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 13
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 63
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0xE [
|
||||
; OBJ64-NEXT: LineNumberStart: 14
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 72
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x13 [
|
||||
; OBJ64-NEXT: LineNumberStart: 15
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 73
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
|
||||
|
@ -104,12 +104,20 @@
|
||||
; OBJ32-NEXT: CodeSize: 0x6
|
||||
; OBJ32-NEXT: FilenameSegment [
|
||||
; OBJ32-NEXT: Filename: D:\test.c
|
||||
; OBJ32-NEXT: +0x0: 4
|
||||
; OBJ32-NEXT: +0x5: 5
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: +0x0 [
|
||||
; OBJ32-NEXT: LineNumberStart: 4
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: +0x5 [
|
||||
; OBJ32-NEXT: LineNumberStart: 5
|
||||
; OBJ32-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ32-NEXT: IsStatement: No
|
||||
; OBJ32-NEXT: ColStart: 0
|
||||
; OBJ32-NEXT: ColEnd: 0
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
; OBJ32-NEXT: ]
|
||||
|
||||
@ -214,15 +222,27 @@
|
||||
; OBJ64-NEXT: CodeSize: 0xE
|
||||
; OBJ64-NEXT: FilenameSegment [
|
||||
; OBJ64-NEXT: Filename: D:\test.c
|
||||
; OBJ64-NEXT: +0x0: 3
|
||||
; OBJ64-NEXT: +0x4: 4
|
||||
; OBJ64-NEXT: +0x9: 5
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: +0x0 [
|
||||
; OBJ64-NEXT: LineNumberStart: 3
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x4 [
|
||||
; OBJ64-NEXT: LineNumberStart: 4
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: +0x9 [
|
||||
; OBJ64-NEXT: LineNumberStart: 5
|
||||
; OBJ64-NEXT: LineNumberEndDelta: 0
|
||||
; OBJ64-NEXT: IsStatement: No
|
||||
; OBJ64-NEXT: ColStart: 0
|
||||
; OBJ64-NEXT: ColEnd: 0
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
; OBJ64-NEXT: ]
|
||||
|
||||
|
@ -103,41 +103,85 @@ MFUN32-NEXT: Type: 0xF1
|
||||
MFUN32-NEXT: PayloadSize: 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: 3
|
||||
MFUN32-NEXT: +0x3: 4
|
||||
MFUN32-NEXT: +0x8: 5
|
||||
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: 7
|
||||
MFUN32-NEXT: +0x3: 8
|
||||
MFUN32-NEXT: +0x8: 9
|
||||
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: 11
|
||||
MFUN32-NEXT: +0x3: 12
|
||||
MFUN32-NEXT: +0x8: 13
|
||||
MFUN32-NEXT: +0xD: 14
|
||||
MFUN32-NEXT: +0x12: 15
|
||||
MFUN32-NEXT: ]
|
||||
MFUN32-NEXT: ]
|
||||
MFUN32-NEXT: ]
|
||||
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-NEXT ]
|
||||
|
||||
MFUN64: CodeViewDebugInfo [
|
||||
MFUN64-NEXT: Magic: 0x4
|
||||
@ -208,9 +252,21 @@ 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: +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 [
|
||||
@ -219,9 +275,21 @@ 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: +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 [
|
||||
@ -230,11 +298,31 @@ 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: +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-NEXT: ]
|
||||
@ -306,20 +394,40 @@ MFILE32-NEXT: Flags: 0x0
|
||||
MFILE32-NEXT: CodeSize: 0x14
|
||||
MFILE32-NEXT: FilenameSegment [
|
||||
MFILE32-NEXT: Filename: d:\input.c
|
||||
MFILE32-NEXT: +0x0: 3
|
||||
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: 1
|
||||
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: 2
|
||||
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: 7
|
||||
MFILE32-NEXT: +0x12: 8
|
||||
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-NEXT: ]
|
||||
@ -357,28 +465,47 @@ MFILE64-NEXT: Subsection [
|
||||
MFILE64-NEXT: Type: 0xF1
|
||||
MFILE64-NEXT: PayloadSize: 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: 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: 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-NEXT: ]
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -411,9 +538,21 @@ 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: +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: ProcStart {
|
||||
@ -427,8 +566,20 @@ 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: +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: ]
|
||||
|
@ -603,12 +603,14 @@ void COFFDumper::printCodeViewSection(const SectionRef &Section) {
|
||||
// in the line table. The filename string is accessed using double
|
||||
// indirection to the string table subsection using the index subsection.
|
||||
uint32_t OffsetInIndex = DE.getU32(&Offset),
|
||||
SegmentLength = DE.getU32(&Offset),
|
||||
NumLines = DE.getU32(&Offset),
|
||||
FullSegmentSize = DE.getU32(&Offset);
|
||||
|
||||
uint32_t ColumnOffset = Offset + 8 * NumLines;
|
||||
DataExtractor ColumnDE(DE.getData(), true, 4);
|
||||
|
||||
if (FullSegmentSize !=
|
||||
12 + 8 * SegmentLength +
|
||||
(HasColumnInformation ? 4 * SegmentLength : 0)) {
|
||||
12 + 8 * NumLines + (HasColumnInformation ? 4 * NumLines : 0)) {
|
||||
error(object_error::parse_failed);
|
||||
return;
|
||||
}
|
||||
@ -635,29 +637,41 @@ void COFFDumper::printCodeViewSection(const SectionRef &Section) {
|
||||
StringRef Filename(CVStringTable.data() + FilenameOffset);
|
||||
ListScope S(W, "FilenameSegment");
|
||||
W.printString("Filename", Filename);
|
||||
for (unsigned J = 0; J != SegmentLength && DE.isValidOffset(Offset);
|
||||
++J) {
|
||||
for (unsigned LineIdx = 0;
|
||||
LineIdx != NumLines && DE.isValidOffset(Offset); ++LineIdx) {
|
||||
// Then go the (PC, LineNumber) pairs. The line number is stored in the
|
||||
// least significant 31 bits of the respective word in the table.
|
||||
uint32_t PC = DE.getU32(&Offset),
|
||||
LineNumber = DE.getU32(&Offset) & 0x7fffffff;
|
||||
uint32_t PC = DE.getU32(&Offset), LineData = DE.getU32(&Offset);
|
||||
if (PC >= FunctionSize) {
|
||||
error(object_error::parse_failed);
|
||||
return;
|
||||
}
|
||||
char Buffer[32];
|
||||
format("+0x%X", PC).snprint(Buffer, 32);
|
||||
W.printNumber(Buffer, LineNumber);
|
||||
}
|
||||
if (HasColumnInformation) {
|
||||
for (unsigned J = 0; J != SegmentLength && DE.isValidOffset(Offset);
|
||||
++J) {
|
||||
uint16_t ColStart = DE.getU16(&Offset);
|
||||
ListScope PCScope(W, Buffer);
|
||||
uint32_t LineNumberStart = LineData & COFF::CVL_MaxLineNumber;
|
||||
uint32_t LineNumberEndDelta =
|
||||
(LineData >> COFF::CVL_LineNumberStartBits) &
|
||||
COFF::CVL_LineNumberEndDeltaMask;
|
||||
bool IsStatement = LineData & COFF::CVL_IsStatement;
|
||||
W.printNumber("LineNumberStart", LineNumberStart);
|
||||
W.printNumber("LineNumberEndDelta", LineNumberEndDelta);
|
||||
W.printBoolean("IsStatement", IsStatement);
|
||||
if (HasColumnInformation &&
|
||||
ColumnDE.isValidOffsetForDataOfSize(ColumnOffset, 4)) {
|
||||
uint16_t ColStart = ColumnDE.getU16(&ColumnOffset);
|
||||
W.printNumber("ColStart", ColStart);
|
||||
uint16_t ColEnd = DE.getU16(&Offset);
|
||||
uint16_t ColEnd = ColumnDE.getU16(&ColumnOffset);
|
||||
W.printNumber("ColEnd", ColEnd);
|
||||
}
|
||||
}
|
||||
// Skip over the column data.
|
||||
if (HasColumnInformation) {
|
||||
for (unsigned LineIdx = 0;
|
||||
LineIdx != NumLines && DE.isValidOffset(Offset); ++LineIdx) {
|
||||
DE.getU32(&Offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user