## Check we can use obj2yaml to yamalize the object
## containing architecture specific dynamic tags.
## Check we can handle MIPS specific tags.
# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: obj2yaml %t1 | FileCheck %s --check-prefix=MIPS
# MIPS: - Tag: DT_MIPS_RLD_VERSION
# MIPS-NEXT: Value: 0x1
# MIPS-NEXT: - Tag: DT_MIPS_TIME_STAMP
# MIPS-NEXT: Value: 0x2
# MIPS-NEXT: - Tag: DT_MIPS_ICHECKSUM
# MIPS-NEXT: Value: 0x3
# MIPS-NEXT: - Tag: DT_MIPS_IVERSION
# MIPS-NEXT: Value: 0x4
# MIPS-NEXT: - Tag: DT_MIPS_FLAGS
# MIPS-NEXT: Value: 0x5
# MIPS-NEXT: - Tag: DT_MIPS_BASE_ADDRESS
# MIPS-NEXT: Value: 0x6
# MIPS-NEXT: - Tag: DT_MIPS_MSYM
# MIPS-NEXT: Value: 0x7
# MIPS-NEXT: - Tag: DT_MIPS_CONFLICT
# MIPS-NEXT: Value: 0x8
# MIPS-NEXT: - Tag: DT_MIPS_LIBLIST
# MIPS-NEXT: Value: 0x9
# MIPS-NEXT: - Tag: DT_MIPS_LOCAL_GOTNO
# MIPS-NEXT: Value: 0xA
# MIPS-NEXT: - Tag: DT_MIPS_CONFLICTNO
# MIPS-NEXT: Value: 0xB
# MIPS-NEXT: - Tag: DT_MIPS_LIBLISTNO
# MIPS-NEXT: Value: 0xC
# MIPS-NEXT: - Tag: DT_MIPS_SYMTABNO
# MIPS-NEXT: Value: 0xD
# MIPS-NEXT: - Tag: DT_MIPS_UNREFEXTNO
# MIPS-NEXT: Value: 0xE
# MIPS-NEXT: - Tag: DT_MIPS_GOTSYM
# MIPS-NEXT: Value: 0xF
# MIPS-NEXT: - Tag: DT_MIPS_HIPAGENO
# MIPS-NEXT: Value: 0x10
# MIPS-NEXT: - Tag: DT_MIPS_RLD_MAP
# MIPS-NEXT: Value: 0x11
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_CLASS
# MIPS-NEXT: Value: 0x12
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_CLASS_NO
# MIPS-NEXT: Value: 0x13
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_INSTANCE
# MIPS-NEXT: Value: 0x14
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_INSTANCE_NO
# MIPS-NEXT: Value: 0x15
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_RELOC
# MIPS-NEXT: Value: 0x16
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_RELOC_NO
# MIPS-NEXT: Value: 0x17
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_SYM
# MIPS-NEXT: Value: 0x18
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_SYM_NO
# MIPS-NEXT: Value: 0x19
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_CLASSSYM
# MIPS-NEXT: Value: 0x1A
# MIPS-NEXT: - Tag: DT_MIPS_DELTA_CLASSSYM_NO
# MIPS-NEXT: Value: 0x1B
# MIPS-NEXT: - Tag: DT_MIPS_CXX_FLAGS
# MIPS-NEXT: Value: 0x1C
# MIPS-NEXT: - Tag: DT_MIPS_PIXIE_INIT
# MIPS-NEXT: Value: 0x1D
# MIPS-NEXT: - Tag: DT_MIPS_SYMBOL_LIB
# MIPS-NEXT: Value: 0x1E
# MIPS-NEXT: - Tag: DT_MIPS_LOCALPAGE_GOTIDX
# MIPS-NEXT: Value: 0x1F
# MIPS-NEXT: - Tag: DT_MIPS_LOCAL_GOTIDX
# MIPS-NEXT: Value: 0x20
# MIPS-NEXT: - Tag: DT_MIPS_HIDDEN_GOTIDX
# MIPS-NEXT: Value: 0x21
# MIPS-NEXT: - Tag: DT_MIPS_PROTECTED_GOTIDX
# MIPS-NEXT: Value: 0x22
# MIPS-NEXT: - Tag: DT_MIPS_OPTIONS
# MIPS-NEXT: Value: 0x23
# MIPS-NEXT: - Tag: DT_MIPS_INTERFACE
# MIPS-NEXT: Value: 0x24
# MIPS-NEXT: - Tag: DT_MIPS_DYNSTR_ALIGN
# MIPS-NEXT: Value: 0x25
# MIPS-NEXT: - Tag: DT_MIPS_INTERFACE_SIZE
# MIPS-NEXT: Value: 0x26
# MIPS-NEXT: - Tag: DT_MIPS_RLD_TEXT_RESOLVE_ADDR
# MIPS-NEXT: Value: 0x27
# MIPS-NEXT: - Tag: DT_MIPS_PERF_SUFFIX
# MIPS-NEXT: Value: 0x28
# MIPS-NEXT: - Tag: DT_MIPS_COMPACT_SIZE
# MIPS-NEXT: Value: 0x29
# MIPS-NEXT: - Tag: DT_MIPS_GP_VALUE
# MIPS-NEXT: Value: 0x2A
# MIPS-NEXT: - Tag: DT_MIPS_AUX_DYNAMIC
# MIPS-NEXT: Value: 0x2B
# MIPS-NEXT: - Tag: DT_MIPS_PLTGOT
# MIPS-NEXT: Value: 0x2C
# MIPS-NEXT: - Tag: DT_MIPS_RWPLT
# MIPS-NEXT: Value: 0x2D
# MIPS-NEXT: - Tag: DT_MIPS_RLD_MAP_REL
# MIPS-NEXT: Value: 0x2E
# MIPS-NEXT: - Tag: DT_MIPS_XHASH
# MIPS-NEXT: Value: 0x2F
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_MIPS
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_MIPS_RLD_VERSION
Value: 0x0000000000000001
- Tag: DT_MIPS_TIME_STAMP
Value: 0x0000000000000002
- Tag: DT_MIPS_ICHECKSUM
Value: 0x0000000000000003
- Tag: DT_MIPS_IVERSION
Value: 0x0000000000000004
- Tag: DT_MIPS_FLAGS
Value: 0x0000000000000005
- Tag: DT_MIPS_BASE_ADDRESS
Value: 0x0000000000000006
- Tag: DT_MIPS_MSYM
Value: 0x0000000000000007
- Tag: DT_MIPS_CONFLICT
Value: 0x0000000000000008
- Tag: DT_MIPS_LIBLIST
Value: 0x0000000000000009
- Tag: DT_MIPS_LOCAL_GOTNO
Value: 0x000000000000000A
- Tag: DT_MIPS_CONFLICTNO
Value: 0x000000000000000B
- Tag: DT_MIPS_LIBLISTNO
Value: 0x000000000000000C
- Tag: DT_MIPS_SYMTABNO
Value: 0x000000000000000D
- Tag: DT_MIPS_UNREFEXTNO
Value: 0x000000000000000E
- Tag: DT_MIPS_GOTSYM
Value: 0x000000000000000F
- Tag: DT_MIPS_HIPAGENO
Value: 0x0000000000000010
- Tag: DT_MIPS_RLD_MAP
Value: 0x0000000000000011
- Tag: DT_MIPS_DELTA_CLASS
Value: 0x0000000000000012
- Tag: DT_MIPS_DELTA_CLASS_NO
Value: 0x0000000000000013
- Tag: DT_MIPS_DELTA_INSTANCE
Value: 0x0000000000000014
- Tag: DT_MIPS_DELTA_INSTANCE_NO
Value: 0x0000000000000015
- Tag: DT_MIPS_DELTA_RELOC
Value: 0x0000000000000016
- Tag: DT_MIPS_DELTA_RELOC_NO
Value: 0x0000000000000017
- Tag: DT_MIPS_DELTA_SYM
Value: 0x0000000000000018
- Tag: DT_MIPS_DELTA_SYM_NO
Value: 0x0000000000000019
- Tag: DT_MIPS_DELTA_CLASSSYM
Value: 0x000000000000001A
- Tag: DT_MIPS_DELTA_CLASSSYM_NO
Value: 0x000000000000001B
- Tag: DT_MIPS_CXX_FLAGS
Value: 0x000000000000001C
- Tag: DT_MIPS_PIXIE_INIT
Value: 0x000000000000001D
- Tag: DT_MIPS_SYMBOL_LIB
Value: 0x000000000000001E
- Tag: DT_MIPS_LOCALPAGE_GOTIDX
Value: 0x000000000000001F
- Tag: DT_MIPS_LOCAL_GOTIDX
Value: 0x0000000000000020
- Tag: DT_MIPS_HIDDEN_GOTIDX
Value: 0x0000000000000021
- Tag: DT_MIPS_PROTECTED_GOTIDX
Value: 0x0000000000000022
- Tag: DT_MIPS_OPTIONS
Value: 0x0000000000000023
- Tag: DT_MIPS_INTERFACE
Value: 0x0000000000000024
- Tag: DT_MIPS_DYNSTR_ALIGN
Value: 0x0000000000000025
- Tag: DT_MIPS_INTERFACE_SIZE
Value: 0x0000000000000026
- Tag: DT_MIPS_RLD_TEXT_RESOLVE_ADDR
Value: 0x0000000000000027
- Tag: DT_MIPS_PERF_SUFFIX
Value: 0x0000000000000028
- Tag: DT_MIPS_COMPACT_SIZE
Value: 0x0000000000000029
- Tag: DT_MIPS_GP_VALUE
Value: 0x000000000000002A
- Tag: DT_MIPS_AUX_DYNAMIC
Value: 0x000000000000002B
- Tag: DT_MIPS_PLTGOT
Value: 0x000000000000002C
- Tag: DT_MIPS_RWPLT
Value: 0x000000000000002D
- Tag: DT_MIPS_RLD_MAP_REL
Value: 0x000000000000002E
- Tag: DT_MIPS_XHASH
Value: 0x000000000000002F
## Check we can handle Hexagon specific tags.
# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=HEXAGON
# HEXAGON: - Tag: DT_HEXAGON_SYMSZ
# HEXAGON-NEXT: Value: 0x1
# HEXAGON-NEXT: - Tag: DT_HEXAGON_VER
# HEXAGON-NEXT: Value: 0x2
# HEXAGON-NEXT: - Tag: DT_HEXAGON_PLT
# HEXAGON-NEXT: Value: 0x3
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_HEXAGON
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_HEXAGON_SYMSZ
Value: 0x1
- Tag: DT_HEXAGON_VER
Value: 0x2
- Tag: DT_HEXAGON_PLT
Value: 0x3
## Check we can handle PPC specific tags.
# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: obj2yaml %t3 | FileCheck %s --check-prefix=EM_PPC
# EM_PPC: - Tag: DT_PPC_GOT
# EM_PPC-NEXT: Value: 0x20000
# EM_PPC-NEXT: - Tag: DT_PPC_OPT
# EM_PPC-NEXT: Value: 0x1
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2MSB
Type: ET_REL
Machine: EM_PPC
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_PPC_GOT
Value: 0x0000000000020000
- Tag: DT_PPC_OPT
Value: 0x0000000000000001
## Check we can handle PPC64 specific tags.
# RUN: yaml2obj --docnum=4 %s -o %t4
# RUN: obj2yaml %t4 | FileCheck %s --check-prefix=EM_PPC64
# EM_PPC64: - Tag: DT_PPC64_GLINK
# EM_PPC64-NEXT: Value: 0x1
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_PPC64
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_PPC64_GLINK
Value: 0x0000000000000001
## Check we can handle AARCH64 specific tags.
# RUN: yaml2obj --docnum=5 %s -o %t2
# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=AARCH64
# AARCH64: - Tag: DT_AARCH64_BTI_PLT
# AARCH64-NEXT: Value: 0x0
# AARCH64-NEXT: - Tag: DT_AARCH64_PAC_PLT
# AARCH64-NEXT: Value: 0x0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_AARCH64
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_AARCH64_BTI_PLT
Value: 0x0000000000000000
- Tag: DT_AARCH64_PAC_PLT
Value: 0x0000000000000000
## Check we can handle RISC-V specific tags.
# RUN: yaml2obj --docnum=6 %s -o %t6
# RUN: obj2yaml %t6 | FileCheck %s --check-prefix=RISCV
# RISCV: - Tag: DT_RISCV_VARIANT_CC
# RISCV-NEXT: Value: 0x0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_RISCV
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_RISCV_VARIANT_CC
Value: 0x0000000000000000
## Check we can't use a tag from a different architecture,
## even if it has the same numeric value as a valid tag.
## Here for EM_PPC64 we are trying to use DT_HEXAGON_SYMSZ
## instead of DT_PPC64_GLINK. They both have value of 0x70000000.
# RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=ERR
# ERR: error: invalid hex64 number
# ERR-NEXT: - Tag: DT_HEXAGON_SYMSZ
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_PPC64
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_HEXAGON_SYMSZ
Value: 0x0000000000000001