llvm-project

Форк
0
/
pdb-source-lines.test 
125 строк · 4.9 Кб
1
Test the linker line tables on roughly the following example:
2

3
==> foo.h <==
4
void bar(void);
5
inline void foo(void) {
6
  bar();
7
}
8
==> pdb_lines_1.c <==
9
#include "foo.h"
10
int main(void) {
11
  foo();
12
  return 42;
13
}
14
==> pdb_lines_2.c <==
15
void bar(void) {
16
}
17

18
$ cl -c -Z7 pdb_lines*.c
19

20
RUN: yaml2obj %S/Inputs/pdb_lines_1.yaml -o %t.pdb_lines_1.obj
21
RUN: yaml2obj %S/Inputs/pdb_lines_2.yaml -o %t.pdb_lines_2.obj
22
RUN: rm -f %t.exe %t.pdb
23
RUN: lld-link -debug -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb %t.pdb_lines_1.obj %t.pdb_lines_2.obj
24
RUN: llvm-pdbutil pdb2yaml -modules -module-files -subsections=lines,fc %t.pdb | FileCheck %s
25

26
CHECK-LABEL: DbiStream:
27
CHECK-NEXT:   VerHeader:       V70
28
CHECK-NEXT:   Age:             1
29
CHECK-NEXT:   BuildNumber:     36363
30
CHECK-NEXT:   PdbDllVersion:   0
31
CHECK-NEXT:   PdbDllRbld:      0
32
CHECK-NEXT:   Flags:           0
33
CHECK-NEXT:   MachineType:     Amd64
34
CHECK-NEXT:   Modules:
35

36
CHECK-LABEL:    - Module:          {{.*}}pdb_lines_1.obj
37
CHECK-NEXT:       ObjFile:         {{.*}}pdb_lines_1.obj
38
CHECK-NEXT:       SourceFiles:
39
CHECK-NEXT:         - '{{.*}}pdb_lines_1.c'
40
CHECK-NEXT:         - '{{.*}}foo.h'
41
CHECK-NEXT:       Subsections:
42
CHECK-NEXT:         - !Lines
43
CHECK-NEXT:           CodeSize:        19
44
CHECK-NEXT:           Flags:           [  ]
45
CHECK-NEXT:           RelocOffset:     0
46
CHECK-NEXT:           RelocSegment:    1
47
CHECK-NEXT:           Blocks:
48
CHECK-NEXT:             - FileName:        '{{.*}}pdb_lines_1.c'
49
CHECK-NEXT:               Lines:
50
CHECK-NEXT:                 - Offset:          0
51
CHECK-NEXT:                   LineStart:       2
52
CHECK-NEXT:                   IsStatement:     true
53
CHECK-NEXT:                   EndDelta:        0
54
CHECK-NEXT:                 - Offset:          4
55
CHECK-NEXT:                   LineStart:       3
56
CHECK-NEXT:                   IsStatement:     true
57
CHECK-NEXT:                   EndDelta:        0
58
CHECK-NEXT:                 - Offset:          9
59
CHECK-NEXT:                   LineStart:       4
60
CHECK-NEXT:                   IsStatement:     true
61
CHECK-NEXT:                   EndDelta:        0
62
CHECK-NEXT:                 - Offset:          14
63
CHECK-NEXT:                   LineStart:       5
64
CHECK-NEXT:                   IsStatement:     true
65
CHECK-NEXT:                   EndDelta:        0
66
CHECK-NEXT:               Columns:
67
CHECK-NEXT:         - !Lines
68
CHECK-NEXT:           CodeSize:        14
69
CHECK-NEXT:           Flags:           [  ]
70
CHECK-NEXT:           RelocOffset:     32
71
CHECK-NEXT:           RelocSegment:    1
72
CHECK-NEXT:           Blocks:
73
CHECK-NEXT:             - FileName:        '{{.*}}foo.h'
74
CHECK-NEXT:               Lines:
75
CHECK-NEXT:                 - Offset:          0
76
CHECK-NEXT:                   LineStart:       2
77
CHECK-NEXT:                   IsStatement:     true
78
CHECK-NEXT:                   EndDelta:        0
79
CHECK-NEXT:                 - Offset:          4
80
CHECK-NEXT:                   LineStart:       3
81
CHECK-NEXT:                   IsStatement:     true
82
CHECK-NEXT:                   EndDelta:        0
83
CHECK-NEXT:                 - Offset:          9
84
CHECK-NEXT:                   LineStart:       4
85
CHECK-NEXT:                   IsStatement:     true
86
CHECK-NEXT:                   EndDelta:        0
87
CHECK-NEXT:               Columns:
88
CHECK-NEXT:         - !FileChecksums
89
CHECK-NEXT:           Checksums:
90
CHECK-NEXT:             - FileName:        '{{.*}}pdb_lines_1.c'
91
CHECK-NEXT:               Kind:            MD5
92
CHECK-NEXT:               Checksum:        4EB19DCD86C3BA2238A255C718572E7B
93
CHECK-NEXT:             - FileName:        '{{.*}}foo.h'
94
CHECK-NEXT:               Kind:            MD5
95
CHECK-NEXT:               Checksum:        061EB73ABB642532857A4F1D9CBAC323
96

97
CHECK-LABEL:    - Module:          {{.*}}pdb_lines_2.obj
98
CHECK-NEXT:       ObjFile:         {{.*}}pdb_lines_2.obj
99
CHECK-NEXT:       SourceFiles:
100
CHECK-NEXT:         - '{{.*}}pdb_lines_2.c'
101
CHECK-NEXT:       Subsections:
102
CHECK-NEXT:         - !Lines
103
CHECK-NEXT:           CodeSize:        1
104
CHECK-NEXT:           Flags:           [  ]
105
CHECK-NEXT:           RelocOffset:     48
106
CHECK-NEXT:           RelocSegment:    1
107
CHECK-NEXT:           Blocks:
108
CHECK-NEXT:             - FileName:        '{{.*}}pdb_lines_2.c'
109
CHECK-NEXT:               Lines:
110
CHECK-NEXT:                 - Offset:          0
111
CHECK-NEXT:                   LineStart:       1
112
CHECK-NEXT:                   IsStatement:     true
113
CHECK-NEXT:                   EndDelta:        0
114
CHECK-NEXT:                 - Offset:          0
115
CHECK-NEXT:                   LineStart:       2
116
CHECK-NEXT:                   IsStatement:     true
117
CHECK-NEXT:                   EndDelta:        0
118
CHECK-NEXT:               Columns:
119
CHECK-NEXT:         - !FileChecksums
120
CHECK-NEXT:           Checksums:
121
CHECK-NEXT:             - FileName:        '{{.*}}pdb_lines_2.c'
122
CHECK-NEXT:               Kind:            MD5
123
CHECK-NEXT:               Checksum:        DF91CB3A2B8D917486574BB50CAC4CC7
124
CHECK-NEXT:     - Module:          '* Linker *'
125
CHECK-NEXT:       ObjFile:         ''
126

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.