## Check obj2yaml is able to decode all PPC64 relocations.
# RUN: yaml2obj %s -o %t
# RUN: obj2yaml %t | FileCheck %s
# CHECK: --- !ELF
# CHECK-NEXT: FileHeader:
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: EM_PPC64
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .rela.text
# CHECK-NEXT: Type: SHT_RELA
# CHECK-NEXT: Relocations:
# CHECK-NEXT: - Type: R_PPC64_NONE
# CHECK-NEXT: - Type: R_PPC64_ADDR32
# CHECK-NEXT: - Type: R_PPC64_ADDR24
# CHECK-NEXT: - Type: R_PPC64_ADDR16
# CHECK-NEXT: - Type: R_PPC64_ADDR16_LO
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HI
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HA
# CHECK-NEXT: - Type: R_PPC64_ADDR14
# CHECK-NEXT: - Type: R_PPC64_ADDR14_BRTAKEN
# CHECK-NEXT: - Type: R_PPC64_ADDR14_BRNTAKEN
# CHECK-NEXT: - Type: R_PPC64_REL24
# CHECK-NEXT: - Type: R_PPC64_REL14
# CHECK-NEXT: - Type: R_PPC64_REL14_BRTAKEN
# CHECK-NEXT: - Type: R_PPC64_REL14_BRNTAKEN
# CHECK-NEXT: - Type: R_PPC64_GOT16
# CHECK-NEXT: - Type: R_PPC64_GOT16_LO
# CHECK-NEXT: - Type: R_PPC64_GOT16_HI
# CHECK-NEXT: - Type: R_PPC64_GOT16_HA
# CHECK-NEXT: - Type: R_PPC64_GLOB_DAT
# CHECK-NEXT: - Type: R_PPC64_JMP_SLOT
# CHECK-NEXT: - Type: R_PPC64_RELATIVE
# CHECK-NEXT: - Type: R_PPC64_REL32
# CHECK-NEXT: - Type: R_PPC64_ADDR64
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGHER
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGHERA
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGHEST
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGHESTA
# CHECK-NEXT: - Type: R_PPC64_REL64
# CHECK-NEXT: - Type: R_PPC64_TOC16
# CHECK-NEXT: - Type: R_PPC64_TOC16_LO
# CHECK-NEXT: - Type: R_PPC64_TOC16_HI
# CHECK-NEXT: - Type: R_PPC64_TOC16_HA
# CHECK-NEXT: - Type: R_PPC64_TOC
# CHECK-NEXT: - Type: R_PPC64_ADDR16_DS
# CHECK-NEXT: - Type: R_PPC64_ADDR16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_GOT16_DS
# CHECK-NEXT: - Type: R_PPC64_GOT16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_TOC16_DS
# CHECK-NEXT: - Type: R_PPC64_TOC16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_TLS
# CHECK-NEXT: - Type: R_PPC64_DTPMOD64
# CHECK-NEXT: - Type: R_PPC64_TPREL16
# CHECK-NEXT: - Type: R_PPC64_TPREL16_LO
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HI
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HA
# CHECK-NEXT: - Type: R_PPC64_TPREL64
# CHECK-NEXT: - Type: R_PPC64_DTPREL16
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_LO
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HI
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HA
# CHECK-NEXT: - Type: R_PPC64_DTPREL64
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSGD16
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSGD16_LO
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSGD16_HI
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSGD16_HA
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSLD16
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSLD16_LO
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSLD16_HI
# CHECK-NEXT: - Type: R_PPC64_GOT_TLSLD16_HA
# CHECK-NEXT: - Type: R_PPC64_GOT_TPREL16_DS
# CHECK-NEXT: - Type: R_PPC64_GOT_TPREL16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_GOT_TPREL16_HI
# CHECK-NEXT: - Type: R_PPC64_GOT_TPREL16_HA
# CHECK-NEXT: - Type: R_PPC64_GOT_DTPREL16_DS
# CHECK-NEXT: - Type: R_PPC64_GOT_DTPREL16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_GOT_DTPREL16_HI
# CHECK-NEXT: - Type: R_PPC64_GOT_DTPREL16_HA
# CHECK-NEXT: - Type: R_PPC64_TPREL16_DS
# CHECK-NEXT: - Type: R_PPC64_TPREL16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGHER
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGHERA
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGHEST
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGHESTA
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_DS
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_LO_DS
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGHER
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGHERA
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGHEST
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGHESTA
# CHECK-NEXT: - Type: R_PPC64_TLSGD
# CHECK-NEXT: - Type: R_PPC64_TLSLD
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGH
# CHECK-NEXT: - Type: R_PPC64_ADDR16_HIGHA
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGH
# CHECK-NEXT: - Type: R_PPC64_TPREL16_HIGHA
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGH
# CHECK-NEXT: - Type: R_PPC64_DTPREL16_HIGHA
# CHECK-NEXT: - Type: R_PPC64_IRELATIVE
# CHECK-NEXT: - Type: R_PPC64_REL16
# CHECK-NEXT: - Type: R_PPC64_REL16_LO
# CHECK-NEXT: - Type: R_PPC64_REL16_HI
# CHECK-NEXT: - Type: R_PPC64_REL16_HA
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2MSB
Type: ET_REL
Machine: EM_PPC64
Sections:
- Name: .rela.text
Type: SHT_RELA
Relocations:
- Type: R_PPC64_NONE
- Type: R_PPC64_ADDR32
- Type: R_PPC64_ADDR24
- Type: R_PPC64_ADDR16
- Type: R_PPC64_ADDR16_LO
- Type: R_PPC64_ADDR16_HI
- Type: R_PPC64_ADDR16_HA
- Type: R_PPC64_ADDR14
- Type: R_PPC64_ADDR14_BRTAKEN
- Type: R_PPC64_ADDR14_BRNTAKEN
- Type: R_PPC64_REL24
- Type: R_PPC64_REL14
- Type: R_PPC64_REL14_BRTAKEN
- Type: R_PPC64_REL14_BRNTAKEN
- Type: R_PPC64_GOT16
- Type: R_PPC64_GOT16_LO
- Type: R_PPC64_GOT16_HI
- Type: R_PPC64_GOT16_HA
- Type: R_PPC64_GLOB_DAT
- Type: R_PPC64_JMP_SLOT
- Type: R_PPC64_RELATIVE
- Type: R_PPC64_REL32
- Type: R_PPC64_ADDR64
- Type: R_PPC64_ADDR16_HIGHER
- Type: R_PPC64_ADDR16_HIGHERA
- Type: R_PPC64_ADDR16_HIGHEST
- Type: R_PPC64_ADDR16_HIGHESTA
- Type: R_PPC64_REL64
- Type: R_PPC64_TOC16
- Type: R_PPC64_TOC16_LO
- Type: R_PPC64_TOC16_HI
- Type: R_PPC64_TOC16_HA
- Type: R_PPC64_TOC
- Type: R_PPC64_ADDR16_DS
- Type: R_PPC64_ADDR16_LO_DS
- Type: R_PPC64_GOT16_DS
- Type: R_PPC64_GOT16_LO_DS
- Type: R_PPC64_TOC16_DS
- Type: R_PPC64_TOC16_LO_DS
- Type: R_PPC64_TLS
- Type: R_PPC64_DTPMOD64
- Type: R_PPC64_TPREL16
- Type: R_PPC64_TPREL16_LO
- Type: R_PPC64_TPREL16_HI
- Type: R_PPC64_TPREL16_HA
- Type: R_PPC64_TPREL64
- Type: R_PPC64_DTPREL16
- Type: R_PPC64_DTPREL16_LO
- Type: R_PPC64_DTPREL16_HI
- Type: R_PPC64_DTPREL16_HA
- Type: R_PPC64_DTPREL64
- Type: R_PPC64_GOT_TLSGD16
- Type: R_PPC64_GOT_TLSGD16_LO
- Type: R_PPC64_GOT_TLSGD16_HI
- Type: R_PPC64_GOT_TLSGD16_HA
- Type: R_PPC64_GOT_TLSLD16
- Type: R_PPC64_GOT_TLSLD16_LO
- Type: R_PPC64_GOT_TLSLD16_HI
- Type: R_PPC64_GOT_TLSLD16_HA
- Type: R_PPC64_GOT_TPREL16_DS
- Type: R_PPC64_GOT_TPREL16_LO_DS
- Type: R_PPC64_GOT_TPREL16_HI
- Type: R_PPC64_GOT_TPREL16_HA
- Type: R_PPC64_GOT_DTPREL16_DS
- Type: R_PPC64_GOT_DTPREL16_LO_DS
- Type: R_PPC64_GOT_DTPREL16_HI
- Type: R_PPC64_GOT_DTPREL16_HA
- Type: R_PPC64_TPREL16_DS
- Type: R_PPC64_TPREL16_LO_DS
- Type: R_PPC64_TPREL16_HIGHER
- Type: R_PPC64_TPREL16_HIGHERA
- Type: R_PPC64_TPREL16_HIGHEST
- Type: R_PPC64_TPREL16_HIGHESTA
- Type: R_PPC64_DTPREL16_DS
- Type: R_PPC64_DTPREL16_LO_DS
- Type: R_PPC64_DTPREL16_HIGHER
- Type: R_PPC64_DTPREL16_HIGHERA
- Type: R_PPC64_DTPREL16_HIGHEST
- Type: R_PPC64_DTPREL16_HIGHESTA
- Type: R_PPC64_TLSGD
- Type: R_PPC64_TLSLD
- Type: R_PPC64_ADDR16_HIGH
- Type: R_PPC64_ADDR16_HIGHA
- Type: R_PPC64_TPREL16_HIGH
- Type: R_PPC64_TPREL16_HIGHA
- Type: R_PPC64_DTPREL16_HIGH
- Type: R_PPC64_DTPREL16_HIGHA
- Type: R_PPC64_IRELATIVE
- Type: R_PPC64_REL16
- Type: R_PPC64_REL16_LO
- Type: R_PPC64_REL16_HI
- Type: R_PPC64_REL16_HA