From a4a2a03c311e7a7b64bfba1ae714ae85f74999fd Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Mon, 25 Apr 2011 07:11:23 +0000 Subject: Remove some hard coded CR-LFs. Some of these were the entire files, one of these was just one line of a file. Explicitly set the eol-style property on the files to try and ensure this fix stays. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130125 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/MC/COFF/basic-coff.s | 266 ++++++++++++------------ test/MC/COFF/bss.s | 30 +-- test/MC/COFF/simple-fixups.s | 100 ++++----- test/MC/COFF/symbol-alias.s | 124 +++++------ test/MC/COFF/symbol-fragment-offset.s | 374 +++++++++++++++++----------------- test/MC/COFF/weak.s | 102 +++++----- 6 files changed, 498 insertions(+), 498 deletions(-) (limited to 'test/MC/COFF') diff --git a/test/MC/COFF/basic-coff.s b/test/MC/COFF/basic-coff.s index 0c8658258e..23156b82d2 100644 --- a/test/MC/COFF/basic-coff.s +++ b/test/MC/COFF/basic-coff.s @@ -1,133 +1,133 @@ -// This test checks that the COFF object emitter works for the most basic -// programs. - -// 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_.str, (%esp) - calll _printf - xorl %eax, %eax - addl $4, %esp - ret - - .data -L_.str: # @.str - .asciz "Hello World" - -// CHECK: { -// CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C) -// CHECK: NumberOfSections = 2 -// CHECK: TimeDateStamp = {{[0-9]+}} -// CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}} -// CHECK: NumberOfSymbols = 6 -// 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 = 2 -// 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: Relocations = [ -// CHECK: 0 = { -// CHECK: VirtualAddress = 0x{{[0-9A-F]+}} -// CHECK: SymbolTableIndex = 2 -// CHECK: Type = IMAGE_REL_I386_DIR32 (6) -// CHECK: SymbolName = .data -// CHECK: } -// CHECK: 1 = { -// CHECK: VirtualAddress = 0x{{[0-9A-F]+}} -// CHECK: SymbolTableIndex = 5 -// CHECK: Type = IMAGE_REL_I386_REL32 (20) -// CHECK: SymbolName = _printf -// 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 = 0xC0300040 -// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA -// CHECK: IMAGE_SCN_ALIGN_4BYTES -// CHECK: IMAGE_SCN_MEM_READ -// CHECK: IMAGE_SCN_MEM_WRITE -// CHECK: SectionData = -// CHECK: 48 65 6C 6C 6F 20 57 6F - 72 6C 64 00 |Hello World.| -// 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: 15 00 00 00 02 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: 0C 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: } -// 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: ] -// CHECK: } +// This test checks that the COFF object emitter works for the most basic +// programs. + +// 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_.str, (%esp) + calll _printf + xorl %eax, %eax + addl $4, %esp + ret + + .data +L_.str: # @.str + .asciz "Hello World" + +// CHECK: { +// CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C) +// CHECK: NumberOfSections = 2 +// CHECK: TimeDateStamp = {{[0-9]+}} +// CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}} +// CHECK: NumberOfSymbols = 6 +// 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 = 2 +// 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: Relocations = [ +// CHECK: 0 = { +// CHECK: VirtualAddress = 0x{{[0-9A-F]+}} +// CHECK: SymbolTableIndex = 2 +// CHECK: Type = IMAGE_REL_I386_DIR32 (6) +// CHECK: SymbolName = .data +// CHECK: } +// CHECK: 1 = { +// CHECK: VirtualAddress = 0x{{[0-9A-F]+}} +// CHECK: SymbolTableIndex = 5 +// CHECK: Type = IMAGE_REL_I386_REL32 (20) +// CHECK: SymbolName = _printf +// 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 = 0xC0300040 +// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA +// CHECK: IMAGE_SCN_ALIGN_4BYTES +// CHECK: IMAGE_SCN_MEM_READ +// CHECK: IMAGE_SCN_MEM_WRITE +// CHECK: SectionData = +// CHECK: 48 65 6C 6C 6F 20 57 6F - 72 6C 64 00 |Hello World.| +// 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: 15 00 00 00 02 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: 0C 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: } +// 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: ] +// CHECK: } diff --git a/test/MC/COFF/bss.s b/test/MC/COFF/bss.s index f44225b5a3..3bed13d4aa 100644 --- a/test/MC/COFF/bss.s +++ b/test/MC/COFF/bss.s @@ -1,15 +1,15 @@ -// The purpose of this test is to verify that bss sections are emited correctly. - -// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s - - .bss - .globl _g0 - .align 4 -_g0: - .long 0 - -// CHECK: Name = .bss -// CHECK-NEXT: VirtualSize = 0 -// CHECK-NEXT: VirtualAddress = 0 -// CHECK-NEXT: SizeOfRawData = 4 +// The purpose of this test is to verify that bss sections are emited correctly. + +// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s + + .bss + .globl _g0 + .align 4 +_g0: + .long 0 + +// CHECK: Name = .bss +// CHECK-NEXT: VirtualSize = 0 +// CHECK-NEXT: VirtualAddress = 0 +// CHECK-NEXT: SizeOfRawData = 4 diff --git a/test/MC/COFF/simple-fixups.s b/test/MC/COFF/simple-fixups.s index f86f4a9ff9..4c9b4d4452 100644 --- a/test/MC/COFF/simple-fixups.s +++ b/test/MC/COFF/simple-fixups.s @@ -1,50 +1,50 @@ -// The purpose of this test is to verify that we do not produce unneeded -// relocations when symbols are in the same section and we know their offset. - -// 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 | coff-dump.py | FileCheck %s - - .def _foo; - .scl 2; - .type 32; - .endef - .text - .globl _foo - .align 16, 0x90 -_foo: # @foo -# BB#0: # %e - .align 16, 0x90 -LBB0_1: # %i - # =>This Inner Loop Header: Depth=1 - jmp LBB0_1 - - .def _bar; - .scl 2; - .type 32; - .endef - .globl _bar - .align 16, 0x90 -_bar: # @bar -# BB#0: # %e - .align 16, 0x90 -LBB1_1: # %i - # =>This Inner Loop Header: Depth=1 - jmp LBB1_1 - - .def _baz; - .scl 2; - .type 32; - .endef - .globl _baz - .align 16, 0x90 -_baz: # @baz -# BB#0: # %e - subl $4, %esp -Ltmp0: - calll _baz - addl $4, %esp - ret - -// CHECK: Sections = [ -// CHECK-NOT: NumberOfRelocations = {{[^0]}} -// CHECK: Symbols = [ +// The purpose of this test is to verify that we do not produce unneeded +// relocations when symbols are in the same section and we know their offset. + +// 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 | coff-dump.py | FileCheck %s + + .def _foo; + .scl 2; + .type 32; + .endef + .text + .globl _foo + .align 16, 0x90 +_foo: # @foo +# BB#0: # %e + .align 16, 0x90 +LBB0_1: # %i + # =>This Inner Loop Header: Depth=1 + jmp LBB0_1 + + .def _bar; + .scl 2; + .type 32; + .endef + .globl _bar + .align 16, 0x90 +_bar: # @bar +# BB#0: # %e + .align 16, 0x90 +LBB1_1: # %i + # =>This Inner Loop Header: Depth=1 + jmp LBB1_1 + + .def _baz; + .scl 2; + .type 32; + .endef + .globl _baz + .align 16, 0x90 +_baz: # @baz +# BB#0: # %e + subl $4, %esp +Ltmp0: + calll _baz + addl $4, %esp + ret + +// CHECK: Sections = [ +// CHECK-NOT: NumberOfRelocations = {{[^0]}} +// CHECK: Symbols = [ diff --git a/test/MC/COFF/symbol-alias.s b/test/MC/COFF/symbol-alias.s index ede6b53c45..03f07b2e56 100644 --- a/test/MC/COFF/symbol-alias.s +++ b/test/MC/COFF/symbol-alias.s @@ -1,62 +1,62 @@ -// The purpose of this test is to verify that symbol aliases -// (@foo = alias @bar) generate the correct entries in the symbol table. -// They should be identical except for the name. - -// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s - - .def _foo; - .scl 2; - .type 32; - .endef - .text - .globl _foo - .align 16, 0x90 -_foo: # @foo -# BB#0: # %entry - ret - - .data - .globl _bar # @bar - .align 4 -_bar: - .long 0 # 0x0 - - - .globl _foo_alias -_foo_alias = _foo - .globl _bar_alias -_bar_alias = _bar - -// CHECK: Name = {{_?}}foo -// CHECK-NEXT: Value = [[FOO_VALUE:.*$]] -// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER:.*$]] -// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE:.*$]] -// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE:.*$]] -// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS:.*$]] -// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS:.*$]] - -// CHECK: Name = {{_?}}bar -// CHECK-NEXT: Value = [[BAR_VALUE:.*$]] -// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER:.*$]] -// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE:.*$]] -// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE:.*$]] -// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS:.*$]] -// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS:.*$]] - -// CHECK: Name = {{_?}}foo_alias -// CHECK-NEXT: Value = [[FOO_VALUE]] -// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER]] -// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE]] -// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE]] -// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS]] -// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS]] - -// CHECK: Name = {{_?}}bar_alias -// CHECK-NEXT: Value = [[BAR_VALUE]] -// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER]] -// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE]] -// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE]] -// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS]] -// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS]] - +// The purpose of this test is to verify that symbol aliases +// (@foo = alias @bar) generate the correct entries in the symbol table. +// They should be identical except for the name. + +// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s + + .def _foo; + .scl 2; + .type 32; + .endef + .text + .globl _foo + .align 16, 0x90 +_foo: # @foo +# BB#0: # %entry + ret + + .data + .globl _bar # @bar + .align 4 +_bar: + .long 0 # 0x0 + + + .globl _foo_alias +_foo_alias = _foo + .globl _bar_alias +_bar_alias = _bar + +// CHECK: Name = {{_?}}foo +// CHECK-NEXT: Value = [[FOO_VALUE:.*$]] +// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER:.*$]] +// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE:.*$]] +// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE:.*$]] +// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS:.*$]] +// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS:.*$]] + +// CHECK: Name = {{_?}}bar +// CHECK-NEXT: Value = [[BAR_VALUE:.*$]] +// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER:.*$]] +// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE:.*$]] +// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE:.*$]] +// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS:.*$]] +// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS:.*$]] + +// CHECK: Name = {{_?}}foo_alias +// CHECK-NEXT: Value = [[FOO_VALUE]] +// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER]] +// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE]] +// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE]] +// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS]] +// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS]] + +// CHECK: Name = {{_?}}bar_alias +// CHECK-NEXT: Value = [[BAR_VALUE]] +// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER]] +// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE]] +// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE]] +// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS]] +// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS]] + diff --git a/test/MC/COFF/symbol-fragment-offset.s b/test/MC/COFF/symbol-fragment-offset.s index c314ac20f4..1df8baacaf 100644 --- a/test/MC/COFF/symbol-fragment-offset.s +++ b/test/MC/COFF/symbol-fragment-offset.s @@ -1,187 +1,187 @@ -// 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: } +// 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: } diff --git a/test/MC/COFF/weak.s b/test/MC/COFF/weak.s index a240d7152c..0f99313c9c 100644 --- a/test/MC/COFF/weak.s +++ b/test/MC/COFF/weak.s @@ -1,51 +1,51 @@ -// This tests that default-null weak symbols (a GNU extension) are created -// properly via the .weak directive. - -// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 < %s | coff-dump.py | FileCheck %s - - .def _main; - .scl 2; - .type 32; - .endef - .text - .globl _main - .align 16, 0x90 -_main: # @main -# BB#0: # %entry - subl $4, %esp - movl $_test_weak, %eax - testl %eax, %eax - je LBB0_2 -# BB#1: # %if.then - calll _test_weak - movl $1, %eax - addl $4, %esp - ret -LBB0_2: # %return - xorl %eax, %eax - addl $4, %esp - ret - - .weak _test_weak - -// CHECK: Symbols = [ - -// CHECK: Name = _test_weak -// CHECK-NEXT: Value = 0 -// CHECK-NEXT: SectionNumber = 0 -// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0) -// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0) -// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_WEAK_EXTERNAL (105) -// CHECK-NEXT: NumberOfAuxSymbols = 1 -// CHECK-NEXT: AuxillaryData = -// CHECK-NEXT: 05 00 00 00 02 00 00 00 - 00 00 00 00 00 00 00 00 |................| -// CHECK-NEXT: 00 00 |..| - -// CHECK: Name = .weak._test_weak.default -// CHECK-NEXT: Value = 0 -// CHECK-NEXT: SectionNumber = 65535 -// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0) -// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0) -// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2) -// CHECK-NEXT: NumberOfAuxSymbols = 0 -// CHECK-NEXT: AuxillaryData = +// This tests that default-null weak symbols (a GNU extension) are created +// properly via the .weak directive. + +// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 < %s | coff-dump.py | FileCheck %s + + .def _main; + .scl 2; + .type 32; + .endef + .text + .globl _main + .align 16, 0x90 +_main: # @main +# BB#0: # %entry + subl $4, %esp + movl $_test_weak, %eax + testl %eax, %eax + je LBB0_2 +# BB#1: # %if.then + calll _test_weak + movl $1, %eax + addl $4, %esp + ret +LBB0_2: # %return + xorl %eax, %eax + addl $4, %esp + ret + + .weak _test_weak + +// CHECK: Symbols = [ + +// CHECK: Name = _test_weak +// CHECK-NEXT: Value = 0 +// CHECK-NEXT: SectionNumber = 0 +// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0) +// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0) +// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_WEAK_EXTERNAL (105) +// CHECK-NEXT: NumberOfAuxSymbols = 1 +// CHECK-NEXT: AuxillaryData = +// CHECK-NEXT: 05 00 00 00 02 00 00 00 - 00 00 00 00 00 00 00 00 |................| +// CHECK-NEXT: 00 00 |..| + +// CHECK: Name = .weak._test_weak.default +// CHECK-NEXT: Value = 0 +// CHECK-NEXT: SectionNumber = 65535 +// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0) +// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0) +// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2) +// CHECK-NEXT: NumberOfAuxSymbols = 0 +// CHECK-NEXT: AuxillaryData = -- cgit v1.2.3-18-g5258