167 lines · plain
1// The purpose of this test is to see if the COFF object writer is emitting the2// proper relocations for multiple pieces of data in a single data fragment.3 4// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -h -S --sr --sd --symbols - | FileCheck %s5 6.def _main;7 .scl 2;8 .type 32;9 .endef10 .text11 .globl _main12 .align 16, 0x9013_main: # @main14# %bb.0: # %entry15 subl $4, %esp16 movl $L_.str0, (%esp)17 calll _printf18 movl $L_.str1, (%esp)19 calll _puts20 movl $L_.str2, (%esp)21 calll _puts22 xorl %eax, %eax23 addl $4, %esp24 ret25 26 .data27L_.str0: # @.str028 .asciz "Hello "29 30L_.str1: # @.str131 .asciz "World!"32 33 .align 16 # @.str234L_.str2:35 .asciz "I'm The Last Line."36 37// CHECK: {38// CHECK: Machine: IMAGE_FILE_MACHINE_I386 (0x14C)39// CHECK: SectionCount: 340// CHECK: TimeDateStamp: {{[0-9]+}}41// CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}}42// CHECK: SymbolCount: 943// CHECK: OptionalHeaderSize: 044// CHECK: Characteristics [ (0x0)45// CHECK: ]46// CHECK: }47// CHECK: Sections [48// CHECK: Section {49// CHECK: Number: 150// CHECK: Name: .text51// CHECK: VirtualSize: 052// CHECK: VirtualAddress: 053// CHECK: RawDataSize: {{[0-9]+}}54// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}55// CHECK: PointerToRelocations: 0x{{[0-9A-F]+}}56// CHECK: PointerToLineNumbers: 0x057// CHECK: RelocationCount: 658// CHECK: LineNumberCount: 059// CHECK: Characteristics [ (0x60500020)60// CHECK: IMAGE_SCN_ALIGN_16BYTES61// CHECK: IMAGE_SCN_CNT_CODE62// CHECK: IMAGE_SCN_MEM_EXECUTE63// CHECK: IMAGE_SCN_MEM_READ64// CHECK: ]65// CHECK: Relocations [66// CHECK: 0x6 IMAGE_REL_I386_DIR32 .data67// CHECK: 0xB IMAGE_REL_I386_REL32 _printf68// CHECK: 0x12 IMAGE_REL_I386_DIR32 .data69// CHECK: 0x17 IMAGE_REL_I386_REL32 _puts70// CHECK: 0x1E IMAGE_REL_I386_DIR32 .data71// CHECK: 0x23 IMAGE_REL_I386_REL32 _puts72// CHECK: ]73// CHECK: SectionData (74// CHECK: 0000: 83EC04C7 04240000 0000E800 000000C7 |.....$..........|75// CHECK: 0010: 04240700 0000E800 000000C7 04241000 |.$...........$..|76// CHECK: 0020: 0000E800 00000031 C083C404 C3 |.......1.....|77// CHECK: )78// CHECK: }79// CHECK: Section {80// CHECK: Number: 281// CHECK: Name: .data82// CHECK: VirtualSize: 083// CHECK: VirtualAddress: 084// CHECK: RawDataSize: {{[0-9]+}}85// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}86// CHECK: PointerToRelocations: 0x087// CHECK: PointerToLineNumbers: 0x088// CHECK: RelocationCount: 089// CHECK: LineNumberCount: 090// CHECK: Characteristics [ (0xC0500040)91// CHECK: IMAGE_SCN_ALIGN_16BYTES92// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA93// CHECK: IMAGE_SCN_MEM_READ94// CHECK: IMAGE_SCN_MEM_WRITE95// CHECK: Relocations [96// CHECK: ]97// CHECK: SectionData (98// CHECK: 0000: 48656C6C 6F200057 6F726C64 21000000 |Hello .World!...|99// CHECK: 0010: 49276D20 54686520 4C617374 204C696E |I'm The Last Lin|100// CHECK: 0020: 652E00 |e..|101// CHECK: )102// CHECK: }103// CHECK: ]104// CHECK: Symbols [105// CHECK: Symbol {106// CHECK: Name: .text107// CHECK: Value: 0108// CHECK: Section: .text109// CHECK: BaseType: Null110// CHECK: ComplexType: Null111// CHECK: StorageClass: Static112// CHECK: AuxSymbolCount: 1113// CHECK: AuxSectionDef {114// CHECK: Length: 45115// CHECK: RelocationCount: 6116// CHECK: LineNumberCount: 0117// CHECK: Checksum: 0xDED1DC2118// CHECK: Number: 1119// CHECK: Selection: 0x0120// CHECK: }121// CHECK: }122// CHECK: Symbol {123// CHECK: Name: .data124// CHECK: Value: 0125// CHECK: Section: .data126// CHECK: BaseType: Null127// CHECK: ComplexType: Null128// CHECK: StorageClass: Static129// CHECK: AuxSymbolCount: 1130// CHECK: AuxSectionDef {131// CHECK: Length: 35132// CHECK: RelocationCount: 0133// CHECK: LineNumberCount: 0134// CHECK: Checksum: 0xB0A4C21135// CHECK: Number: 2136// CHECK: Selection: 0x0137// CHECK: }138// CHECK: }139// CHECK: Symbol {140// CHECK: Name: _main141// CHECK: Value: 0142// CHECK: Section: .text143// CHECK: BaseType: Null144// CHECK: ComplexType: Function145// CHECK: StorageClass: External146// CHECK: AuxSymbolCount: 0147// CHECK: }148// CHECK: Symbol {149// CHECK: Name: _printf150// CHECK: Value: 0151// CHECK: Section: IMAGE_SYM_UNDEFINED (0)152// CHECK: BaseType: Null153// CHECK: ComplexType: Null154// CHECK: StorageClass: External155// CHECK: AuxSymbolCount: 0156// CHECK: }157// CHECK: Symbol {158// CHECK: Name: _puts159// CHECK: Value: 0160// CHECK: Section: IMAGE_SYM_UNDEFINED (0)161// CHECK: BaseType: Null162// CHECK: ComplexType: Null163// CHECK: StorageClass: External164// CHECK: AuxSymbolCount: 0165// CHECK: }166// CHECK: ]167