1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2; The following two object files were generated using the following command: 3; D:\> cl /Z7 /c source.c 4; with the following contents of D:\source.c: 5; void z(void); 6; 7; void x(void) { 8; z(); 9; } 10; 11; void y(void) { 12; z(); 13; } 14; 15; void f(void) { 16; x(); 17; y(); 18; z(); 19; } 20; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively. 21RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \ 22RUN: | FileCheck %s -check-prefix MFUN32 23RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \ 24RUN: | FileCheck %s -check-prefix MFUN32 25RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \ 26RUN: | FileCheck %s -check-prefix MFUN64 27RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \ 28RUN: | FileCheck %s -check-prefix MFUN64 29 30MFUN32: CodeViewDebugInfo [ 31MFUN32-NEXT: Magic: 0x4 32MFUN32-NEXT: Subsection [ 33MFUN32-NEXT: Type: 0xF1 34MFUN32-NEXT: PayloadSize: 0x52 35MFUN32: ] 36MFUN32-NEXT: Subsection [ 37MFUN32-NEXT: Type: 0xF5 38MFUN32-NEXT: PayloadSize: 0x24 39MFUN32: ] 40MFUN32-NEXT: Subsection [ 41MFUN32-NEXT: Type: 0xF1 42MFUN32-NEXT: PayloadSize: 0x4B 43MFUN32: ProcStart { 44MFUN32-NEXT: DisplayName: x 45MFUN32-NEXT: Section: _x 46MFUN32-NEXT: CodeSize: 0xA 47MFUN32-NEXT: } 48MFUN32-NEXT: ProcEnd 49MFUN32: ] 50MFUN32-NEXT: Subsection [ 51MFUN32-NEXT: Type: 0xF2 52MFUN32-NEXT: PayloadSize: 0x30 53MFUN32: LinkageName: _x 54MFUN32-NEXT: ] 55MFUN32-NEXT: Subsection [ 56MFUN32-NEXT: Type: 0xF5 57MFUN32-NEXT: PayloadSize: 0x24 58MFUN32: ] 59MFUN32-NEXT: Subsection [ 60MFUN32-NEXT: Type: 0xF1 61MFUN32-NEXT: PayloadSize: 0x4B 62MFUN32: ProcStart { 63MFUN32-NEXT: DisplayName: y 64MFUN32-NEXT: Section: _y 65MFUN32-NEXT: CodeSize: 0xA 66MFUN32-NEXT: } 67MFUN32-NEXT: ProcEnd 68MFUN32: ] 69MFUN32-NEXT: Subsection [ 70MFUN32-NEXT: Type: 0xF2 71MFUN32-NEXT: PayloadSize: 0x30 72MFUN32: LinkageName: _y 73MFUN32-NEXT: ] 74MFUN32-NEXT: Subsection [ 75MFUN32-NEXT: Type: 0xF5 76MFUN32-NEXT: PayloadSize: 0x24 77MFUN32: ] 78MFUN32-NEXT: Subsection [ 79MFUN32-NEXT: Type: 0xF1 80MFUN32-NEXT: PayloadSize: 0x4B 81MFUN32: ProcStart { 82MFUN32-NEXT: DisplayName: f 83MFUN32-NEXT: Section: _f 84MFUN32-NEXT: CodeSize: 0x14 85MFUN32-NEXT: } 86MFUN32-NEXT: ProcEnd 87MFUN32: ] 88MFUN32-NEXT: Subsection [ 89MFUN32-NEXT: Type: 0xF2 90MFUN32-NEXT: PayloadSize: 0x40 91MFUN32: LinkageName: _f 92MFUN32-NEXT: ] 93MFUN32-NEXT: Subsection [ 94MFUN32-NEXT: Type: 0xF4 95MFUN32-NEXT: PayloadSize: 0x18 96MFUN32: ] 97MFUN32-NEXT: Subsection [ 98MFUN32-NEXT: Type: 0xF3 99MFUN32-NEXT: PayloadSize: 0x46 100MFUN32: ] 101MFUN32-NEXT: Subsection [ 102MFUN32-NEXT: Type: 0xF1 103MFUN32-NEXT: PayloadSize: 0x8 104MFUN32: ] 105MFUN32-NEXT: FunctionLineTable [ 106MFUN32-NEXT: LinkageName: _x 107MFUN32-NEXT: Flags: 0x0 108MFUN32-NEXT: CodeSize: 0xA 109MFUN32-NEXT: FilenameSegment [ 110MFUN32-NEXT: Filename: d:\source.c 111MFUN32-NEXT: +0x0: 3 112MFUN32-NEXT: +0x3: 4 113MFUN32-NEXT: +0x8: 5 114MFUN32-NEXT: ] 115MFUN32-NEXT: ] 116MFUN32-NEXT: FunctionLineTable [ 117MFUN32-NEXT: LinkageName: _y 118MFUN32-NEXT: Flags: 0x0 119MFUN32-NEXT: CodeSize: 0xA 120MFUN32-NEXT: FilenameSegment [ 121MFUN32-NEXT: Filename: d:\source.c 122MFUN32-NEXT: +0x0: 7 123MFUN32-NEXT: +0x3: 8 124MFUN32-NEXT: +0x8: 9 125MFUN32-NEXT: ] 126MFUN32-NEXT: ] 127MFUN32-NEXT: FunctionLineTable [ 128MFUN32-NEXT: LinkageName: _f 129MFUN32-NEXT: Flags: 0x0 130MFUN32-NEXT: CodeSize: 0x14 131MFUN32-NEXT: FilenameSegment [ 132MFUN32-NEXT: Filename: d:\source.c 133MFUN32-NEXT: +0x0: 11 134MFUN32-NEXT: +0x3: 12 135MFUN32-NEXT: +0x8: 13 136MFUN32-NEXT: +0xD: 14 137MFUN32-NEXT: +0x12: 15 138MFUN32-NEXT: ] 139MFUN32-NEXT: ] 140MFUN32-NEXT: ] 141 142MFUN64: CodeViewDebugInfo [ 143MFUN64-NEXT: Magic: 0x4 144MFUN64-NEXT: Subsection [ 145MFUN64-NEXT: Type: 0xF1 146MFUN64-NEXT: PayloadSize: 0x52 147MFUN64: ] 148MFUN64-NEXT: Subsection [ 149MFUN64-NEXT: Type: 0xF1 150MFUN64-NEXT: PayloadSize: 0x4B 151MFUN64: ProcStart { 152MFUN64-NEXT: DisplayName: x 153MFUN64-NEXT: Section: x 154MFUN64-NEXT: CodeSize: 0xE 155MFUN64-NEXT: } 156MFUN64-NEXT: ProcEnd 157MFUN64: ] 158MFUN64-NEXT: Subsection [ 159MFUN64-NEXT: Type: 0xF2 160MFUN64-NEXT: PayloadSize: 0x30 161MFUN64: LinkageName: x 162MFUN64-NEXT: ] 163MFUN64-NEXT: Subsection [ 164MFUN64-NEXT: Type: 0xF1 165MFUN64-NEXT: PayloadSize: 0x4B 166MFUN64: ProcStart { 167MFUN64-NEXT: DisplayName: y 168MFUN64-NEXT: Section: y 169MFUN64-NEXT: CodeSize: 0xE 170MFUN64-NEXT: } 171MFUN64-NEXT: ProcEnd 172MFUN64: ] 173MFUN64-NEXT: Subsection [ 174MFUN64-NEXT: Type: 0xF2 175MFUN64-NEXT: PayloadSize: 0x30 176MFUN64: LinkageName: y 177MFUN64-NEXT: ] 178MFUN64-NEXT: Subsection [ 179MFUN64-NEXT: Type: 0xF1 180MFUN64-NEXT: PayloadSize: 0x4B 181MFUN64: ProcStart { 182MFUN64-NEXT: DisplayName: f 183MFUN64-NEXT: Section: f 184MFUN64-NEXT: CodeSize: 0x18 185MFUN64-NEXT: } 186MFUN64-NEXT: ProcEnd 187MFUN64: ] 188MFUN64-NEXT: Subsection [ 189MFUN64-NEXT: Type: 0xF2 190MFUN64-NEXT: PayloadSize: 0x40 191MFUN64: LinkageName: f 192MFUN64-NEXT: ] 193MFUN64-NEXT: Subsection [ 194MFUN64-NEXT: Type: 0xF4 195MFUN64-NEXT: PayloadSize: 0x18 196MFUN64: ] 197MFUN64-NEXT: Subsection [ 198MFUN64-NEXT: Type: 0xF3 199MFUN64-NEXT: PayloadSize: 0xD 200MFUN64: ] 201MFUN64-NEXT: Subsection [ 202MFUN64-NEXT: Type: 0xF1 203MFUN64-NEXT: PayloadSize: 0x8 204MFUN64: ] 205MFUN64-NEXT: FunctionLineTable [ 206MFUN64-NEXT: LinkageName: x 207MFUN64-NEXT: Flags: 0x0 208MFUN64-NEXT: CodeSize: 0xE 209MFUN64-NEXT: FilenameSegment [ 210MFUN64-NEXT: Filename: d:\source.c 211MFUN64-NEXT: +0x0: 3 212MFUN64-NEXT: +0x4: 4 213MFUN64-NEXT: +0x9: 5 214MFUN64-NEXT: ] 215MFUN64-NEXT: ] 216MFUN64-NEXT: FunctionLineTable [ 217MFUN64-NEXT: LinkageName: y 218MFUN64-NEXT: Flags: 0x0 219MFUN64-NEXT: CodeSize: 0xE 220MFUN64-NEXT: FilenameSegment [ 221MFUN64-NEXT: Filename: d:\source.c 222MFUN64-NEXT: +0x0: 7 223MFUN64-NEXT: +0x4: 8 224MFUN64-NEXT: +0x9: 9 225MFUN64-NEXT: ] 226MFUN64-NEXT: ] 227MFUN64-NEXT: FunctionLineTable [ 228MFUN64-NEXT: LinkageName: f 229MFUN64-NEXT: Flags: 0x0 230MFUN64-NEXT: CodeSize: 0x18 231MFUN64-NEXT: FilenameSegment [ 232MFUN64-NEXT: Filename: d:\source.c 233MFUN64-NEXT: +0x0: 11 234MFUN64-NEXT: +0x4: 12 235MFUN64-NEXT: +0x9: 13 236MFUN64-NEXT: +0xE: 14 237MFUN64-NEXT: +0x13: 15 238MFUN64-NEXT: ] 239MFUN64-NEXT: ] 240MFUN64-NEXT: ] 241 242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 243; The following two object files were generated using the following command: 244; D:\> cl /Z7 /c input.c 245; with the following contents of D:\input.c: 246; void g(void); 247; 248; void f(void) { 249; #line 1 "one.c" 250; g(); 251; #line 2 "two.c" 252; g(); 253; #line 7 "one.c" 254; g(); 255; } 256; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively. 257RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-i368 \ 258RUN: | FileCheck %s -check-prefix MFILE32 259RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-i368 \ 260RUN: | FileCheck %s -check-prefix MFILE32 261RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \ 262RUN: | FileCheck %s -check-prefix MFILE64 263RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \ 264RUN: | FileCheck %s -check-prefix MFILE64 265 266MFILE32: CodeViewDebugInfo [ 267MFILE32-NEXT: Magic: 0x4 268MFILE32-NEXT: Subsection [ 269MFILE32-NEXT: Type: 0xF1 270MFILE32-NEXT: PayloadSize: 0x51 271MFILE32: ] 272MFILE32-NEXT: Subsection [ 273MFILE32-NEXT: Type: 0xF5 274MFILE32-NEXT: PayloadSize: 0x24 275MFILE32: ] 276MFILE32-NEXT: Subsection [ 277MFILE32-NEXT: Type: 0xF1 278MFILE32-NEXT: PayloadSize: 0x4B 279MFILE32: ProcStart { 280MFILE32-NEXT: DisplayName: f 281MFILE32-NEXT: Section: _f 282MFILE32-NEXT: CodeSize: 0x14 283MFILE32-NEXT: } 284MFILE32-NEXT: ProcEnd 285MFILE32: ] 286MFILE32-NEXT: Subsection [ 287MFILE32-NEXT: Type: 0xF2 288MFILE32-NEXT: PayloadSize: 0x64 289MFILE32: LinkageName: _f 290MFILE32-NEXT: ] 291MFILE32-NEXT: Subsection [ 292MFILE32-NEXT: Type: 0xF4 293MFILE32-NEXT: PayloadSize: 0x28 294MFILE32: ] 295MFILE32-NEXT: Subsection [ 296MFILE32-NEXT: Type: 0xF3 297MFILE32-NEXT: PayloadSize: 0x57 298MFILE32: ] 299MFILE32-NEXT: Subsection [ 300MFILE32-NEXT: Type: 0xF1 301MFILE32-NEXT: PayloadSize: 0x8 302MFILE32: ] 303MFILE32-NEXT: FunctionLineTable [ 304MFILE32-NEXT: LinkageName: _f 305MFILE32-NEXT: Flags: 0x0 306MFILE32-NEXT: CodeSize: 0x14 307MFILE32-NEXT: FilenameSegment [ 308MFILE32-NEXT: Filename: d:\input.c 309MFILE32-NEXT: +0x0: 3 310MFILE32-NEXT: ] 311MFILE32-NEXT: FilenameSegment [ 312MFILE32-NEXT: Filename: d:\one.c 313MFILE32-NEXT: +0x3: 1 314MFILE32-NEXT: ] 315MFILE32-NEXT: FilenameSegment [ 316MFILE32-NEXT: Filename: d:\two.c 317MFILE32-NEXT: +0x8: 2 318MFILE32-NEXT: ] 319MFILE32-NEXT: FilenameSegment [ 320MFILE32-NEXT: Filename: d:\one.c 321MFILE32-NEXT: +0xD: 7 322MFILE32-NEXT: +0x12: 8 323MFILE32-NEXT: ] 324MFILE32-NEXT: ] 325MFILE32-NEXT: ] 326 327MFILE64: CodeViewDebugInfo [ 328MFILE64-NEXT: Magic: 0x4 329MFILE64-NEXT: Subsection [ 330MFILE64-NEXT: Type: 0xF1 331MFILE64-NEXT: PayloadSize: 0x51 332MFILE64: ] 333MFILE64-NEXT: Subsection [ 334MFILE64-NEXT: Type: 0xF1 335MFILE64-NEXT: PayloadSize: 0x4B 336MFILE64: ProcStart { 337MFILE64-NEXT: DisplayName: f 338MFILE64-NEXT: Section: f 339MFILE64-NEXT: CodeSize: 0x18 340MFILE64-NEXT: } 341MFILE64-NEXT: ProcEnd 342MFILE64: ] 343MFILE64-NEXT: Subsection [ 344MFILE64-NEXT: Type: 0xF2 345MFILE64-NEXT: PayloadSize: 0x64 346MFILE64: LinkageName: f 347MFILE64-NEXT: ] 348MFILE64-NEXT: Subsection [ 349MFILE64-NEXT: Type: 0xF4 350MFILE64-NEXT: PayloadSize: 0x28 351MFILE64: ] 352MFILE64-NEXT: Subsection [ 353MFILE64-NEXT: Type: 0xF3 354MFILE64-NEXT: PayloadSize: 0x1E 355MFILE64: ] 356MFILE64-NEXT: Subsection [ 357MFILE64-NEXT: Type: 0xF1 358MFILE64-NEXT: PayloadSize: 0x8 359MFILE64: ] 360MFILE64-NEXT: FunctionLineTable [ 361MFILE64-NEXT: LinkageName: f 362MFILE64-NEXT: Flags: 0x0 363MFILE64-NEXT: CodeSize: 0x18 364MFILE64-NEXT: FilenameSegment [ 365MFILE64-NEXT: Filename: d:\input.c 366MFILE64-NEXT: +0x0: 3 367MFILE64-NEXT: ] 368MFILE64-NEXT: FilenameSegment [ 369MFILE64-NEXT: Filename: d:\one.c 370MFILE64-NEXT: +0x4: 1 371MFILE64-NEXT: ] 372MFILE64-NEXT: FilenameSegment [ 373MFILE64-NEXT: Filename: d:\two.c 374MFILE64-NEXT: +0x9: 2 375MFILE64-NEXT: ] 376MFILE64-NEXT: FilenameSegment [ 377MFILE64-NEXT: Filename: d:\one.c 378MFILE64-NEXT: +0xE: 7 379MFILE64-NEXT: +0x13: 8 380MFILE64-NEXT: ] 381MFILE64-NEXT: ] 382MFILE64-NEXT: ] 383 384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 385; The following object files were generated using the following command: 386; C:\src> cl /Z7 /Gy /c test.cc 387; with the following contents of C:\src\test.cc: 388; int f() 389; { 390; return 0; 391; } 392; 393; int g() 394; { 395; return 0; 396; } 397; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively. 398RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \ 399RUN: | FileCheck %s -check-prefix MCOMDAT 400RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \ 401RUN: | FileCheck %s -check-prefix MCOMDAT 402 403MCOMDAT: ProcStart { 404MCOMDAT-NEXT: DisplayName: f 405MCOMDAT-NEXT: Section: ?f@@YAHXZ 406MCOMDAT-NEXT: CodeSize: 0x7 407MCOMDAT-NEXT: } 408MCOMDAT: FunctionLineTable [ 409MCOMDAT-NEXT: LinkageName: ?f@@YAHXZ 410MCOMDAT-NEXT: Flags: 0x0 411MCOMDAT-NEXT: CodeSize: 0x7 412MCOMDAT-NEXT: FilenameSegment [ 413MCOMDAT-NEXT: Filename: c:\src\test.cc 414MCOMDAT-NEXT: +0x0: 2 415MCOMDAT-NEXT: +0x3: 3 416MCOMDAT-NEXT: +0x5: 4 417MCOMDAT-NEXT: ] 418MCOMDAT-NEXT: ] 419MCOMDAT: ProcStart { 420MCOMDAT-NEXT: DisplayName: g 421MCOMDAT-NEXT: Section: ?g@@YAHXZ 422MCOMDAT-NEXT: CodeSize: 0x7 423MCOMDAT-NEXT: } 424MCOMDAT: FunctionLineTable [ 425MCOMDAT-NEXT: LinkageName: ?g@@YAHXZ 426MCOMDAT-NEXT: Flags: 0x0 427MCOMDAT-NEXT: CodeSize: 0x7 428MCOMDAT-NEXT: FilenameSegment [ 429MCOMDAT-NEXT: Filename: c:\src\test.cc 430MCOMDAT-NEXT: +0x0: 7 431MCOMDAT-NEXT: +0x3: 8 432MCOMDAT-NEXT: +0x5: 9 433MCOMDAT-NEXT: ] 434MCOMDAT-NEXT: ] 435