llvm/llvm/test/tools/yaml2obj/COFF/symbol-index.yaml

# RUN: yaml2obj %s -o %t
# RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOCS
# RUN: obj2yaml %t | FileCheck %s --check-prefix=YAML

# RELOCS:      Relocations [
# RELOCS-NEXT:   Section (1) .text {
# RELOCS-NEXT:     0x3 IMAGE_REL_AMD64_REL32 .rdata (0)
# RELOCS-NEXT:     0xA IMAGE_REL_AMD64_REL32 .rdata (1)
# RELOCS-NEXT:     0x11 IMAGE_REL_AMD64_REL32 foo (2)
# RELOCS-NEXT:   }
# RELOCS-NEXT: ]

## Check that we usually output relocations with SymbolName.
## For relocations with a non-unique symbol name, output
## SymbolTableIndex instead.

# YAML:          Relocations:
# YAML-NEXT:       - VirtualAddress:  3
# YAML-NEXT:         SymbolTableIndex: 0
# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32
# YAML-NEXT:       - VirtualAddress:  10
# YAML-NEXT:         SymbolTableIndex: 1
# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32
# YAML-NEXT:       - VirtualAddress:  17
# YAML-NEXT:         SymbolName:      foo
# YAML-NEXT:         Type:            IMAGE_REL_AMD64_REL32

--- !COFF
header:
  Machine:         IMAGE_FILE_MACHINE_AMD64
  Characteristics: [  ]
sections:
  - Name:            .text
    Characteristics: [  ]
    Alignment:       4
    SectionData:     488B0500000000488B0500000000488B0500000000
    Relocations:
      - VirtualAddress:  3
        SymbolTableIndex: 0
        Type:            IMAGE_REL_AMD64_REL32
      - VirtualAddress:  10
        SymbolTableIndex: 1
        Type:            IMAGE_REL_AMD64_REL32
      - VirtualAddress:  17
        SymbolName:      foo
        Type:            IMAGE_REL_AMD64_REL32
  - Name:            .rdata
    Characteristics: [  ]
    Alignment:       1
    SectionData:     '00'
  - Name:            .rdata
    Characteristics: [  ]
    Alignment:       1
    SectionData:     '01'
symbols:
  - Name:            .rdata
    Value:           0
    SectionNumber:   2
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
  - Name:            .rdata
    Value:           0
    SectionNumber:   3
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
  - Name:            foo
    Value:           0
    SectionNumber:   3
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
...