elf-dynamic-section-machine-specific.test 8.56 KB
## In this test we test how machine-specific dynamic tags are dumped.

## Case 1: Test that hexagon machine-specific tags can be dumped.
# RUN: yaml2obj --docnum=1 -o %t.hex %s
# RUN: llvm-objdump -p %t.hex | FileCheck %s --check-prefix=HEXAGON

# HEXAGON:      Dynamic Section:
# HEXAGON-NEXT:  HEXAGON_SYMSZ 0x0000000000000010
# HEXAGON-NEXT:  HEXAGON_VER   0x0000000000001000
# HEXAGON-NEXT:  HEXAGON_PLT   0x0000000000001000

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_HEXAGON
Sections:
  - Name: .dynamic
    Type: SHT_DYNAMIC
    Entries:
      - Tag:   DT_HEXAGON_SYMSZ
        Value: 0x10
      - Tag:   DT_HEXAGON_VER
        Value: 0x1000
      - Tag:   DT_HEXAGON_PLT
        Value: 0x1000
      - Tag:   DT_NULL
        Value: 0
ProgramHeaders:
  - Type: PT_LOAD
    Sections:
      - Section: .dynamic
  - Type: PT_DYNAMIC
    Sections:
      - Section: .dynamic

## Case 2: Test that MIPS machine-specific tags can be dumped.
# RUN: yaml2obj --docnum=2 -o %t.mips %s
# RUN: llvm-objdump -p %t.mips | FileCheck %s  --strict-whitespace --match-full-lines --check-prefix=MIPS

