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 x86_64-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 callq _printf18 movl $.L_.str1, (%esp)19 callq _puts20 movl $.L_.str2, (%esp)21 callq _puts22 xorl %eax, %eax23 addl $4, %esp24 ret25 26 .data27.L_.str0: # @.str028 .asciz "Hello "29 30.L_.str1: # @.str131 .asciz "World!"32 33 .align 16 # @.str234.L_.str2:35 .asciz "I'm The Last Line."36 37// CHECK: {38// CHECK: Machine: IMAGE_FILE_MACHINE_AMD6439// 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: 0x7 IMAGE_REL_AMD64_ADDR32 .data67// CHECK: 0xC IMAGE_REL_AMD64_REL32 _printf68// CHECK: 0x14 IMAGE_REL_AMD64_ADDR32 .data69// CHECK: 0x19 IMAGE_REL_AMD64_REL32 _puts70// CHECK: 0x21 IMAGE_REL_AMD64_ADDR32 .data71// CHECK: 0x26 IMAGE_REL_AMD64_REL32 _puts72// CHECK: ]73// CHECK: SectionData (74// CHECK: 0000: 83EC0467 C7042400 000000E8 0000000075// CHECK: 0010: 67C70424 07000000 E8000000 0067C70476// CHECK: 0020: 24100000 00E80000 000031C0 83C404C377// 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: 48115// CHECK: RelocationCount: 6116// CHECK: LineNumberCount: 0117// CHECK: Checksum: 0x7BD396E3118// 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