Replace coff-/elf-dump with llvm-readobj
[oota-llvm.git] / test / MC / COFF / basic-coff.s
index 0c8658258ed4397b373a49d9eb0eb31a783fb92c..9b299707a130b5dc42c6559db549cb7260a8ae9c 100644 (file)
-// This test checks that the COFF object emitter works for the most basic\r
-// programs.\r
-\r
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s\r
-// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s\r
-\r
-.def    _main;\r
-       .scl    2;\r
-       .type   32;\r
-       .endef\r
-       .text\r
-       .globl  _main\r
-       .align  16, 0x90\r
-_main:                                  # @main\r
-# BB#0:                                 # %entry\r
-       subl    $4, %esp\r
-       movl    $L_.str, (%esp)\r
-       calll   _printf\r
-       xorl    %eax, %eax\r
-       addl    $4, %esp\r
-       ret\r
-\r
-       .data\r
-L_.str:                                 # @.str\r
-       .asciz   "Hello World"\r
-\r
-// CHECK: {\r
-// CHECK:   MachineType              = IMAGE_FILE_MACHINE_I386 (0x14C)\r
-// CHECK:   NumberOfSections         = 2\r
-// CHECK:   TimeDateStamp            = {{[0-9]+}}\r
-// CHECK:   PointerToSymbolTable     = 0x{{[0-9A-F]+}}\r
-// CHECK:   NumberOfSymbols          = 6\r
-// CHECK:   SizeOfOptionalHeader     = 0\r
-// CHECK:   Characteristics          = 0x0\r
-// CHECK:   Sections                 = [\r
-// CHECK:     1 = {\r
-// CHECK:       Name                     = .text\r
-// CHECK:       VirtualSize              = 0\r
-// CHECK:       VirtualAddress           = 0\r
-// CHECK:       SizeOfRawData            = {{[0-9]+}}\r
-// CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}\r
-// CHECK:       PointerToRelocations     = 0x{{[0-9A-F]+}}\r
-// CHECK:       PointerToLineNumbers     = 0x0\r
-// CHECK:       NumberOfRelocations      = 2\r
-// CHECK:       NumberOfLineNumbers      = 0\r
-// CHECK:       Charateristics           = 0x60500020\r
-// CHECK:         IMAGE_SCN_CNT_CODE\r
-// CHECK:         IMAGE_SCN_ALIGN_16BYTES\r
-// CHECK:         IMAGE_SCN_MEM_EXECUTE\r
-// CHECK:         IMAGE_SCN_MEM_READ\r
-// CHECK:       SectionData              =\r
-// CHECK:       Relocations              = [\r
-// CHECK:         0 = {\r
-// CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
-// CHECK:           SymbolTableIndex         = 2\r
-// CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)\r
-// CHECK:           SymbolName               = .data\r
-// CHECK:         }\r
-// CHECK:         1 = {\r
-// CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
-// CHECK:           SymbolTableIndex         = 5\r
-// CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)\r
-// CHECK:           SymbolName               = _printf\r
-// CHECK:         }\r
-// CHECK:       ]\r
-// CHECK:     }\r
-// CHECK:     2 = {\r
-// CHECK:       Name                     = .data\r
-// CHECK:       VirtualSize              = 0\r
-// CHECK:       VirtualAddress           = 0\r
-// CHECK:       SizeOfRawData            = {{[0-9]+}}\r
-// CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}\r
-// CHECK:       PointerToRelocations     = 0x0\r
-// CHECK:       PointerToLineNumbers     = 0x0\r
-// CHECK:       NumberOfRelocations      = 0\r
-// CHECK:       NumberOfLineNumbers      = 0\r
-// CHECK:       Charateristics           = 0xC0300040\r
-// CHECK:         IMAGE_SCN_CNT_INITIALIZED_DATA\r
-// CHECK:         IMAGE_SCN_ALIGN_4BYTES\r
-// CHECK:         IMAGE_SCN_MEM_READ\r
-// CHECK:         IMAGE_SCN_MEM_WRITE\r
-// CHECK:       SectionData              =\r
-// CHECK:         48 65 6C 6C 6F 20 57 6F - 72 6C 64 00             |Hello World.|\r
-// CHECK:       Relocations              = None\r
-// CHECK:     }\r
-// CHECK:   ]\r
-// CHECK:   Symbols                  = [\r
-// CHECK:     0 = {\r
-// CHECK:       Name                     = .text\r
-// CHECK:       Value                    = 0\r
-// CHECK:       SectionNumber            = 1\r
-// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
-// CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
-// CHECK:       NumberOfAuxSymbols       = 1\r
-// CHECK:       AuxillaryData            =\r
-// CHECK:         15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|\r
-// CHECK:         00 00                                             |..|\r
-// CHECK:     }\r
-// CHECK:     2 = {\r
-// CHECK:       Name                     = .data\r
-// CHECK:       Value                    = 0\r
-// CHECK:       SectionNumber            = 2\r
-// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
-// CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
-// CHECK:       NumberOfAuxSymbols       = 1\r
-// CHECK:       AuxillaryData            =\r
-// CHECK:         0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|\r
-// CHECK:         00 00                                             |..|\r
-// CHECK:     }\r
-// CHECK:     4 = {\r
-// CHECK:       Name                     = _main\r
-// CHECK:       Value                    = 0\r
-// CHECK:       SectionNumber            = 1\r
-// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_FUNCTION (2)\r
-// CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)\r
-// CHECK:       NumberOfAuxSymbols       = 0\r
-// CHECK:       AuxillaryData            =\r
-// CHECK:     }\r
-// CHECK:     5 = {\r
-// CHECK:       Name                     = _printf\r
-// CHECK:       Value                    = 0\r
-// CHECK:       SectionNumber            = 0\r
-// CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
-// CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)\r
-// CHECK:       NumberOfAuxSymbols       = 0\r
-// CHECK:       AuxillaryData            =\r
-// CHECK:     }\r
-// CHECK:   ]\r
-// CHECK: }\r
+// This test checks that the COFF object emitter works for the most basic
+// programs.
+
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %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)
+       call    _printf
+       xorl    %eax, %eax
+       addl    $4, %esp
+       ret
+
+       .data
+L_.str:                                 # @.str
+       .asciz  "Hello World"
+
+// CHECK: ImageFileHeader {
+// CHECK:   Machine: IMAGE_FILE_MACHINE_I386
+// CHECK:   SectionCount: 2
+// CHECK:   TimeDateStamp: {{[0-9]+}}
+// CHECK:   PointerToSymbolTable: 0x{{[0-9A-F]+}}
+// CHECK:   SymbolCount: 6
+// CHECK:   OptionalHeaderSize: 0
+// CHECK:   Characteristics [ (0x0)
+// CHECK:   ]
+// CHECK: }
+// CHECK: Sections [
+// CHECK:   Section {
+// CHECK:     Number:               [[TextNum:[0-9]+]]
+// CHECK:     Name:                 .text
+// CHECK:     VirtualSize:          0
+// CHECK:     VirtualAddress:       0
+// CHECK:     RawDataSize:          {{[0-9]+}}
+// CHECK:     PointerToRawData:     0x{{[0-9A-F]+}}
+// CHECK:     PointerToRelocations: 0x{{[0-9A-F]+}}
+// CHECK:     PointerToLineNumbers: 0x0
+// CHECK:     RelocationCount:      2
+// CHECK:     LineNumberCount:      0
+// CHECK:     Characteristics [ (0x60500020)
+// CHECK:       IMAGE_SCN_ALIGN_16BYTES
+// CHECK:       IMAGE_SCN_CNT_CODE
+// CHECK:       IMAGE_SCN_MEM_EXECUTE
+// CHECK:       IMAGE_SCN_MEM_READ
+// CHECK:     ]
+// CHECK:     Relocations [
+// CHECK:       0x{{[0-9A-F]+}} IMAGE_REL_I386_DIR32 .data
+// CHECK:       0x{{[0-9A-F]+}} IMAGE_REL_I386_REL32 _printf
+// CHECK:     ]
+// CHECK:   }
+// CHECK:   Section {
+// CHECK:     Number:               [[DataNum:[0-9]+]]
+// CHECK:     Name:                 .data
+// CHECK:     VirtualSize:          0
+// CHECK:     VirtualAddress:       0
+// CHECK:     RawDataSize:          {{[0-9]+}}
+// CHECK:     PointerToRawData:     0x{{[0-9A-F]+}}
+// CHECK:     PointerToRelocations: 0x0
+// CHECK:     PointerToLineNumbers: 0x0
+// CHECK:     RelocationCount:      0
+// CHECK:     LineNumberCount:      0
+// CHECK:     Characteristics [ (0xC0300040)
+// CHECK:       IMAGE_SCN_ALIGN_4BYTES
+// CHECK:       IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK:       IMAGE_SCN_MEM_READ
+// CHECK:       IMAGE_SCN_MEM_WRITE
+// CHECK:     ]
+// CHECK:     Relocations [
+// CHECK:     ]
+// CHECK:     SectionData (
+// CHECK:       0000: 48656C6C 6F20576F 726C6400             |Hello World.|
+// CHECK:     )
+// CHECK:   }
+// CHECK: ]
+// CHECK: Symbols [
+// CHECK:   Symbol {
+// CHECK:     Name:           .text
+// CHECK:     Value:          0
+// CHECK:     Section:        .text
+// CHECK:     BaseType:       Null
+// CHECK:     ComplexType:    Null
+// CHECK:     StorageClass:   Static
+// CHECK:     AuxSymbolCount: 1
+// CHECK:     AuxSectionDef {
+// CHECK:       Length: 21
+// CHECK:       RelocationCount: 2
+// CHECK:       LineNumberCount: 0
+// CHECK:       Checksum: 0x0
+// CHECK:       Number: 1
+// CHECK:       Selection: 0x0
+// CHECK:     }
+// CHECK:   }
+// CHECK:   Symbol {
+// CHECK:     Name:           .data
+// CHECK:     Value:          0
+// CHECK:     Section:        .data
+// CHECK:     BaseType:       Null
+// CHECK:     ComplexType:    Null
+// CHECK:     StorageClass:   Static
+// CHECK:     AuxSymbolCount: 1
+// CHECK:     AuxSectionDef {
+// CHECK:       Length: 12
+// CHECK:       RelocationCount: 0
+// CHECK:       LineNumberCount: 0
+// CHECK:       Checksum: 0x0
+// CHECK:       Number: 2
+// CHECK:       Selection: 0x0
+// CHECK:       Unused: (00 00 00)
+// CHECK:     }
+// CHECK:   }
+// CHECK:   Symbol {
+// CHECK:     Name:           _main
+// CHECK:     Value:          0
+// CHECK:     Section:        .text
+// CHECK:     BaseType:       Null
+// CHECK:     ComplexType:    Function
+// CHECK:     StorageClass:   External
+// CHECK:     AuxSymbolCount: 0
+// CHECK:   }
+// CHECK:   Symbol {
+// CHECK:     Name:           _printf
+// CHECK:     Value:          0
+// CHECK:     Section:        (0)
+// CHECK:     BaseType:       Null
+// CHECK:     ComplexType:    Null
+// CHECK:     StorageClass:   External
+// CHECK:     AuxSymbolCount: 0
+// CHECK:   }
+// CHECK: ]