#      MIPS:Dynamic Section:
# MIPS-NEXT:  MIPS_RLD_VERSION     0x0000000012345678
# MIPS-NEXT:  MIPS_TIME_STAMP      0x0000000011223344
# MIPS-NEXT:  MIPS_ICHECKSUM       0x0000000011112222
# MIPS-NEXT:  MIPS_IVERSION        0x0000000000000001
# MIPS-NEXT:  MIPS_FLAGS           0x0000000011111111
# MIPS-NEXT:  MIPS_BASE_ADDRESS    0x0000000087654321
# MIPS-NEXT:  MIPS_MSYM            0x0000000000001000
# MIPS-NEXT:  MIPS_CONFLICT        0x0000000000001000
# MIPS-NEXT:  MIPS_LIBLIST         0x0000000000001000
# MIPS-NEXT:  MIPS_LOCAL_GOTNO     0x0000000000000001
# MIPS-NEXT:  MIPS_CONFLICTNO      0x0000000000000001
# MIPS-NEXT:  MIPS_LIBLISTNO       0x0000000000000001
# MIPS-NEXT:  MIPS_SYMTABNO        0x0000000000000001
# MIPS-NEXT:  MIPS_UNREFEXTNO      0x0000000000000000
# MIPS-NEXT:  MIPS_GOTSYM          0x0000000000000000
# MIPS-NEXT:  MIPS_HIPAGENO        0x0000000088776655
# MIPS-NEXT:  MIPS_RLD_MAP         0x0000000000001000
# MIPS-NEXT:  MIPS_DELTA_CLASS     0x0000000000001000
# MIPS-NEXT:  MIPS_DELTA_CLASS_NO  0x0000000000000001
# MIPS-NEXT:  MIPS_DELTA_INSTANCE  0x0000000000001000
## FIXME: llvm-objdump does not print spaces after MIPS_DELTA_INSTANCE_NO, MIPS_PROTECTED_GOTIDX
##        and other long tags. The output looks broken because of that.
# MIPS-NEXT:  MIPS_DELTA_INSTANCE_NO0x0000000000000001
# MIPS-NEXT:  MIPS_DELTA_RELOC     0x0000000000001000
# MIPS-NEXT:  MIPS_DELTA_RELOC_NO  0x0000000000000001
# MIPS-NEXT:  MIPS_DELTA_SYM       0x0000000000001000
# MIPS-NEXT:  MIPS_DELTA_SYM_NO    0x0000000000000001
# MIPS-NEXT:  MIPS_DELTA_CLASSSYM  0x0000000000001000
# MIPS-NEXT:  MIPS_DELTA_CLASSSYM_NO0x0000000000000001
# MIPS-NEXT:  MIPS_CXX_FLAGS       0x0000000088887777
# MIPS-NEXT:  MIPS_PIXIE_INIT      0x0000000000001000
# MIPS-NEXT:  MIPS_LOCALPAGE_GOTIDX0x0000000000000001
# MIPS-NEXT:  MIPS_LOCAL_GOTIDX    0x0000000000000001
# MIPS-NEXT:  MIPS_HIDDEN_GOTIDX   0x0000000000000001
# MIPS-NEXT:  MIPS_PROTECTED_GOTIDX0x0000000000000001
# MIPS-NEXT:  MIPS_OPTIONS         0x0000000000001000
# MIPS-NEXT:  MIPS_INTERFACE       0x0000000000001000
# MIPS-NEXT:  MIPS_DYNSTR_ALIGN    0x0000000088888888
# MIPS-NEXT:  MIPS_INTERFACE_SIZE  0x0000000000000010
# MIPS-NEXT:  MIPS_RLD_TEXT_RESOLVE_ADDR0x0000000000000008
# MIPS-NEXT:  MIPS_PERF_SUFFIX     0x0000000000000000
# MIPS-NEXT:  MIPS_COMPACT_SIZE    0x0000000000000010
# MIPS-NEXT:  MIPS_GP_VALUE        0x0000000000000001
# MIPS-NEXT:  MIPS_AUX_DYNAMIC     0x0000000000001000
# MIPS-NEXT:  MIPS_PLTGOT          0x0000000000001000
# MIPS-NEXT:  MIPS_RWPLT           0x0000000000001000
# MIPS-NEXT:  MIPS_RLD_MAP_REL     0x0000000000001000

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_MIPS
Sections:
  - Name: .dynamic
    Type: SHT_DYNAMIC
    Entries:
      - Tag:   DT_MIPS_RLD_VERSION
        Value: 0x12345678
      - Tag:   DT_MIPS_TIME_STAMP
        Value: 0x11223344
      - Tag:   DT_MIPS_ICHECKSUM
        Value: 0x11112222
      - Tag:   DT_MIPS_IVERSION
        Value: 0x1
      - Tag:   DT_MIPS_FLAGS
        Value: 0x11111111
      - Tag:   DT_MIPS_BASE_ADDRESS
        Value: 0x87654321
      - Tag:   DT_MIPS_MSYM
        Value: 0x1000
      - Tag:   DT_MIPS_CONFLICT
        Value: 0x1000
      - Tag:   DT_MIPS_LIBLIST
        Value: 0x1000
      - Tag:   DT_MIPS_LOCAL_GOTNO
        Value: 0x1
      - Tag:   DT_MIPS_CONFLICTNO
        Value: 0x1
      - Tag:   DT_MIPS_LIBLISTNO
        Value: 0x1
      - Tag:   DT_MIPS_SYMTABNO
        Value: 0x1
      - Tag:   DT_MIPS_UNREFEXTNO
        Value: 0x0
      - Tag:   DT_MIPS_GOTSYM
        Value: 0x0
      - Tag:   DT_MIPS_HIPAGENO
        Value: 0x88776655
      - Tag:   DT_MIPS_RLD_MAP
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_CLASS
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_CLASS_NO
        Value: 0x1
      - Tag:   DT_MIPS_DELTA_INSTANCE
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_INSTANCE_NO
        Value: 0x1
      - Tag:   DT_MIPS_DELTA_RELOC
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_RELOC_NO
        Value: 0x1
      - Tag:   DT_MIPS_DELTA_SYM
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_SYM_NO
        Value: 0x1
      - Tag:   DT_MIPS_DELTA_CLASSSYM
        Value: 0x1000
      - Tag:   DT_MIPS_DELTA_CLASSSYM_NO
        Value: 0x1
      - Tag:   DT_MIPS_CXX_FLAGS
        Value: 0x88887777
      - Tag:   DT_MIPS_PIXIE_INIT
        Value: 0x1000
      - Tag:   DT_MIPS_LOCALPAGE_GOTIDX
        Value: 0x1
      - Tag:   DT_MIPS_LOCAL_GOTIDX
        Value: 0x1
      - Tag:   DT_MIPS_HIDDEN_GOTIDX
        Value: 0x1
      - Tag:   DT_MIPS_PROTECTED_GOTIDX
        Value: 0x1
      - Tag:   DT_MIPS_OPTIONS
        Value: 0x1000
      - Tag:   DT_MIPS_INTERFACE
        Value: 0x1000
      - Tag:   DT_MIPS_DYNSTR_ALIGN
        Value: 0x88888888
      - Tag:   DT_MIPS_INTERFACE_SIZE
        Value: 0x10
      - Tag:   DT_MIPS_RLD_TEXT_RESOLVE_ADDR
        Value: 0x8
      - Tag:   DT_MIPS_PERF_SUFFIX
        Value: 0x0
      - Tag:   DT_MIPS_COMPACT_SIZE
        Value: 0x10
      - Tag:   DT_MIPS_GP_VALUE
        Value: 0x1
      - Tag:   DT_MIPS_AUX_DYNAMIC
        Value: 0x1000
      - Tag:   DT_MIPS_PLTGOT
        Value: 0x1000
      - Tag:   DT_MIPS_RWPLT
        Value: 0x1000
      - Tag:   DT_MIPS_RLD_MAP_REL
        Value: 0x1000
      - Tag:   DT_NULL
        Value: 0
