dynamic-section.yaml 11.3 KB
## Check we can use obj2yaml to yamalize the object containing .dynamic
## section. Check that resulting section has the proper attributes and
## dynamic tags and that we do not dump the default sh_entsize.

# RUN: yaml2obj -DENTSIZE=0x10 %s -o %t1
# RUN: obj2yaml %t1 | FileCheck %s

# CHECK:       Sections:
# CHECK-NEXT:  - Name:            .dynamic
# CHECK-NEXT:    Type:            SHT_DYNAMIC
# CHECK-NEXT:    Address:         0x0000000000001000
# CHECK-NEXT:    AddressAlign:    0x0000000000002000
# CHECK-NEXT:    Entries:
# CHECK-NEXT:      - Tag:             DT_NULL
# CHECK-NEXT:        Value:           0x0000000000000000
# CHECK-NEXT:      - Tag:             DT_NEEDED
# CHECK-NEXT:        Value:           0x0000000000000001
# CHECK-NEXT:      - Tag:             DT_PLTRELSZ
# CHECK-NEXT:        Value:           0x0000000000000002
# CHECK-NEXT:      - Tag:             DT_PLTGOT
# CHECK-NEXT:        Value:           0x0000000000000003
# CHECK-NEXT:      - Tag:             DT_HASH
# CHECK-NEXT:        Value:           0x0000000000000004
# CHECK-NEXT:      - Tag:             DT_STRTAB
# CHECK-NEXT:        Value:           0x0000000000000005
# CHECK-NEXT:      - Tag:             DT_SYMTAB
# CHECK-NEXT:        Value:           0x0000000000000006
# CHECK-NEXT:      - Tag:             DT_RELA
# CHECK-NEXT:        Value:           0x0000000000000007
# CHECK-NEXT:      - Tag:             DT_RELASZ
# CHECK-NEXT:        Value:           0x0000000000000008
# CHECK-NEXT:      - Tag:             DT_RELAENT
# CHECK-NEXT:        Value:           0x0000000000000009
# CHECK-NEXT:      - Tag:             DT_STRSZ
# CHECK-NEXT:        Value:           0x000000000000000A
# CHECK-NEXT:      - Tag:             DT_SYMENT
# CHECK-NEXT:        Value:           0x000000000000000B
# CHECK-NEXT:      - Tag:             DT_INIT
# CHECK-NEXT:        Value:           0x000000000000000C
# CHECK-NEXT:      - Tag:             DT_FINI
# CHECK-NEXT:        Value:           0x000000000000000D
# CHECK-NEXT:      - Tag:             DT_SONAME
# CHECK-NEXT:        Value:           0x000000000000000E
# CHECK-NEXT:      - Tag:             DT_RPATH
# CHECK-NEXT:        Value:           0x000000000000000F
# CHECK-NEXT:      - Tag:             DT_SYMBOLIC
# CHECK-NEXT:        Value:           0x0000000000000010
# CHECK-NEXT:      - Tag:             DT_REL
# CHECK-NEXT:        Value:           0x0000000000000011
# CHECK-NEXT:      - Tag:             DT_RELSZ
# CHECK-NEXT:        Value:           0x0000000000000012
# CHECK-NEXT:      - Tag:             DT_RELENT
# CHECK-NEXT:        Value:           0x0000000000000013
# CHECK-NEXT:      - Tag:             DT_PLTREL
# CHECK-NEXT:        Value:           0x0000000000000014
# CHECK-NEXT:      - Tag:             DT_DEBUG
# CHECK-NEXT:        Value:           0x0000000000000015
# CHECK-NEXT:      - Tag:             DT_TEXTREL
# CHECK-NEXT:        Value:           0x0000000000000016
# CHECK-NEXT:      - Tag:             DT_JMPREL
# CHECK-NEXT:        Value:           0x0000000000000017
# CHECK-NEXT:      - Tag:             DT_BIND_NOW
# CHECK-NEXT:        Value:           0x0000000000000018
# CHECK-NEXT:      - Tag:             DT_INIT_ARRAY
# CHECK-NEXT:        Value:           0x0000000000000019
# CHECK-NEXT:      - Tag:             DT_FINI_ARRAY
# CHECK-NEXT:        Value:           0x000000000000001A
# CHECK-NEXT:      - Tag:             DT_INIT_ARRAYSZ
# CHECK-NEXT:        Value:           0x000000000000001B
# CHECK-NEXT:      - Tag:             DT_FINI_ARRAYSZ
# CHECK-NEXT:        Value:           0x000000000000001C
# CHECK-NEXT:      - Tag:             DT_RUNPATH
# CHECK-NEXT:        Value:           0x000000000000001D
# CHECK-NEXT:      - Tag:             DT_FLAGS
# CHECK-NEXT:        Value:           0x000000000000001E
# CHECK-NEXT:      - Tag:             DT_PREINIT_ARRAY
# CHECK-NEXT:        Value:           0x000000000000001F
# CHECK-NEXT:      - Tag:             DT_PREINIT_ARRAYSZ
# CHECK-NEXT:        Value:           0x0000000000000020
# CHECK-NEXT:      - Tag:             DT_SYMTAB_SHNDX
# CHECK-NEXT:        Value:           0x0000000000000021
# CHECK-NEXT:      - Tag:             DT_RELRSZ
# CHECK-NEXT:        Value:           0x0000000000000022
# CHECK-NEXT:      - Tag:             DT_RELR
# CHECK-NEXT:        Value:           0x0000000000000023
# CHECK-NEXT:      - Tag:             DT_RELRENT
# CHECK-NEXT:        Value:           0x0000000000000024
# CHECK-NEXT:      - Tag:             DT_ANDROID_REL
# CHECK-NEXT:        Value:           0x0000000000000025
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELSZ
# CHECK-NEXT:        Value:           0x0000000000000026
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELA
# CHECK-NEXT:        Value:           0x0000000000000027
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELASZ
# CHECK-NEXT:        Value:           0x0000000000000028
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELR
# CHECK-NEXT:        Value:           0x0000000000000029
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELRSZ
# CHECK-NEXT:        Value:           0x000000000000002A
# CHECK-NEXT:      - Tag:             DT_ANDROID_RELRENT
# CHECK-NEXT:        Value:           0x000000000000002B
# CHECK-NEXT:      - Tag:             DT_GNU_HASH
# CHECK-NEXT:        Value:           0x000000000000002C
# CHECK-NEXT:      - Tag:             DT_TLSDESC_PLT
# CHECK-NEXT:        Value:           0x000000000000002D
# CHECK-NEXT:      - Tag:             DT_TLSDESC_GOT
# CHECK-NEXT:        Value:           0x000000000000002E
# CHECK-NEXT:      - Tag:             DT_RELACOUNT
# CHECK-NEXT:        Value:           0x000000000000002F
# CHECK-NEXT:      - Tag:             DT_RELCOUNT
# CHECK-NEXT:        Value:           0x0000000000000030
# CHECK-NEXT:      - Tag:             DT_FLAGS_1
# CHECK-NEXT:        Value:           0x0000000000000031
# CHECK-NEXT:      - Tag:             DT_VERSYM
# CHECK-NEXT:        Value:           0x0000000000000032
# CHECK-NEXT:      - Tag:             DT_VERDEF
# CHECK-NEXT:        Value:           0x0000000000000033
# CHECK-NEXT:      - Tag:             DT_VERDEFNUM
# CHECK-NEXT:        Value:           0x0000000000000034
# CHECK-NEXT:      - Tag:             DT_VERNEED
# CHECK-NEXT:        Value:           0x0000000000000035
# CHECK-NEXT:      - Tag:             DT_VERNEEDNUM
# CHECK-NEXT:        Value:           0x0000000000000036
# CHECK-NEXT:      - Tag:             DT_USED
# CHECK-NEXT:        Value:           0x0000000000000001

!ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:            .dynamic
    Type:            SHT_DYNAMIC
    Address:         0x0000000000001000
    AddressAlign:    0x0000000000002000
    EntSize:         [[ENTSIZE]]
    Entries:
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NEEDED
        Value:           0x0000000000000001
      - Tag:             DT_PLTRELSZ
        Value:           0x0000000000000002
      - Tag:             DT_PLTGOT
        Value:           0x0000000000000003
      - Tag:             DT_HASH
        Value:           0x0000000000000004
      - Tag:             DT_STRTAB
        Value:           0x0000000000000005
      - Tag:             DT_SYMTAB
        Value:           0x0000000000000006
      - Tag:             DT_RELA
        Value:           0x0000000000000007
      - Tag:             DT_RELASZ
        Value:           0x0000000000000008
      - Tag:             DT_RELAENT
        Value:           0x0000000000000009
      - Tag:             DT_STRSZ
        Value:           0x000000000000000A
      - Tag:             DT_SYMENT
        Value:           0x000000000000000B
      - Tag:             DT_INIT
        Value:           0x000000000000000C
      - Tag:             DT_FINI
        Value:           0x000000000000000D
      - Tag:             DT_SONAME
        Value:           0x000000000000000E
      - Tag:             DT_RPATH
        Value:           0x000000000000000F
      - Tag:             DT_SYMBOLIC
        Value:           0x0000000000000010
      - Tag:             DT_REL
        Value:           0x0000000000000011
      - Tag:             DT_RELSZ
        Value:           0x0000000000000012
      - Tag:             DT_RELENT
        Value:           0x0000000000000013
      - Tag:             DT_PLTREL
        Value:           0x0000000000000014
      - Tag:             DT_DEBUG
        Value:           0x0000000000000015
      - Tag:             DT_TEXTREL
        Value:           0x0000000000000016
      - Tag:             DT_JMPREL
        Value:           0x0000000000000017
      - Tag:             DT_BIND_NOW
        Value:           0x0000000000000018
      - Tag:             DT_INIT_ARRAY
        Value:           0x0000000000000019
      - Tag:             DT_FINI_ARRAY
        Value:           0x000000000000001A
      - Tag:             DT_INIT_ARRAYSZ
        Value:           0x000000000000001B
      - Tag:             DT_FINI_ARRAYSZ
        Value:           0x000000000000001C
      - Tag:             DT_RUNPATH
        Value:           0x000000000000001D
      - Tag:             DT_FLAGS
        Value:           0x000000000000001E
      - Tag:             DT_PREINIT_ARRAY
        Value:           0x000000000000001F
      - Tag:             DT_PREINIT_ARRAYSZ
        Value:           0x0000000000000020
      - Tag:             DT_SYMTAB_SHNDX
        Value:           0x0000000000000021
      - Tag:             DT_RELRSZ
        Value:           0x0000000000000022
      - Tag:             DT_RELR
        Value:           0x0000000000000023
      - Tag:             DT_RELRENT
        Value:           0x0000000000000024
      - Tag:             DT_ANDROID_REL
        Value:           0x0000000000000025
      - Tag:             DT_ANDROID_RELSZ
        Value:           0x0000000000000026
      - Tag:             DT_ANDROID_RELA
        Value:           0x0000000000000027
      - Tag:             DT_ANDROID_RELASZ
        Value:           0x0000000000000028
      - Tag:             DT_ANDROID_RELR
        Value:           0x0000000000000029
      - Tag:             DT_ANDROID_RELRSZ
        Value:           0x000000000000002A
      - Tag:             DT_ANDROID_RELRENT
        Value:           0x000000000000002B
      - Tag:             DT_GNU_HASH
        Value:           0x000000000000002C
      - Tag:             DT_TLSDESC_PLT
        Value:           0x000000000000002D
      - Tag:             DT_TLSDESC_GOT
        Value:           0x000000000000002E
      - Tag:             DT_RELACOUNT
        Value:           0x000000000000002F
      - Tag:             DT_RELCOUNT
        Value:           0x0000000000000030
      - Tag:             DT_FLAGS_1
        Value:           0x0000000000000031
      - Tag:             DT_VERSYM
        Value:           0x0000000000000032
      - Tag:             DT_VERDEF
        Value:           0x0000000000000033
      - Tag:             DT_VERDEFNUM
        Value:           0x0000000000000034
      - Tag:             DT_VERNEED
        Value:           0x0000000000000035
      - Tag:             DT_VERNEEDNUM
        Value:           0x0000000000000036
      - Tag:             DT_USED
        Value:           0x0000000000000001

## Test the behavior when sh_entsize is invalid.
## Here we use 0xFE as an arbitrary broken value instead of expected 0x16.

# RUN: yaml2obj -DENTSIZE=0xff %s -o %t2
# RUN: not obj2yaml %t2 2>&1 | FileCheck %s --check-prefix=ENTSIZE

# ENTSIZE: section [index 1] has an invalid sh_entsize: 255