## Test that we can explicitly specify all the fields.
# RUN: yaml2obj %s -o %t
# RUN: llvm-readobj --headers --symbols %t | FileCheck %s

--- !XCOFF
FileHeader:
  MagicNumber:          0x1DF
  NumberOfSections:     2
  CreationTime:         0
  OffsetToSymbolTable:  0x7A
  EntriesInSymbolTable: 4
  AuxiliaryHeaderSize:  0
  Flags:                0x0
Sections:
  - Name:                    .text
    Address:                 0x0
    Size:                    0x8
    FileOffsetToData:        0x64
    FileOffsetToRelocations: 0x0
    FileOffsetToLineNumbers: 0x0
    NumberOfRelocations:     0x0
    NumberOfLineNumbers:     0x0
    Flags:                   [ STYP_TEXT ]
    SectionData:             "3860000048"
  - Name:                    .data
    Address:                 0x8
    Size:                    0x4
    FileOffsetToData:        0x6C
    FileOffsetToRelocations: 0x70
    FileOffsetToLineNumbers: 0x0
    NumberOfRelocations:     0x1
    NumberOfLineNumbers:     0x0
    Flags:                   [ STYP_DATA ]
    SectionData:             "00000088"
    Relocations:
      - Address:         0x80
        Symbol:          0x21
        Info:            0x1F
        Type:            0x0
Symbols:
  - Name:               .text
    Value:              0x0
    Section:            .text
    Type:               0x0
    StorageClass:       C_STAT
    NumberOfAuxEntries: 1
  - Name:               .data
    Value:              0x80
    Section:            .data
    Type:               0x0
    StorageClass:       C_STAT
    NumberOfAuxEntries: 1

# CHECK:      FileHeader {
# CHECK-NEXT:   Magic: 0x1DF
# CHECK-NEXT:   NumberOfSections: 2
# CHECK-NEXT:   TimeStamp: None (0x0)
# CHECK-NEXT:   SymbolTableOffset: 0x7A
# CHECK-NEXT:   SymbolTableEntries: 4
# CHECK-NEXT:   OptionalHeaderSize: 0x0
# CHECK-NEXT:   Flags: 0x0
# CHECK-NEXT: }
# CHECK-NEXT: AuxiliaryHeader {
# CHECK-NEXT: }
# CHECK-NEXT: Sections [
# CHECK-NEXT:   Section {
# CHECK-NEXT:     Index: 1
# CHECK-NEXT:     Name: .text
# CHECK-NEXT:     PhysicalAddress: 0x0
# CHECK-NEXT:     VirtualAddress: 0x0
# CHECK-NEXT:     Size: 0x8
# CHECK-NEXT:     RawDataOffset: 0x64
# CHECK-NEXT:     RelocationPointer: 0x0
# CHECK-NEXT:     LineNumberPointer: 0x0
# CHECK-NEXT:     NumberOfRelocations: 0
# CHECK-NEXT:     NumberOfLineNumbers: 0
# CHECK-NEXT:     Type: STYP_TEXT (0x20)
# CHECK-NEXT:   }
# CHECK-NEXT:   Section {
# CHECK-NEXT:     Index: 2
# CHECK-NEXT:     Name: .data
# CHECK-NEXT:     PhysicalAddress: 0x8
# CHECK-NEXT:     VirtualAddress: 0x8
# CHECK-NEXT:     Size: 0x4
# CHECK-NEXT:     RawDataOffset: 0x6C
# CHECK-NEXT:     RelocationPointer: 0x70
# CHECK-NEXT:     LineNumberPointer: 0x0
# CHECK-NEXT:     NumberOfRelocations: 1
# CHECK-NEXT:     NumberOfLineNumbers: 0
# CHECK-NEXT:     Type: STYP_DATA (0x40)
# CHECK-NEXT:   }
# CHECK-NEXT: ]
# CHECK-NEXT: Symbols [
# CHECK-NEXT:   Symbol {
# CHECK-NEXT:     Index: 0
# CHECK-NEXT:     Name: .text
# CHECK-NEXT:     Value (RelocatableAddress): 0x0
# CHECK-NEXT:     Section: .text
# CHECK-NEXT:     Type: 0x0
# CHECK-NEXT:     StorageClass: C_STAT (0x3)
# CHECK-NEXT:     NumberOfAuxEntries: 1
# CHECK-NEXT:     Sect Auxiliary Entry For Stat {
# CHECK-NEXT:       Index: 1
# CHECK-NEXT:       SectionLength: 0
# CHECK-NEXT:       NumberOfRelocEnt: 0
# CHECK-NEXT:       NumberOfLineNum: 0
# CHECK-NEXT:     }
# CHECK-NEXT:   }
# CHECK-NEXT:   Symbol {
# CHECK-NEXT:     Index: 2
# CHECK-NEXT:     Name: .data
# CHECK-NEXT:     Value (RelocatableAddress): 0x80
# CHECK-NEXT:     Section: .data
# CHECK-NEXT:     Type: 0x0
# CHECK-NEXT:     StorageClass: C_STAT (0x3)
# CHECK-NEXT:     NumberOfAuxEntries: 1
# CHECK-NEXT:     Sect Auxiliary Entry For Stat {
# CHECK-NEXT:       Index: 3
# CHECK-NEXT:       SectionLength: 0
# CHECK-NEXT:       NumberOfRelocEnt: 0
# CHECK-NEXT:       NumberOfLineNum: 0
# CHECK-NEXT:     }
# CHECK-NEXT:   }
# CHECK-NEXT: ]