ProgramHeaders:
  - Type: PT_LOAD
    Sections:
      - Section: .dynamic
  - Type: PT_DYNAMIC
    Sections:
      - Section: .dynamic

## Case 3: Test that PPC machine-specific tags can be dumped.
# RUN: yaml2obj --docnum=3 -o %t.ppc %s
# RUN: llvm-objdump -p %t.ppc | FileCheck %s --check-prefix=PPC

# PPC:      Dynamic Section:
# PPC-NEXT:  PPC_GOT 0x000200c0
# PPC-NEXT:  PPC_OPT 0x00000001

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2MSB
  Type:    ET_EXEC
  Machine: EM_PPC
Sections:
  - Name: .dynamic
    Type: SHT_DYNAMIC
    Entries:
      - Tag:   DT_PPC_GOT
        Value: 0x200c0
      - Tag:   DT_PPC_OPT
        Value: 1
      - Tag:   DT_NULL
        Value: 0
ProgramHeaders:
  - Type: PT_LOAD
    Sections:
      - Section: .dynamic
  - Type: PT_DYNAMIC
    Sections:
      - Section: .dynamic

## Case 4: Test that PPC64 machine-specific tags can be dumped.
# RUN: yaml2obj --docnum=4 -o %t.ppc64 %s
# RUN: llvm-objdump -p %t.ppc64 | FileCheck %s --check-prefix=PPC64

# PPC64:      Dynamic Section:
# PPC64-NEXT:  PPC64_GLINK 0x0000000000001000

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_PPC64
Sections:
  - Name: .dynamic
    Type: SHT_DYNAMIC
    Entries:
      - Tag:   DT_PPC64_GLINK
        Value: 0x1000
      - Tag:   DT_NULL
        Value: 0
ProgramHeaders:
  - Type: PT_LOAD
    Sections:
      - Section: .dynamic
  - Type: PT_DYNAMIC
    Sections:
      - Section: .dynamic

## Case 5: Test that AARCH64 machine-specific tags can be dumped.
# RUN: yaml2obj --docnum=5 -o %t.aarch64 %s
# RUN: llvm-objdump -p %t.aarch64 | FileCheck %s --check-prefix=AARCH64

# AARCH64:      Dynamic Section:
# AARCH64-NEXT:  AARCH64_BTI_PLT      0x0000000000000001
# AARCH64-NEXT:  AARCH64_PAC_PLT      0x0000000000000002

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_AARCH64
Sections:
  - Name: .dynamic
    Type: SHT_DYNAMIC
    Entries:
      - Tag:   DT_AARCH64_BTI_PLT
        Value: 1
      - Tag:   DT_AARCH64_PAC_PLT
        Value: 2
      - Tag:   DT_NULL
        Value: 0
ProgramHeaders:
  - Type: PT_LOAD
    Sections:
      - Section: .dynamic
  - Type: PT_DYNAMIC
    Sections:
      - Section: .dynamic