| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 
 | # RUN: yaml2obj --docnum=1 %s -o %t
# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=PE32PLUS --strict-whitespace --match-full-lines
#      PE32PLUS:{{.*}}file format coff-arm64
# PE32PLUS-NEXT:Characteristics 0x22
# PE32PLUS-NEXT:	executable
# PE32PLUS-NEXT:	large address aware
#PE32PLUS-EMPTY:
# PE32PLUS-NEXT:Time/Date               {{.*}} 19{{69|70}}
# PE32PLUS-NEXT:Magic                   020b	(PE32+)
# PE32PLUS-NEXT:MajorLinkerVersion      0
# PE32PLUS-NEXT:MinorLinkerVersion      0
# PE32PLUS-NEXT:SizeOfCode              0000000000000200
# PE32PLUS-NEXT:SizeOfInitializedData   0000000000000400
# PE32PLUS-NEXT:SizeOfUninitializedData 0000000000000000
# PE32PLUS-NEXT:AddressOfEntryPoint     0000000000001000
# PE32PLUS-NEXT:BaseOfCode              0000000000001000
# PE32PLUS-NEXT:ImageBase               0000000140000000
# PE32PLUS-NEXT:SectionAlignment        00001000
# PE32PLUS-NEXT:FileAlignment           00000200
# PE32PLUS-NEXT:MajorOSystemVersion     6
# PE32PLUS-NEXT:MinorOSystemVersion     1
# PE32PLUS-NEXT:MajorImageVersion       7
# PE32PLUS-NEXT:MinorImageVersion       2
# PE32PLUS-NEXT:MajorSubsystemVersion   8
# PE32PLUS-NEXT:MinorSubsystemVersion   3
# PE32PLUS-NEXT:Win32Version            00000000
# PE32PLUS-NEXT:SizeOfImage             00004000
# PE32PLUS-NEXT:SizeOfHeaders           00000200
# PE32PLUS-NEXT:CheckSum                00000000
# PE32PLUS-NEXT:Subsystem               00000003	(Windows CUI)
# PE32PLUS-NEXT:DllCharacteristics      00008160
# PE32PLUS-NEXT:					HIGH_ENTROPY_VA
# PE32PLUS-NEXT:					DYNAMIC_BASE
# PE32PLUS-NEXT:					NX_COMPAT
# PE32PLUS-NEXT:					TERMINAL_SERVER_AWARE
# PE32PLUS-NEXT:SizeOfStackReserve      0000000000100000
# PE32PLUS-NEXT:SizeOfStackCommit       0000000000001000
# PE32PLUS-NEXT:SizeOfHeapReserve       0000000000100000
# PE32PLUS-NEXT:SizeOfHeapCommit        0000000000001000
# PE32PLUS-NEXT:LoaderFlags             00000000
# PE32PLUS-NEXT:NumberOfRvaAndSizes     00000010
#PE32PLUS-EMPTY:
# PE32PLUS-NEXT:The Data Directory
# PE32PLUS-NEXT:Entry 0 0000000000000000 00000000 Export Directory [.edata (or where ever we found it)]
# PE32PLUS-NEXT:Entry 1 0000000000000000 00000000 Import Directory [parts of .idata]
# PE32PLUS-NEXT:Entry 2 0000000000000000 00000000 Resource Directory [.rsrc]
# PE32PLUS-NEXT:Entry 3 0000000000003000 00000008 Exception Directory [.pdata]
# PE32PLUS-NEXT:Entry 4 0000000000000000 00000000 Security Directory
# PE32PLUS-NEXT:Entry 5 0000000000000000 00000000 Base Relocation Directory [.reloc]
# PE32PLUS-NEXT:Entry 6 0000000000000000 00000000 Debug Directory
# PE32PLUS-NEXT:Entry 7 0000000000000000 00000000 Description Directory
# PE32PLUS-NEXT:Entry 8 0000000000000000 00000000 Special Directory
# PE32PLUS-NEXT:Entry 9 0000000000000000 00000000 Thread Storage Directory [.tls]
# PE32PLUS-NEXT:Entry a 0000000000000000 00000000 Load Configuration Directory
# PE32PLUS-NEXT:Entry b 0000000000000000 00000000 Bound Import Directory
# PE32PLUS-NEXT:Entry c 0000000000000000 00000000 Import Address Table Directory
# PE32PLUS-NEXT:Entry d 0000000000000000 00000000 Delay Import Directory
# PE32PLUS-NEXT:Entry e 0000000000000000 00000000 CLR Runtime Header
# PE32PLUS-NEXT:Entry f 0000000000000000 00000000 Reserved
--- !COFF
OptionalHeader:
  AddressOfEntryPoint: 4096
  ImageBase:           0x140000000
  SectionAlignment:    4096
  FileAlignment:       512
  MajorOperatingSystemVersion: 6
  MinorOperatingSystemVersion: 1
  MajorImageVersion:   7
  MinorImageVersion:   2
  MajorSubsystemVersion: 8
  MinorSubsystemVersion: 3
  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
  SizeOfStackReserve:  1048576
  SizeOfStackCommit:   4096
  SizeOfHeapReserve:   1048576
  SizeOfHeapCommit:    4096
  ExceptionTable:
    RelativeVirtualAddress: 12288
    Size:            8
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  4096
    VirtualSize:     4
    SectionData:     C0035FD6
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  8192
    VirtualSize:     12
    SectionData:     0100400800000000E4E3E3E3
  - Name:            .pdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  12288
    VirtualSize:     8
    SectionData:     '0010000000200000'
