// The purpose of this test is to see if the COFF object writer is emitting the
// proper relocations for multiple pieces of data in a single data fragment.

// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s

.def	 _main;
	.scl	2;
	.type	32;
	.endef
	.text
	.globl	_main
	.align	16, 0x90
_main:                                  # @main
# BB#0:                                 # %entry
	subl	$4, %esp
	movl	$L_.str0, (%esp)
	calll	_printf
	movl	$L_.str1, (%esp)
	calll	_puts
	movl	$L_.str2, (%esp)
	calll	_puts
	xorl	%eax, %eax
	addl	$4, %esp
	ret

	.data
L_.str0:                                # @.str0
	.asciz	 "Hello "

L_.str1:                                # @.str1
	.asciz	 "World!"

	.align	16                      # @.str2
L_.str2:
	.asciz	 "I'm The Last Line."

// CHECK: {
// CHECK:   MachineType              = IMAGE_FILE_MACHINE_I386 (0x14C)
// CHECK:   NumberOfSections         = 2
// CHECK:   TimeDateStamp            = {{[0-9]+}}
// CHECK:   PointerToSymbolTable     = 0x{{[0-9A-F]+}}
// CHECK:   NumberOfSymbols          = 7
// CHECK:   SizeOfOptionalHeader     = 0
// CHECK:   Characteristics          = 0x0
// CHECK:   Sections                 = [
// CHECK:     1 = {
// CHECK:       Name                     = .text
// CHECK:       VirtualSize              = 0
// CHECK:       VirtualAddress           = 0
// CHECK:       SizeOfRawData            = {{[0-9]+}}
// CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}
// CHECK:       PointerToRelocations     = 0x{{[0-9A-F]+}}
// CHECK:       PointerToLineNumbers     = 0x0
// CHECK:       NumberOfRelocations      = 6
// CHECK:       NumberOfLineNumbers      = 0
// CHECK:       Charateristics           = 0x60500020
// CHECK:         IMAGE_SCN_CNT_CODE
// CHECK:         IMAGE_SCN_ALIGN_16BYTES
// CHECK:         IMAGE_SCN_MEM_EXECUTE
// CHECK:         IMAGE_SCN_MEM_READ
// CHECK:       SectionData              =
// CHECK:         83 EC 04 C7 04 24 00 00 - 00 00 E8 00 00 00 00 C7 |.....$..........|
// CHECK:         04 24 07 00 00 00 E8 00 - 00 00 00 C7 04 24 10 00 |.$...........$..|
// CHECK:         00 00 E8 00 00 00 00 31 - C0 83 C4 04 C3 |.......1.....|
// CHECK:       Relocations              = [
// CHECK:         0 = {
// CHECK:           VirtualAddress           = 0x6
// CHECK:           SymbolTableIndex         = 2
// CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
// CHECK:           SymbolName               = .data
// CHECK:         }
// CHECK:         1 = {
// CHECK:           VirtualAddress           = 0xB
// CHECK:           SymbolTableIndex         = 5
// CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
// CHECK:           SymbolName               = _printf
// CHECK:         }
// CHECK:         2 = {
// CHECK:           VirtualAddress           = 0x12
// CHECK:           SymbolTableIndex         = 2
// CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
// CHECK:           SymbolName               = .data
// CHECK:         }
// CHECK:         3 = {
// CHECK:           VirtualAddress           = 0x17
// CHECK:           SymbolTableIndex         = 6
// CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
// CHECK:           SymbolName               = _puts
// CHECK:         }
// CHECK:         4 = {
// CHECK:           VirtualAddress           = 0x1E
// CHECK:           SymbolTableIndex         = 2
// CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
// CHECK:           SymbolName               = .data
// CHECK:         }
// CHECK:         5 = {
// CHECK:           VirtualAddress           = 0x23
// CHECK:           SymbolTableIndex         = 6
// CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
// CHECK:           SymbolName               = _puts
// CHECK:         }
// CHECK:       ]
// CHECK:     }
// CHECK:     2 = {
// CHECK:       Name                     = .data
// CHECK:       VirtualSize              = 0
// CHECK:       VirtualAddress           = 0
// CHECK:       SizeOfRawData            = {{[0-9]+}}
// CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}
// CHECK:       PointerToRelocations     = 0x0
// CHECK:       PointerToLineNumbers     = 0x0
// CHECK:       NumberOfRelocations      = 0
// CHECK:       NumberOfLineNumbers      = 0
// CHECK:       Charateristics           = 0xC0500040
// CHECK:         IMAGE_SCN_CNT_INITIALIZED_DATA
// CHECK:         IMAGE_SCN_ALIGN_16BYTES
// CHECK:         IMAGE_SCN_MEM_READ
// CHECK:         IMAGE_SCN_MEM_WRITE
// CHECK:       SectionData              =
// CHECK:         48 65 6C 6C 6F 20 00 57 - 6F 72 6C 64 21 00 00 00 |Hello .World!...|
// CHECK:         49 27 6D 20 54 68 65 20 - 4C 61 73 74 20 4C 69 6E |I'm The Last Lin|
// CHECK:         65 2E 00                                          |e..|
// CHECK:       Relocations              = None
// CHECK:     }
// CHECK:   ]
// CHECK:   Symbols                  = [
// CHECK:     0 = {
// CHECK:       Name                     = .text
// CHECK:       Value                    = 0
// CHECK:       SectionNumber            = 1
// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
// CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)
// CHECK:       NumberOfAuxSymbols       = 1
// CHECK:       AuxillaryData            =
// CHECK:         2D 00 00 00 06 00 00 00 - 00 00 00 00 01 00 00 00 |-...............|
// CHECK:         00 00                                             |..|

// CHECK:     }
// CHECK:     2 = {
// CHECK:       Name                     = .data
// CHECK:       Value                    = 0
// CHECK:       SectionNumber            = 2
// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
// CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)
// CHECK:       NumberOfAuxSymbols       = 1
// CHECK:       AuxillaryData            =
// CHECK:         23 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |#...............|
// CHECK:         00 00                                             |..|

// CHECK:     }
// CHECK:     4 = {
// CHECK:       Name                     = _main
// CHECK:       Value                    = 0
// CHECK:       SectionNumber            = 1
// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_FUNCTION (2)
// CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)
// CHECK:       NumberOfAuxSymbols       = 0
// CHECK:       AuxillaryData            =

// CHECK:     5 = {
// CHECK:       Name                     = _printf
// CHECK:       Value                    = 0
// CHECK:       SectionNumber            = 0
// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
// CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)
// CHECK:       NumberOfAuxSymbols       = 0
// CHECK:       AuxillaryData            =

// CHECK:     }
// CHECK:     6 = {
// CHECK:       Name                     = _puts
// CHECK:       Value                    = 0
// CHECK:       SectionNumber            = 0
// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
// CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)
// CHECK:       NumberOfAuxSymbols       = 0
// CHECK:       AuxillaryData            =

// CHECK:     }
// CHECK:   ]
// CHECK: }
