llvm-project/lld/test/COFF/pdb.test

576 lines
21 KiB
Plaintext

# RUN: yaml2obj < %p/Inputs/pdb1.yaml > %t1.obj
# RUN: yaml2obj < %p/Inputs/pdb2.yaml > %t2.obj
# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:main /nodefaultlib \
# RUN: /debugpdb %t1.obj %t2.obj
# RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory -pdb-stream \
# RUN: -dbi-stream -ipi-stream -tpi-stream %t.pdb | FileCheck %s
# CHECK: MSF:
# CHECK-NEXT: SuperBlock:
# CHECK-NEXT: BlockSize: 4096
# CHECK-NEXT: FreeBlockMap: 1
# CHECK-NEXT: NumBlocks: 11
# CHECK-NEXT: NumDirectoryBytes: 64
# CHECK-NEXT: Unknown1: 0
# CHECK-NEXT: BlockMapAddr: 3
# CHECK-NEXT: NumDirectoryBlocks: 1
# CHECK-NEXT: DirectoryBlocks: [ 10 ]
# CHECK-NEXT: NumStreams: 9
# CHECK-NEXT: FileSize: 45056
# CHECK-NEXT: StreamSizes: [ 0, 114, 736, 390, 56, 160, 25, 0, 0 ]
# CHECK-NEXT: StreamMap:
# CHECK-NEXT: - Stream: [ ]
# CHECK-NEXT: - Stream: [ 6 ]
# CHECK-NEXT: - Stream: [ 8 ]
# CHECK-NEXT: - Stream: [ 7 ]
# CHECK-NEXT: - Stream: [ 9 ]
# CHECK-NEXT: - Stream: [ 4 ]
# CHECK-NEXT: - Stream: [ 5 ]
# CHECK-NEXT: - Stream: [ ]
# CHECK-NEXT: - Stream: [ ]
# CHECK-NEXT: PdbStream:
# CHECK-NEXT: Age: 1
# CHECK-NEXT: Guid:
# CHECK-NEXT: Signature: 0
# CHECK-NEXT: Version: VC70
# CHECK-NEXT: DbiStream:
# CHECK-NEXT: VerHeader: V110
# CHECK-NEXT: Age: 1
# CHECK-NEXT: BuildNumber: 0
# CHECK-NEXT: PdbDllVersion: 0
# CHECK-NEXT: PdbDllRbld: 0
# CHECK-NEXT: Flags: 0
# CHECK-NEXT: MachineType: x86
# CHECK-NEXT: TpiStream:
# CHECK-NEXT: Version: VC80
# CHECK-NEXT: Records:
# CHECK-NEXT: - Kind: LF_ARGLIST
# CHECK-NEXT: ArgList:
# CHECK-NEXT: ArgIndices: [ ]
# CHECK-NEXT: - Kind: LF_PROCEDURE
# CHECK-NEXT: Procedure:
# CHECK-NEXT: ReturnType: 116
# CHECK-NEXT: CallConv: NearC
# CHECK-NEXT: Options: [ None ]
# CHECK-NEXT: ParameterCount: 0
# CHECK-NEXT: ArgumentList: 4096
# CHECK-NEXT: - Kind: LF_POINTER
# CHECK-NEXT: Pointer:
# CHECK-NEXT: ReferentType: 4097
# CHECK-NEXT: Attrs: 65548
# CHECK-NEXT: - Kind: LF_ARGLIST
# CHECK-NEXT: ArgList:
# CHECK-NEXT: ArgIndices: [ 0 ]
# CHECK-NEXT: - Kind: LF_PROCEDURE
# CHECK-NEXT: Procedure:
# CHECK-NEXT: ReturnType: 116
# CHECK-NEXT: CallConv: NearC
# CHECK-NEXT: Options: [ None ]
# CHECK-NEXT: ParameterCount: 0
# CHECK-NEXT: ArgumentList: 4099
# CHECK-NEXT: - Kind: LF_FUNC_ID
# CHECK-NEXT: FuncId:
# CHECK-NEXT: ParentScope: 0
# CHECK-NEXT: FunctionType: 4100
# CHECK-NEXT: Name: main
# CHECK-NEXT: - Kind: LF_FUNC_ID
# CHECK-NEXT: FuncId:
# CHECK-NEXT: ParentScope: 0
# CHECK-NEXT: FunctionType: 4097
# CHECK-NEXT: Name: foo
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: 'D:\b'
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: 'C:\vs14\VC\BIN\amd64\cl.exe'
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: '-Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"'
# CHECK-NEXT: - Kind: LF_SUBSTR_LIST
# CHECK-NEXT: ArgList:
# CHECK-NEXT: ArgIndices: [ 4105 ]
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 4106
# CHECK-NEXT: String: ' -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X'
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: ret42-main.c
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: 'D:\b\vc140.pdb'
# CHECK-NEXT: - Kind: LF_BUILDINFO
# CHECK-NEXT: BuildInfo:
# CHECK-NEXT: ArgIndices: [ 4103, 4104, 4108, 4109, 4107 ]
# CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0
# CHECK-NEXT: String: ret42-sub.c
# CHECK-NEXT: - Kind: LF_BUILDINFO
# CHECK-NEXT: BuildInfo:
# CHECK-NEXT: ArgIndices: [ 4103, 4104, 4111, 4109, 4107 ]
# CHECK-NEXT: IpiStream:
# CHECK-NEXT: Version: VC80
# CHECK-NEXT: Records:
# RAW: FileHeaders {
# RAW-NEXT: BlockSize: 4096
# RAW-NEXT: FreeBlockMap: 1
# RAW-NEXT: NumBlocks: 10
# RAW-NEXT: NumDirectoryBytes: 48
# RAW-NEXT: Unknown1: 0
# RAW-NEXT: BlockMapAddr: 3
# RAW-NEXT: NumDirectoryBlocks: 1
# RAW-NEXT: DirectoryBlocks: [9]
# RAW-NEXT: NumStreams: 6
# RAW-NEXT: }
# RAW-NEXT: Streams [
# RAW-NEXT: Stream 0: [Old MSF Directory] (0 bytes)
# RAW-NEXT: Stream 1: [PDB Stream] (48 bytes)
# RAW-NEXT: Stream 2: [TPI Stream] (736 bytes)
# RAW-NEXT: Stream 3: [DBI Stream] (390 bytes)
# RAW-NEXT: Stream 4: [IPI Stream] (56 bytes)
# RAW-NEXT: Stream 5: [Section Header Data] (160 bytes)
# RAW-NEXT: ]
# RAW-NEXT: Msf Free Pages: []
# RAW-NEXT: Orphaned Pages: []
# RAW-NEXT: Multiply Used Pages: []
# RAW-NEXT: Use After Free Pages: []
# RAW-NEXT: StreamBlocks [
# RAW-NEXT: Stream 0: []
# RAW-NEXT: Stream 1: [5]
# RAW-NEXT: Stream 2: [7]
# RAW-NEXT: Stream 3: [6]
# RAW-NEXT: Stream 4: [8]
# RAW-NEXT: Stream 5: [4]
# RAW-NEXT: ]
# RAW-NEXT: PDB Stream {
# RAW-NEXT: Version: 20000404
# RAW-NEXT: Signature: 0x0
# RAW-NEXT: Age: 1
# RAW-NEXT: Guid: {7EBCCC79-C488-0267-C898-06D7E94A8A10}
# RAW-NEXT: }
# RAW-NEXT: Type Info Stream (TPI) {
# RAW-NEXT: TPI Version: 20040203
# RAW-NEXT: Record count: 17
# RAW-NEXT: Records [
# RAW-NEXT: {
# RAW-NEXT: ArgList (0x1000) {
# RAW-NEXT: TypeLeafKind: LF_ARGLIST (0x1201)
# RAW-NEXT: NumArgs: 0
# RAW-NEXT: Arguments [
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Procedure (0x1001) {
# RAW-NEXT: TypeLeafKind: LF_PROCEDURE (0x1008)
# RAW-NEXT: ReturnType: int (0x74)
# RAW-NEXT: CallingConvention: NearC (0x0)
# RAW-NEXT: FunctionOptions [ (0x0)
# RAW-NEXT: ]
# RAW-NEXT: NumParameters: 0
# RAW-NEXT: ArgListType: () (0x1000)
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Pointer (0x1002) {
# RAW-NEXT: TypeLeafKind: LF_POINTER (0x1002)
# RAW-NEXT: PointeeType: int () (0x1001)
# RAW-NEXT: PointerAttributes: 0x1000C
# RAW-NEXT: PtrType: Near64 (0xC)
# RAW-NEXT: PtrMode: Pointer (0x0)
# RAW-NEXT: IsFlat: 0
# RAW-NEXT: IsConst: 0
# RAW-NEXT: IsVolatile: 0
# RAW-NEXT: IsUnaligned: 0
# RAW-NEXT: SizeOf: 8
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: ArgList (0x1003) {
# RAW-NEXT: TypeLeafKind: LF_ARGLIST (0x1201)
# RAW-NEXT: NumArgs: 1
# RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: 0x0
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Procedure (0x1004) {
# RAW-NEXT: TypeLeafKind: LF_PROCEDURE (0x1008)
# RAW-NEXT: ReturnType: int (0x74)
# RAW-NEXT: CallingConvention: NearC (0x0)
# RAW-NEXT: FunctionOptions [ (0x0)
# RAW-NEXT: ]
# RAW-NEXT: NumParameters: 0
# RAW-NEXT: ArgListType: (<no type>) (0x1003)
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: FuncId (0x1005) {
# RAW-NEXT: TypeLeafKind: LF_FUNC_ID (0x1601)
# RAW-NEXT: ParentScope: 0x0
# RAW-NEXT: FunctionType: int (<no type>) (0x1004)
# RAW-NEXT: Name: main
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: FuncId (0x1006) {
# RAW-NEXT: TypeLeafKind: LF_FUNC_ID (0x1601)
# RAW-NEXT: ParentScope: 0x0
# RAW-NEXT: FunctionType: int () (0x1001)
# RAW-NEXT: Name: foo
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x1007) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: D:\b
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x1008) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: C:\vs14\VC\BIN\amd64\cl.exe
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x1009) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: -Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringList (0x100A) {
# RAW-NEXT: TypeLeafKind: LF_SUBSTR_LIST (0x1604)
# RAW-NEXT: NumArgs: 1
# RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: -Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared" (0x1009)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x100B) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: (-Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared") (0x100A)
# RAW-NEXT: StringData: -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x100C) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: ret42-main.c
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x100D) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: D:\b\vc140.pdb
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: BuildInfo (0x100E) {
# RAW-NEXT: TypeLeafKind: LF_BUILDINFO (0x1603)
# RAW-NEXT: NumArgs: 5
# RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: D:\b (0x1007)
# RAW-NEXT: ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1008)
# RAW-NEXT: ArgType: ret42-main.c (0x100C)
# RAW-NEXT: ArgType: D:\b\vc140.pdb (0x100D)
# RAW-NEXT: ArgType: -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x100B)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: StringId (0x100F) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: ret42-sub.c
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: BuildInfo (0x1010) {
# RAW-NEXT: TypeLeafKind: LF_BUILDINFO (0x1603)
# RAW-NEXT: NumArgs: 5
# RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: D:\b (0x1007)
# RAW-NEXT: ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1008)
# RAW-NEXT: ArgType: ret42-sub.c (0x100F)
# RAW-NEXT: ArgType: D:\b\vc140.pdb (0x100D)
# RAW-NEXT: ArgType: -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x100B)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: Hash {
# RAW-NEXT: Number of Hash Buckets: 4096
# RAW-NEXT: Hash Key Size: 4
# RAW-NEXT: Values: []
# RAW-NEXT: Type Index Offsets: []
# RAW-NEXT: Hash Adjustments: []
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: Type Info Stream (IPI) {
# RAW-NEXT: IPI Version: 20040203
# RAW-NEXT: Record count: 0
# RAW-NEXT: Records [
# RAW-NEXT: Hash {
# RAW-NEXT: Number of Hash Buckets: 4096
# RAW-NEXT: Hash Key Size: 4
# RAW-NEXT: Values: []
# RAW-NEXT: Type Index Offsets: []
# RAW-NEXT: Hash Adjustments: []
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: DBI Stream {
# RAW-NEXT: Dbi Version: 20091201
# RAW-NEXT: Age: 1
# RAW-NEXT: Incremental Linking: No
# RAW-NEXT: Has CTypes: No
# RAW-NEXT: Is Stripped: No
# RAW-NEXT: Machine Type: x86
# RAW-NEXT: Symbol Record Stream Index: 65535
# RAW-NEXT: Public Symbol Stream Index: 65535
# RAW-NEXT: Global Symbol Stream Index: 65535
# RAW-NEXT: Toolchain Version: 0.0
# RAW-NEXT: mspdb00.dll version: 0.0.0
# RAW-NEXT: Modules [
# RAW-NEXT: {
# RAW-NEXT: Name: * Linker *
# RAW-NEXT: Debug Stream Index: 65535
# RAW-NEXT: Object File Name:
# RAW-NEXT: Num Files: 0
# RAW-NEXT: Source File Name Idx: 0
# RAW-NEXT: Pdb File Name Idx: 0
# RAW-NEXT: Line Info Byte Size: 0
# RAW-NEXT: C13 Line Info Byte Size: 0
# RAW-NEXT: Symbol Byte Size: 0
# RAW-NEXT: Type Server Index: 0
# RAW-NEXT: Has EC Info: No
# RAW-NEXT: 0 Contributing Source Files [
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: Section Contributions [
# RAW-NEXT: Contribution {
# RAW-NEXT: ISect: 0
# RAW-NEXT: Off: 1288
# RAW-NEXT: Size: 14
# RAW-NEXT: Characteristics [ (0x60500020)
# RAW-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20)
# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: Module {
# RAW-NEXT: Index: 0
# RAW-NEXT: Name: * Linker *
# RAW-NEXT: }
# RAW-NEXT: Data CRC: 0
# RAW-NEXT: Reloc CRC: 0
# RAW-NEXT: }
# RAW-NEXT: Contribution {
# RAW-NEXT: ISect: 0
# RAW-NEXT: Off: 1312
# RAW-NEXT: Size: 8
# RAW-NEXT: Characteristics [ (0x40300040)
# RAW-NEXT: IMAGE_SCN_ALIGN_4BYTES (0x300000)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: Module {
# RAW-NEXT: Index: 0
# RAW-NEXT: Name: * Linker *
# RAW-NEXT: }
# RAW-NEXT: Data CRC: 0
# RAW-NEXT: Reloc CRC: 0
# RAW-NEXT: }
# RAW-NEXT: Contribution {
# RAW-NEXT: ISect: 0
# RAW-NEXT: Off: 1320
# RAW-NEXT: Size: 12
# RAW-NEXT: Characteristics [ (0x40300040)
# RAW-NEXT: IMAGE_SCN_ALIGN_4BYTES (0x300000)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: Module {
# RAW-NEXT: Index: 0
# RAW-NEXT: Name: * Linker *
# RAW-NEXT: }
# RAW-NEXT: Data CRC: 0
# RAW-NEXT: Reloc CRC: 0
# RAW-NEXT: }
# RAW-NEXT: Contribution {
# RAW-NEXT: ISect: 0
# RAW-NEXT: Off: 1144
# RAW-NEXT: Size: 6
# RAW-NEXT: Characteristics [ (0x60500020)
# RAW-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20)
# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: Module {
# RAW-NEXT: Index: 0
# RAW-NEXT: Name: * Linker *
# RAW-NEXT: }
# RAW-NEXT: Data CRC: 0
# RAW-NEXT: Reloc CRC: 0
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: Section Map [
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 1
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 12
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x10D)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: Execute (0x4)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 2
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 22
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 3
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 8
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 4
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 101
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x208)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsAbsoluteAddress (0x200)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 5
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 4294967295
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: Globals Stream not present
# RAW-NEXT: Publics Stream not present
# RAW-NEXT: Section Headers [
# RAW-NEXT: {
# RAW-NEXT: Name: .pdata
# RAW-NEXT: Virtual Size: 12
# RAW-NEXT: Virtual Address: 4096
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 1024
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x40000040)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .text
# RAW-NEXT: Virtual Size: 22
# RAW-NEXT: Virtual Address: 8192
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 1536
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x60000020)
# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20)
# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .xdata
# RAW-NEXT: Virtual Size: 8
# RAW-NEXT: Virtual Address: 12288
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 2048
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x40000040)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .rdata
# RAW-NEXT: Virtual Size: 101
# RAW-NEXT: Virtual Address: 16384
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 2560
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x40000040)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: New FPO [
# RAW-NEXT: ]