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: Section: .debug$S (2) 32MFUN32-NEXT: Magic: 0x4 33MFUN32-NEXT: Subsection [ 34MFUN32-NEXT: SubSectionType: Symbols (0xF1) 35MFUN32-NEXT: SubSectionSize: 0x52 36MFUN32: ] 37MFUN32: Subsection [ 38MFUN32-NEXT: SubSectionType: FrameData (0xF5) 39MFUN32-NEXT: SubSectionSize: 0x24 40MFUN32: ] 41MFUN32: Subsection [ 42MFUN32-NEXT: SubSectionType: Symbols (0xF1) 43MFUN32-NEXT: SubSectionSize: 0x4B 44MFUN32: GlobalProcIdSym { 45MFUN32: CodeSize: 0xA 46MFUN32: DisplayName: x 47MFUN32: LinkageName: _x 48MFUN32: } 49MFUN32: ProcEnd 50MFUN32: ] 51MFUN32: Subsection [ 52MFUN32-NEXT: SubSectionType: Lines (0xF2) 53MFUN32-NEXT: SubSectionSize: 0x30 54MFUN32: LinkageName: _x 55MFUN32-NEXT: ] 56MFUN32-NEXT: Subsection [ 57MFUN32-NEXT: SubSectionType: FrameData (0xF5) 58MFUN32-NEXT: SubSectionSize: 0x24 59MFUN32: ] 60MFUN32: Subsection [ 61MFUN32-NEXT: SubSectionType: Symbols (0xF1) 62MFUN32-NEXT: SubSectionSize: 0x4B 63MFUN32: GlobalProcIdSym { 64MFUN32: CodeSize: 0xA 65MFUN32: DisplayName: y 66MFUN32: LinkageName: _y 67MFUN32: } 68MFUN32: ProcEnd 69MFUN32: ] 70MFUN32-NEXT: Subsection [ 71MFUN32-NEXT: SubSectionType: Lines (0xF2) 72MFUN32-NEXT: SubSectionSize: 0x30 73MFUN32: LinkageName: _y 74MFUN32-NEXT: ] 75MFUN32-NEXT: Subsection [ 76MFUN32-NEXT: SubSectionType: FrameData (0xF5) 77MFUN32-NEXT: SubSectionSize: 0x24 78MFUN32: ] 79MFUN32: Subsection [ 80MFUN32-NEXT: SubSectionType: Symbols (0xF1) 81MFUN32-NEXT: SubSectionSize: 0x4B 82MFUN32: GlobalProcIdSym { 83MFUN32: CodeSize: 0x14 84MFUN32: DisplayName: f 85MFUN32: LinkageName: _f 86MFUN32: } 87MFUN32: ProcEnd 88MFUN32: ] 89MFUN32: Subsection [ 90MFUN32-NEXT: SubSectionType: Lines (0xF2) 91MFUN32-NEXT: SubSectionSize: 0x40 92MFUN32: LinkageName: _f 93MFUN32-NEXT: ] 94MFUN32-NEXT: Subsection [ 95MFUN32-NEXT: SubSectionType: FileChecksums (0xF4) 96MFUN32-NEXT: SubSectionSize: 0x18 97MFUN32: ] 98MFUN32-NEXT: Subsection [ 99MFUN32-NEXT: SubSectionType: StringTable (0xF3) 100MFUN32-NEXT: SubSectionSize: 0x46 101MFUN32: ] 102MFUN32-NEXT: Subsection [ 103MFUN32-NEXT: SubSectionType: Symbols (0xF1) 104MFUN32-NEXT: SubSectionSize: 0x8 105MFUN32: ] 106MFUN32-NEXT: FunctionLineTable [ 107MFUN32-NEXT LinkageName: _x 108MFUN32-NEXT Flags: 0x0 109MFUN32-NEXT CodeSize: 0xA 110MFUN32-NEXT FilenameSegment [ 111MFUN32-NEXT Filename: d:\source.c 112MFUN32-NEXT +0x0 [ 113MFUN32-NEXT LineNumberStart: 3 114MFUN32-NEXT LineNumberEndDelta: 0 115MFUN32-NEXT IsStatement: Yes 116MFUN32-NEXT ] 117MFUN32-NEXT +0x3 [ 118MFUN32-NEXT LineNumberStart: 4 119MFUN32-NEXT LineNumberEndDelta: 0 120MFUN32-NEXT IsStatement: Yes 121MFUN32-NEXT ] 122MFUN32-NEXT +0x8 [ 123MFUN32-NEXT LineNumberStart: 5 124MFUN32-NEXT LineNumberEndDelta: 0 125MFUN32-NEXT IsStatement: Yes 126MFUN32-NEXT ] 127MFUN32-NEXT ] 128MFUN32-NEXT ] 129MFUN32-NEXT FunctionLineTable [ 130MFUN32-NEXT LinkageName: _y 131MFUN32-NEXT Flags: 0x0 132MFUN32-NEXT CodeSize: 0xA 133MFUN32-NEXT FilenameSegment [ 134MFUN32-NEXT Filename: d:\source.c 135MFUN32-NEXT +0x0 [ 136MFUN32-NEXT LineNumberStart: 7 137MFUN32-NEXT LineNumberEndDelta: 0 138MFUN32-NEXT IsStatement: Yes 139MFUN32-NEXT ] 140MFUN32-NEXT +0x3 [ 141MFUN32-NEXT LineNumberStart: 8 142MFUN32-NEXT LineNumberEndDelta: 0 143MFUN32-NEXT IsStatement: Yes 144MFUN32-NEXT ] 145MFUN32-NEXT +0x8 [ 146MFUN32-NEXT LineNumberStart: 9 147MFUN32-NEXT LineNumberEndDelta: 0 148MFUN32-NEXT IsStatement: Yes 149MFUN32-NEXT ] 150MFUN32-NEXT ] 151MFUN32-NEXT ] 152MFUN32-NEXT FunctionLineTable [ 153MFUN32-NEXT LinkageName: _f 154MFUN32-NEXT Flags: 0x0 155MFUN32-NEXT CodeSize: 0x14 156MFUN32-NEXT FilenameSegment [ 157MFUN32-NEXT Filename: d:\source.c 158MFUN32-NEXT +0x0 [ 159MFUN32-NEXT LineNumberStart: 11 160MFUN32-NEXT LineNumberEndDelta: 0 161MFUN32-NEXT IsStatement: Yes 162MFUN32-NEXT ] 163MFUN32-NEXT +0x3 [ 164MFUN32-NEXT LineNumberStart: 12 165MFUN32-NEXT LineNumberEndDelta: 0 166MFUN32-NEXT IsStatement: Yes 167MFUN32-NEXT ] 168MFUN32-NEXT +0x8 [ 169MFUN32-NEXT LineNumberStart: 13 170MFUN32-NEXT LineNumberEndDelta: 0 171MFUN32-NEXT IsStatement: Yes 172MFUN32-NEXT ] 173MFUN32-NEXT +0xD [ 174MFUN32-NEXT LineNumberStart: 14 175MFUN32-NEXT LineNumberEndDelta: 0 176MFUN32-NEXT IsStatement: Yes 177MFUN32-NEXT ] 178MFUN32-NEXT +0x12 [ 179MFUN32-NEXT LineNumberStart: 15 180MFUN32-NEXT LineNumberEndDelta: 0 181MFUN32-NEXT IsStatement: Yes 182MFUN32-NEXT ] 183MFUN32-NEXT ] 184MFUN32-NEXT ] 185MFUN32: ] 186 187MFUN64: CodeViewDebugInfo [ 188MFUN64: Magic: 0x4 189MFUN64-NEXT: Subsection [ 190MFUN64-NEXT: SubSectionType: Symbols (0xF1) 191MFUN64-NEXT: SubSectionSize: 0x52 192MFUN64: ] 193MFUN64: Subsection [ 194MFUN64-NEXT: SubSectionType: Symbols (0xF1) 195MFUN64-NEXT: SubSectionSize: 0x4B 196MFUN64: GlobalProcIdSym { 197MFUN64: CodeSize: 0xE 198MFUN64: DisplayName: x 199MFUN64: LinkageName: x 200MFUN64: } 201MFUN64: ProcEnd 202MFUN64: ] 203MFUN64-NEXT: Subsection [ 204MFUN64-NEXT: SubSectionType: Lines (0xF2) 205MFUN64-NEXT: SubSectionSize: 0x30 206MFUN64: LinkageName: x 207MFUN64-NEXT: ] 208MFUN64-NEXT: Subsection [ 209MFUN64-NEXT: SubSectionType: Symbols (0xF1) 210MFUN64-NEXT: SubSectionSize: 0x4B 211MFUN64: GlobalProcIdSym { 212MFUN64: CodeSize: 0xE 213MFUN64: DisplayName: y 214MFUN64: LinkageName: y 215MFUN64: } 216MFUN64: ProcEnd 217MFUN64: ] 218MFUN64-NEXT: Subsection [ 219MFUN64-NEXT: SubSectionType: Lines (0xF2) 220MFUN64-NEXT: SubSectionSize: 0x30 221MFUN64: LinkageName: y 222MFUN64-NEXT: ] 223MFUN64-NEXT: Subsection [ 224MFUN64-NEXT: SubSectionType: Symbols (0xF1) 225MFUN64-NEXT: SubSectionSize: 0x4B 226MFUN64: GlobalProcIdSym { 227MFUN64: CodeSize: 0x18 228MFUN64: DisplayName: f 229MFUN64: LinkageName: f 230MFUN64: } 231MFUN64: ProcEnd 232MFUN64: ] 233MFUN64-NEXT: Subsection [ 234MFUN64-NEXT: SubSectionType: Lines (0xF2) 235MFUN64-NEXT: SubSectionSize: 0x40 236MFUN64: LinkageName: f 237MFUN64-NEXT: ] 238MFUN64-NEXT: Subsection [ 239MFUN64-NEXT: SubSectionType: FileChecksums (0xF4) 240MFUN64-NEXT: SubSectionSize: 0x18 241MFUN64: ] 242MFUN64-NEXT: Subsection [ 243MFUN64-NEXT: SubSectionType: StringTable (0xF3) 244MFUN64-NEXT: SubSectionSize: 0xD 245MFUN64: ] 246MFUN64-NEXT: Subsection [ 247MFUN64-NEXT: SubSectionType: Symbols (0xF1) 248MFUN64-NEXT: SubSectionSize: 0x8 249MFUN64: ] 250MFUN64-NEXT: FunctionLineTable [ 251MFUN64-NEXT: LinkageName: x 252MFUN64-NEXT: Flags: 0x0 253MFUN64-NEXT: CodeSize: 0xE 254MFUN64-NEXT: FilenameSegment [ 255MFUN64-NEXT: Filename: d:\source.c 256MFUN64-NEXT: +0x0 [ 257MFUN64-NEXT: LineNumberStart: 3 258MFUN64-NEXT: LineNumberEndDelta: 0 259MFUN64-NEXT: IsStatement: Yes 260MFUN64-NEXT: ] 261MFUN64-NEXT: +0x4 [ 262MFUN64-NEXT: LineNumberStart: 4 263MFUN64-NEXT: LineNumberEndDelta: 0 264MFUN64-NEXT: IsStatement: Yes 265MFUN64-NEXT: ] 266MFUN64-NEXT: +0x9 [ 267MFUN64-NEXT: LineNumberStart: 5 268MFUN64-NEXT: LineNumberEndDelta: 0 269MFUN64-NEXT: IsStatement: Yes 270MFUN64-NEXT: ] 271MFUN64-NEXT: ] 272MFUN64-NEXT: ] 273MFUN64-NEXT: FunctionLineTable [ 274MFUN64-NEXT: LinkageName: y 275MFUN64-NEXT: Flags: 0x0 276MFUN64-NEXT: CodeSize: 0xE 277MFUN64-NEXT: FilenameSegment [ 278MFUN64-NEXT: Filename: d:\source.c 279MFUN64-NEXT: +0x0 [ 280MFUN64-NEXT: LineNumberStart: 7 281MFUN64-NEXT: LineNumberEndDelta: 0 282MFUN64-NEXT: IsStatement: Yes 283MFUN64-NEXT: ] 284MFUN64-NEXT: +0x4 [ 285MFUN64-NEXT: LineNumberStart: 8 286MFUN64-NEXT: LineNumberEndDelta: 0 287MFUN64-NEXT: IsStatement: Yes 288MFUN64-NEXT: ] 289MFUN64-NEXT: +0x9 [ 290MFUN64-NEXT: LineNumberStart: 9 291MFUN64-NEXT: LineNumberEndDelta: 0 292MFUN64-NEXT: IsStatement: Yes 293MFUN64-NEXT: ] 294MFUN64-NEXT: ] 295MFUN64-NEXT: ] 296MFUN64-NEXT: FunctionLineTable [ 297MFUN64-NEXT: LinkageName: f 298MFUN64-NEXT: Flags: 0x0 299MFUN64-NEXT: CodeSize: 0x18 300MFUN64-NEXT: FilenameSegment [ 301MFUN64-NEXT: Filename: d:\source.c 302MFUN64-NEXT: +0x0 [ 303MFUN64-NEXT: LineNumberStart: 11 304MFUN64-NEXT: LineNumberEndDelta: 0 305MFUN64-NEXT: IsStatement: Yes 306MFUN64-NEXT: ] 307MFUN64-NEXT: +0x4 [ 308MFUN64-NEXT: LineNumberStart: 12 309MFUN64-NEXT: LineNumberEndDelta: 0 310MFUN64-NEXT: IsStatement: Yes 311MFUN64-NEXT: ] 312MFUN64-NEXT: +0x9 [ 313MFUN64-NEXT: LineNumberStart: 13 314MFUN64-NEXT: LineNumberEndDelta: 0 315MFUN64-NEXT: IsStatement: Yes 316MFUN64-NEXT: ] 317MFUN64-NEXT: +0xE [ 318MFUN64-NEXT: LineNumberStart: 14 319MFUN64-NEXT: LineNumberEndDelta: 0 320MFUN64-NEXT: IsStatement: Yes 321MFUN64-NEXT: ] 322MFUN64-NEXT: +0x13 [ 323MFUN64-NEXT: LineNumberStart: 15 324MFUN64-NEXT: LineNumberEndDelta: 0 325MFUN64-NEXT: IsStatement: Yes 326MFUN64-NEXT: ] 327MFUN64-NEXT: ] 328MFUN64-NEXT: ] 329MFUN64: ] 330 331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 332; The following two object files were generated using the following command: 333; D:\> cl /Z7 /c input.c 334; with the following contents of D:\input.c: 335; void g(void); 336; 337; void f(void) { 338; #line 1 "one.c" 339; g(); 340; #line 2 "two.c" 341; g(); 342; #line 7 "one.c" 343; g(); 344; } 345; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively. 346RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-i368 \ 347RUN: | FileCheck %s -check-prefix MFILE32 348RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-i368 \ 349RUN: | FileCheck %s -check-prefix MFILE32 350RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \ 351RUN: | FileCheck %s -check-prefix MFILE64 352RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \ 353RUN: | FileCheck %s -check-prefix MFILE64 354 355MFILE32: CodeViewDebugInfo [ 356MFILE32: Magic: 0x4 357MFILE32-NEXT: Subsection [ 358MFILE32-NEXT: SubSectionType: Symbols (0xF1) 359MFILE32-NEXT: SubSectionSize: 0x51 360MFILE32: ] 361MFILE32: Subsection [ 362MFILE32-NEXT: SubSectionType: FrameData (0xF5) 363MFILE32-NEXT: SubSectionSize: 0x24 364MFILE32: ] 365MFILE32: Subsection [ 366MFILE32-NEXT: SubSectionType: Symbols (0xF1) 367MFILE32-NEXT: SubSectionSize: 0x4B 368MFILE32: GlobalProcIdSym { 369MFILE32: CodeSize: 0x14 370MFILE32: DisplayName: f 371MFILE32: LinkageName: _f 372MFILE32: } 373MFILE32: ProcEnd 374MFILE32: ] 375MFILE32-NEXT: Subsection [ 376MFILE32-NEXT: SubSectionType: Lines (0xF2) 377MFILE32-NEXT: SubSectionSize: 0x64 378MFILE32: LinkageName: _f 379MFILE32-NEXT: ] 380MFILE32-NEXT: Subsection [ 381MFILE32-NEXT: SubSectionType: FileChecksums (0xF4) 382MFILE32-NEXT: SubSectionSize: 0x28 383MFILE32: ] 384MFILE32-NEXT: Subsection [ 385MFILE32-NEXT: SubSectionType: StringTable (0xF3) 386MFILE32-NEXT: SubSectionSize: 0x57 387MFILE32: ] 388MFILE32-NEXT: Subsection [ 389MFILE32-NEXT: SubSectionType: Symbols (0xF1) 390MFILE32-NEXT: SubSectionSize: 0x8 391MFILE32: ] 392MFILE32-NEXT: FunctionLineTable [ 393MFILE32-NEXT: LinkageName: _f 394MFILE32-NEXT: Flags: 0x0 395MFILE32-NEXT: CodeSize: 0x14 396MFILE32-NEXT: FilenameSegment [ 397MFILE32-NEXT: Filename: d:\input.c 398MFILE32-NEXT: +0x0 [ 399MFILE32-NEXT: LineNumberStart: 3 400MFILE32-NEXT: LineNumberEndDelta: 0 401MFILE32-NEXT: IsStatement: Yes 402MFILE32-NEXT: ] 403MFILE32-NEXT: ] 404MFILE32-NEXT: FilenameSegment [ 405MFILE32-NEXT: Filename: d:\one.c 406MFILE32-NEXT: +0x3 [ 407MFILE32-NEXT: LineNumberStart: 1 408MFILE32-NEXT: LineNumberEndDelta: 0 409MFILE32-NEXT: IsStatement: Yes 410MFILE32-NEXT: ] 411MFILE32-NEXT: ] 412MFILE32-NEXT: FilenameSegment [ 413MFILE32-NEXT: Filename: d:\two.c 414MFILE32-NEXT: +0x8 [ 415MFILE32-NEXT: LineNumberStart: 2 416MFILE32-NEXT: LineNumberEndDelta: 0 417MFILE32-NEXT: IsStatement: Yes 418MFILE32-NEXT: ] 419MFILE32-NEXT: ] 420MFILE32-NEXT: FilenameSegment [ 421MFILE32-NEXT: Filename: d:\one.c 422MFILE32-NEXT: +0xD [ 423MFILE32-NEXT: LineNumberStart: 7 424MFILE32-NEXT: LineNumberEndDelta: 0 425MFILE32-NEXT: IsStatement: Yes 426MFILE32-NEXT: ] 427MFILE32-NEXT: +0x12 [ 428MFILE32-NEXT: LineNumberStart: 8 429MFILE32-NEXT: LineNumberEndDelta: 0 430MFILE32-NEXT: IsStatement: Yes 431MFILE32-NEXT: ] 432MFILE32-NEXT: ] 433MFILE32-NEXT: ] 434MFILE32: ] 435 436MFILE64: CodeViewDebugInfo [ 437MFILE64: Magic: 0x4 438MFILE64-NEXT: Subsection [ 439MFILE64-NEXT: SubSectionType: Symbols (0xF1) 440MFILE64-NEXT: SubSectionSize: 0x51 441MFILE64: ] 442MFILE64: Subsection [ 443MFILE64-NEXT: SubSectionType: Symbols (0xF1) 444MFILE64-NEXT: SubSectionSize: 0x4B 445MFILE64: GlobalProcIdSym { 446MFILE64: CodeSize: 0x18 447MFILE64: DisplayName: f 448MFILE64: LinkageName: f 449MFILE64: } 450MFILE64: ProcEnd 451MFILE64: ] 452MFILE64-NEXT: Subsection [ 453MFILE64-NEXT: SubSectionType: Lines (0xF2) 454MFILE64-NEXT: SubSectionSize: 0x64 455MFILE64: LinkageName: f 456MFILE64-NEXT: ] 457MFILE64-NEXT: Subsection [ 458MFILE64-NEXT: SubSectionType: FileChecksums (0xF4) 459MFILE64-NEXT: SubSectionSize: 0x28 460MFILE64: ] 461MFILE64-NEXT: Subsection [ 462MFILE64-NEXT: SubSectionType: StringTable (0xF3) 463MFILE64-NEXT: SubSectionSize: 0x1E 464MFILE64: ] 465MFILE64-NEXT: Subsection [ 466MFILE64-NEXT: SubSectionType: Symbols (0xF1) 467MFILE64-NEXT: SubSectionSize: 0x8 468MFILE64: ] 469MFILE64-NEXT: FunctionLineTable [ 470MFILE64-NEXT: LinkageName: f 471MFILE64-NEXT: Flags: 0x0 472MFILE64-NEXT: CodeSize: 0x18 473MFILE64-NEXT: FilenameSegment [ 474MFILE64-NEXT: Filename: d:\input.c 475MFILE64-NEXT: +0x0 [ 476MFILE64-NEXT: LineNumberStart: 3 477MFILE64-NEXT: LineNumberEndDelta: 0 478MFILE64-NEXT: IsStatement: Yes 479MFILE64-NEXT: ] 480MFILE64-NEXT: ] 481MFILE64-NEXT: FilenameSegment [ 482MFILE64-NEXT: Filename: d:\one.c 483MFILE64-NEXT: +0x4 [ 484MFILE64-NEXT: LineNumberStart: 1 485MFILE64-NEXT: LineNumberEndDelta: 0 486MFILE64-NEXT: IsStatement: Yes 487MFILE64-NEXT: ] 488MFILE64-NEXT: ] 489MFILE64-NEXT: FilenameSegment [ 490MFILE64-NEXT: Filename: d:\two.c 491MFILE64-NEXT: +0x9 [ 492MFILE64-NEXT: LineNumberStart: 2 493MFILE64-NEXT: LineNumberEndDelta: 0 494MFILE64-NEXT: IsStatement: Yes 495MFILE64-NEXT: ] 496MFILE64-NEXT: ] 497MFILE64-NEXT: FilenameSegment [ 498MFILE64-NEXT: Filename: d:\one.c 499MFILE64-NEXT: +0xE [ 500MFILE64-NEXT: LineNumberStart: 7 501MFILE64-NEXT: LineNumberEndDelta: 0 502MFILE64-NEXT: IsStatement: Yes 503MFILE64-NEXT: ] 504MFILE64-NEXT: +0x13 [ 505MFILE64-NEXT: LineNumberStart: 8 506MFILE64-NEXT: LineNumberEndDelta: 0 507MFILE64-NEXT: IsStatement: Yes 508MFILE64-NEXT: ] 509MFILE64-NEXT: ] 510MFILE64: ] 511 512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 513; The following object files were generated using the following command: 514; C:\src> cl /Z7 /Gy /c test.cc 515; with the following contents of C:\src\test.cc: 516; int f() 517; { 518; return 0; 519; } 520; 521; int g() 522; { 523; return 0; 524; } 525; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively. 526RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \ 527RUN: | FileCheck %s -check-prefix MCOMDAT 528RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \ 529RUN: | FileCheck %s -check-prefix MCOMDAT 530 531MCOMDAT: GlobalProcIdSym { 532MCOMDAT: CodeSize: 0x7 533MCOMDAT: DisplayName: f 534MCOMDAT: LinkageName: ?f@@YAHXZ 535MCOMDAT: } 536MCOMDAT: FunctionLineTable [ 537MCOMDAT-NEXT: LinkageName: ?f@@YAHXZ 538MCOMDAT-NEXT: Flags: 0x0 539MCOMDAT-NEXT: CodeSize: 0x7 540MCOMDAT-NEXT: FilenameSegment [ 541MCOMDAT-NEXT: Filename: c:\src\test.cc 542MCOMDAT-NEXT: +0x0 [ 543MCOMDAT-NEXT: LineNumberStart: 2 544MCOMDAT-NEXT: LineNumberEndDelta: 0 545MCOMDAT-NEXT: IsStatement: Yes 546MCOMDAT-NEXT: ] 547MCOMDAT-NEXT: +0x3 [ 548MCOMDAT-NEXT: LineNumberStart: 3 549MCOMDAT-NEXT: LineNumberEndDelta: 0 550MCOMDAT-NEXT: IsStatement: Yes 551MCOMDAT-NEXT: ] 552MCOMDAT-NEXT: +0x5 [ 553MCOMDAT-NEXT: LineNumberStart: 4 554MCOMDAT-NEXT: LineNumberEndDelta: 0 555MCOMDAT-NEXT: IsStatement: Yes 556MCOMDAT-NEXT: ] 557MCOMDAT-NEXT: ] 558MCOMDAT-NEXT: ] 559MCOMDAT: GlobalProcIdSym { 560MCOMDAT: CodeSize: 0x7 561MCOMDAT: DisplayName: g 562MCOMDAT: LinkageName: ?g@@YAHXZ 563MCOMDAT: } 564MCOMDAT: FunctionLineTable [ 565MCOMDAT-NEXT: LinkageName: ?g@@YAHXZ 566MCOMDAT-NEXT: Flags: 0x0 567MCOMDAT-NEXT: CodeSize: 0x7 568MCOMDAT-NEXT: FilenameSegment [ 569MCOMDAT-NEXT: Filename: c:\src\test.cc 570MCOMDAT-NEXT: +0x0 [ 571MCOMDAT-NEXT: LineNumberStart: 7 572MCOMDAT-NEXT: LineNumberEndDelta: 0 573MCOMDAT-NEXT: IsStatement: Yes 574MCOMDAT-NEXT: ] 575MCOMDAT-NEXT: +0x3 [ 576MCOMDAT-NEXT: LineNumberStart: 8 577MCOMDAT-NEXT: LineNumberEndDelta: 0 578MCOMDAT-NEXT: IsStatement: Yes 579MCOMDAT-NEXT: ] 580MCOMDAT-NEXT: +0x5 [ 581MCOMDAT-NEXT: LineNumberStart: 9 582MCOMDAT-NEXT: LineNumberEndDelta: 0 583MCOMDAT-NEXT: IsStatement: Yes 584MCOMDAT-NEXT: ] 585MCOMDAT-NEXT: ] 586MCOMDAT-NEXT: ] 587