1# RUN: yaml2obj %s -o %t
2# RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOCS
3# RUN: obj2yaml %t | FileCheck %s --check-prefix=YAML
4
5# RELOCS:      Relocations [
6# RELOCS-NEXT:   Section (1) .text {
7# RELOCS-NEXT:     0x3 IMAGE_REL_AMD64_REL32 .rdata (0)
8# RELOCS-NEXT:     0xA IMAGE_REL_AMD64_REL32 .rdata (1)
9# RELOCS-NEXT:     0x11 IMAGE_REL_AMD64_REL32 foo (2)
10# RELOCS-NEXT:   }
11# RELOCS-NEXT: ]
12
13## Check that we usually output relocations with SymbolName.
14## For relocations with a non-unique symbol name, output
15## SymbolTableIndex instead.
16
17# YAML:          Relocations:
18# YAML-NEXT:       - VirtualAddress:  3
19# YAML-NEXT:         SymbolTableIndex: 0
20# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32
21# YAML-NEXT:       - VirtualAddress:  10
22# YAML-NEXT:         SymbolTableIndex: 1
23# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32
24# YAML-NEXT:       - VirtualAddress:  17
25# YAML-NEXT:         SymbolName:      foo
26# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32
27
28--- !COFF
29header:
30  Machine:         IMAGE_FILE_MACHINE_AMD64
31  Characteristics: [  ]
32sections:
33  - Name:            .text
34    Characteristics: [  ]
35    Alignment:       4
36    SectionData:     488B0500000000488B0500000000488B0500000000
37    Relocations:
38      - VirtualAddress:  3
39        SymbolTableIndex: 0
40        Type:            IMAGE_REL_AMD64_REL32
41      - VirtualAddress:  10
42        SymbolTableIndex: 1
43        Type:            IMAGE_REL_AMD64_REL32
44      - VirtualAddress:  17
45        SymbolName:      foo
46        Type:            IMAGE_REL_AMD64_REL32
47  - Name:            .rdata
48    Characteristics: [  ]
49    Alignment:       1
50    SectionData:     '00'
51  - Name:            .rdata
52    Characteristics: [  ]
53    Alignment:       1
54    SectionData:     '01'
55symbols:
56  - Name:            .rdata
57    Value:           0
58    SectionNumber:   2
59    SimpleType:      IMAGE_SYM_TYPE_NULL
60    ComplexType:     IMAGE_SYM_DTYPE_NULL
61    StorageClass:    IMAGE_SYM_CLASS_STATIC
62  - Name:            .rdata
63    Value:           0
64    SectionNumber:   3
65    SimpleType:      IMAGE_SYM_TYPE_NULL
66    ComplexType:     IMAGE_SYM_DTYPE_NULL
67    StorageClass:    IMAGE_SYM_CLASS_STATIC
68  - Name:            foo
69    Value:           0
70    SectionNumber:   3
71    SimpleType:      IMAGE_SYM_TYPE_NULL
72    ComplexType:     IMAGE_SYM_DTYPE_NULL
73    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
74...
75