symbols:         []
...
## Test 32-bit object with full Characteristics and DllCharacteristics.
# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: llvm-objdump -p %t2 | FileCheck %s --check-prefix=PE32 --match-full-lines
#      PE32:{{.*}}file format coff-i386
#      PE32:Characteristics 0xffbf
# PE32-NEXT:        relocations stripped
# PE32-NEXT:        executable
# PE32-NEXT:        line numbers stripped
# PE32-NEXT:        symbols stripped
# PE32-NEXT:        large address aware
# PE32-NEXT:        little endian
# PE32-NEXT:        32 bit words
# PE32-NEXT:        debugging information removed
# PE32-NEXT:        copy to swap file if on removable media
# PE32-NEXT:        copy to swap file if on network media
# PE32-NEXT:        system file
# PE32-NEXT:        DLL
# PE32-NEXT:        run only on uniprocessor machine
# PE32-NEXT:        big endian
#PE32-EMPTY:
#      PE32:Time/Date               {{.*}}
# PE32-NEXT:Magic                   010b	(PE32)
# PE32-NEXT:MajorLinkerVersion      0
# PE32-NEXT:MinorLinkerVersion      0
# PE32-NEXT:SizeOfCode              00000004
# PE32-NEXT:SizeOfInitializedData   00000000
# PE32-NEXT:SizeOfUninitializedData 00000000
# PE32-NEXT:AddressOfEntryPoint     00000000
# PE32-NEXT:BaseOfCode              00001000
# PE32-NEXT:BaseOfData              00000000
# PE32-NEXT:ImageBase               00000000
# PE32-NEXT:SectionAlignment        00000001
# PE32-NEXT:FileAlignment           00000001
# PE32-NEXT:MajorOSystemVersion     0
# PE32-NEXT:MinorOSystemVersion     0
# PE32-NEXT:MajorImageVersion       0
# PE32-NEXT:MinorImageVersion       0
# PE32-NEXT:MajorSubsystemVersion   0
# PE32-NEXT:MinorSubsystemVersion   0
# PE32-NEXT:Win32Version            00000000
# PE32-NEXT:SizeOfImage             000001a4
# PE32-NEXT:SizeOfHeaders           000001a0
# PE32-NEXT:CheckSum                00000000
# PE32-NEXT:Subsystem               0000000a	(EFI application)
# PE32-NEXT:DllCharacteristics      0000ffe0
# PE32-NEXT:					HIGH_ENTROPY_VA
# PE32-NEXT:					DYNAMIC_BASE
# PE32-NEXT:					FORCE_INTEGRITY
# PE32-NEXT:					NX_COMPAT
# PE32-NEXT:					NO_ISOLATION
# PE32-NEXT:					NO_SEH
# PE32-NEXT:					NO_BIND
# PE32-NEXT:					APPCONTAINER
# PE32-NEXT:					WDM_DRIVER
# PE32-NEXT:					GUARD_CF
# PE32-NEXT:					TERMINAL_SERVER_AWARE
--- !COFF
header:
  Machine:         IMAGE_FILE_MACHINE_I386
  Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LINE_NUMS_STRIPPED,
                     IMAGE_FILE_LOCAL_SYMS_STRIPPED, IMAGE_FILE_AGGRESSIVE_WS_TRIM, IMAGE_FILE_LARGE_ADDRESS_AWARE,
                     IMAGE_FILE_BYTES_REVERSED_LO, IMAGE_FILE_32BIT_MACHINE, IMAGE_FILE_DEBUG_STRIPPED,
                     IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP, IMAGE_FILE_NET_RUN_FROM_SWAP, IMAGE_FILE_SYSTEM,
                     IMAGE_FILE_DLL, IMAGE_FILE_UP_SYSTEM_ONLY, IMAGE_FILE_BYTES_REVERSED_HI ]
OptionalHeader:
  Subsystem:          IMAGE_SUBSYSTEM_EFI_APPLICATION
  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE,
                        IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT,
                        IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION, IMAGE_DLL_CHARACTERISTICS_NO_SEH,
                        IMAGE_DLL_CHARACTERISTICS_NO_BIND, IMAGE_DLL_CHARACTERISTICS_APPCONTAINER,
                        IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER, IMAGE_DLL_CHARACTERISTICS_GUARD_CF,
                        IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  4096
    VirtualSize:     4
    SectionData:     C0035FD6
symbols:
 |