| ## 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 |
| |
| --- !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 |
| |
| ## 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 |