## 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: 0x1000 # CHECK-NEXT: AddressAlign: 0x2000 # CHECK-NEXT: Entries: # CHECK-NEXT: - Tag: DT_NULL # CHECK-NEXT: Value: 0x0 # CHECK-NEXT: - Tag: DT_NEEDED # CHECK-NEXT: Value: 0x1 # CHECK-NEXT: - Tag: DT_PLTRELSZ # CHECK-NEXT: Value: 0x2 # CHECK-NEXT: - Tag: DT_PLTGOT # CHECK-NEXT: Value: 0x3 # CHECK-NEXT: - Tag: DT_HASH # CHECK-NEXT: Value: 0x4 # CHECK-NEXT: - Tag: DT_STRTAB # CHECK-NEXT: Value: 0x5 # CHECK-NEXT: - Tag: DT_SYMTAB # CHECK-NEXT: Value: 0x6 # CHECK-NEXT: - Tag: DT_RELA # CHECK-NEXT: Value: 0x7 # CHECK-NEXT: - Tag: DT_RELASZ # CHECK-NEXT: Value: 0x8 # CHECK-NEXT: - Tag: DT_RELAENT # CHECK-NEXT: Value: 0x9 # CHECK-NEXT: - Tag: DT_STRSZ # CHECK-NEXT: Value: 0xA # CHECK-NEXT: - Tag: DT_SYMENT # CHECK-NEXT: Value: 0xB # CHECK-NEXT: - Tag: DT_INIT # CHECK-NEXT: Value: 0xC # CHECK-NEXT: - Tag: DT_FINI # CHECK-NEXT: Value: 0xD # CHECK-NEXT: - Tag: DT_SONAME # CHECK-NEXT: Value: 0xE # CHECK-NEXT: - Tag: DT_RPATH # CHECK-NEXT: Value: 0xF # CHECK-NEXT: - Tag: DT_SYMBOLIC # CHECK-NEXT: Value: 0x10 # CHECK-NEXT: - Tag: DT_REL # CHECK-NEXT: Value: 0x11 # CHECK-NEXT: - Tag: DT_RELSZ # CHECK-NEXT: Value: 0x12 # CHECK-NEXT: - Tag: DT_RELENT # CHECK-NEXT: Value: 0x13 # CHECK-NEXT: - Tag: DT_PLTREL # CHECK-NEXT: Value: 0x14 # CHECK-NEXT: - Tag: DT_DEBUG # CHECK-NEXT: Value: 0x15 # CHECK-NEXT: - Tag: DT_TEXTREL # CHECK-NEXT: Value: 0x16 # CHECK-NEXT: - Tag: DT_JMPREL # CHECK-NEXT: Value: 0x17 # CHECK-NEXT: - Tag: DT_BIND_NOW # CHECK-NEXT: Value: 0x18 # CHECK-NEXT: - Tag: DT_INIT_ARRAY # CHECK-NEXT: Value: 0x19 # CHECK-NEXT: - Tag: DT_FINI_ARRAY # CHECK-NEXT: Value: 0x1A # CHECK-NEXT: - Tag: DT_INIT_ARRAYSZ # CHECK-NEXT: Value: 0x1B # CHECK-NEXT: - Tag: DT_FINI_ARRAYSZ # CHECK-NEXT: Value: 0x1C # CHECK-NEXT: - Tag: DT_RUNPATH # CHECK-NEXT: Value: 0x1D # CHECK-NEXT: - Tag: DT_FLAGS # CHECK-NEXT: Value: 0x1E # CHECK-NEXT: - Tag: DT_PREINIT_ARRAY # CHECK-NEXT: Value: 0x1F # CHECK-NEXT: - Tag: DT_PREINIT_ARRAYSZ # CHECK-NEXT: Value: 0x20 # CHECK-NEXT: - Tag: DT_SYMTAB_SHNDX # CHECK-NEXT: Value: 0x21 # CHECK-NEXT: - Tag: DT_RELRSZ # CHECK-NEXT: Value: 0x22 # CHECK-NEXT: - Tag: DT_RELR # CHECK-NEXT: Value: 0x23 # CHECK-NEXT: - Tag: DT_RELRENT # CHECK-NEXT: Value: 0x24 # CHECK-NEXT: - Tag: DT_ANDROID_REL # CHECK-NEXT: Value: 0x25 # CHECK-NEXT: - Tag: DT_ANDROID_RELSZ # CHECK-NEXT: Value: 0x26 # CHECK-NEXT: - Tag: DT_ANDROID_RELA # CHECK-NEXT: Value: 0x27 # CHECK-NEXT: - Tag: DT_ANDROID_RELASZ # CHECK-NEXT: Value: 0x28 # CHECK-NEXT: - Tag: DT_ANDROID_RELR # CHECK-NEXT: Value: 0x29 # CHECK-NEXT: - Tag: DT_ANDROID_RELRSZ # CHECK-NEXT: Value: 0x2A # CHECK-NEXT: - Tag: DT_ANDROID_RELRENT # CHECK-NEXT: Value: 0x2B # CHECK-NEXT: - Tag: DT_GNU_HASH # CHECK-NEXT: Value: 0x2C # CHECK-NEXT: - Tag: DT_TLSDESC_PLT # CHECK-NEXT: Value: 0x2D # CHECK-NEXT: - Tag: DT_TLSDESC_GOT # CHECK-NEXT: Value: 0x2E # CHECK-NEXT: - Tag: DT_RELACOUNT # CHECK-NEXT: Value: 0x2F # CHECK-NEXT: - Tag: DT_RELCOUNT # CHECK-NEXT: Value: 0x30 # CHECK-NEXT: - Tag: DT_FLAGS_1 # CHECK-NEXT: Value: 0x31 # CHECK-NEXT: - Tag: DT_VERSYM # CHECK-NEXT: Value: 0x32 # CHECK-NEXT: - Tag: DT_VERDEF # CHECK-NEXT: Value: 0x33 # CHECK-NEXT: - Tag: DT_VERDEFNUM # CHECK-NEXT: Value: 0x34 # CHECK-NEXT: - Tag: DT_VERNEED # CHECK-NEXT: Value: 0x35 # CHECK-NEXT: - Tag: DT_VERNEEDNUM # CHECK-NEXT: Value: 0x36 # CHECK-NEXT: - Tag: DT_USED # CHECK-NEXT: Value: 0x1 !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 invalid sh_entsize: expected 16, but got 255