259 lines · yaml
1## Check we can use obj2yaml to yamalize the object containing .dynamic2## section. Check that resulting section has the proper attributes and3## dynamic tags and that we do not dump the default sh_entsize.4 5# RUN: yaml2obj -DENTSIZE=0x10 %s -o %t16# RUN: obj2yaml %t1 | FileCheck %s7 8# CHECK: Sections:9# CHECK-NEXT: - Name: .dynamic10# CHECK-NEXT: Type: SHT_DYNAMIC11# CHECK-NEXT: Address: 0x100012# CHECK-NEXT: AddressAlign: 0x200013# CHECK-NEXT: Entries:14# CHECK-NEXT: - Tag: DT_NULL15# CHECK-NEXT: Value: 0x016# CHECK-NEXT: - Tag: DT_NEEDED17# CHECK-NEXT: Value: 0x118# CHECK-NEXT: - Tag: DT_PLTRELSZ19# CHECK-NEXT: Value: 0x220# CHECK-NEXT: - Tag: DT_PLTGOT21# CHECK-NEXT: Value: 0x322# CHECK-NEXT: - Tag: DT_HASH23# CHECK-NEXT: Value: 0x424# CHECK-NEXT: - Tag: DT_STRTAB25# CHECK-NEXT: Value: 0x526# CHECK-NEXT: - Tag: DT_SYMTAB27# CHECK-NEXT: Value: 0x628# CHECK-NEXT: - Tag: DT_RELA29# CHECK-NEXT: Value: 0x730# CHECK-NEXT: - Tag: DT_RELASZ31# CHECK-NEXT: Value: 0x832# CHECK-NEXT: - Tag: DT_RELAENT33# CHECK-NEXT: Value: 0x934# CHECK-NEXT: - Tag: DT_STRSZ35# CHECK-NEXT: Value: 0xA36# CHECK-NEXT: - Tag: DT_SYMENT37# CHECK-NEXT: Value: 0xB38# CHECK-NEXT: - Tag: DT_INIT39# CHECK-NEXT: Value: 0xC40# CHECK-NEXT: - Tag: DT_FINI41# CHECK-NEXT: Value: 0xD42# CHECK-NEXT: - Tag: DT_SONAME43# CHECK-NEXT: Value: 0xE44# CHECK-NEXT: - Tag: DT_RPATH45# CHECK-NEXT: Value: 0xF46# CHECK-NEXT: - Tag: DT_SYMBOLIC47# CHECK-NEXT: Value: 0x1048# CHECK-NEXT: - Tag: DT_REL49# CHECK-NEXT: Value: 0x1150# CHECK-NEXT: - Tag: DT_RELSZ51# CHECK-NEXT: Value: 0x1252# CHECK-NEXT: - Tag: DT_RELENT53# CHECK-NEXT: Value: 0x1354# CHECK-NEXT: - Tag: DT_PLTREL55# CHECK-NEXT: Value: 0x1456# CHECK-NEXT: - Tag: DT_DEBUG57# CHECK-NEXT: Value: 0x1558# CHECK-NEXT: - Tag: DT_TEXTREL59# CHECK-NEXT: Value: 0x1660# CHECK-NEXT: - Tag: DT_JMPREL61# CHECK-NEXT: Value: 0x1762# CHECK-NEXT: - Tag: DT_BIND_NOW63# CHECK-NEXT: Value: 0x1864# CHECK-NEXT: - Tag: DT_INIT_ARRAY65# CHECK-NEXT: Value: 0x1966# CHECK-NEXT: - Tag: DT_FINI_ARRAY67# CHECK-NEXT: Value: 0x1A68# CHECK-NEXT: - Tag: DT_INIT_ARRAYSZ69# CHECK-NEXT: Value: 0x1B70# CHECK-NEXT: - Tag: DT_FINI_ARRAYSZ71# CHECK-NEXT: Value: 0x1C72# CHECK-NEXT: - Tag: DT_RUNPATH73# CHECK-NEXT: Value: 0x1D74# CHECK-NEXT: - Tag: DT_FLAGS75# CHECK-NEXT: Value: 0x1E76# CHECK-NEXT: - Tag: DT_PREINIT_ARRAY77# CHECK-NEXT: Value: 0x1F78# CHECK-NEXT: - Tag: DT_PREINIT_ARRAYSZ79# CHECK-NEXT: Value: 0x2080# CHECK-NEXT: - Tag: DT_SYMTAB_SHNDX81# CHECK-NEXT: Value: 0x2182# CHECK-NEXT: - Tag: DT_RELRSZ83# CHECK-NEXT: Value: 0x2284# CHECK-NEXT: - Tag: DT_RELR85# CHECK-NEXT: Value: 0x2386# CHECK-NEXT: - Tag: DT_RELRENT87# CHECK-NEXT: Value: 0x2488# CHECK-NEXT: - Tag: DT_ANDROID_REL89# CHECK-NEXT: Value: 0x2590# CHECK-NEXT: - Tag: DT_ANDROID_RELSZ91# CHECK-NEXT: Value: 0x2692# CHECK-NEXT: - Tag: DT_ANDROID_RELA93# CHECK-NEXT: Value: 0x2794# CHECK-NEXT: - Tag: DT_ANDROID_RELASZ95# CHECK-NEXT: Value: 0x2896# CHECK-NEXT: - Tag: DT_ANDROID_RELR97# CHECK-NEXT: Value: 0x2998# CHECK-NEXT: - Tag: DT_ANDROID_RELRSZ99# CHECK-NEXT: Value: 0x2A100# CHECK-NEXT: - Tag: DT_ANDROID_RELRENT101# CHECK-NEXT: Value: 0x2B102# CHECK-NEXT: - Tag: DT_GNU_HASH103# CHECK-NEXT: Value: 0x2C104# CHECK-NEXT: - Tag: DT_TLSDESC_PLT105# CHECK-NEXT: Value: 0x2D106# CHECK-NEXT: - Tag: DT_TLSDESC_GOT107# CHECK-NEXT: Value: 0x2E108# CHECK-NEXT: - Tag: DT_RELACOUNT109# CHECK-NEXT: Value: 0x2F110# CHECK-NEXT: - Tag: DT_RELCOUNT111# CHECK-NEXT: Value: 0x30112# CHECK-NEXT: - Tag: DT_FLAGS_1113# CHECK-NEXT: Value: 0x31114# CHECK-NEXT: - Tag: DT_VERSYM115# CHECK-NEXT: Value: 0x32116# CHECK-NEXT: - Tag: DT_VERDEF117# CHECK-NEXT: Value: 0x33118# CHECK-NEXT: - Tag: DT_VERDEFNUM119# CHECK-NEXT: Value: 0x34120# CHECK-NEXT: - Tag: DT_VERNEED121# CHECK-NEXT: Value: 0x35122# CHECK-NEXT: - Tag: DT_VERNEEDNUM123# CHECK-NEXT: Value: 0x36124# CHECK-NEXT: - Tag: DT_USED125# CHECK-NEXT: Value: 0x1126 127!ELF128FileHeader:129 Class: ELFCLASS64130 Data: ELFDATA2LSB131 Type: ET_DYN132Sections:133 - Name: .dynamic134 Type: SHT_DYNAMIC135 Address: 0x0000000000001000136 AddressAlign: 0x0000000000002000137 EntSize: [[ENTSIZE]]138 Entries:139 - Tag: DT_NULL140 Value: 0x0000000000000000141 - Tag: DT_NEEDED142 Value: 0x0000000000000001143 - Tag: DT_PLTRELSZ144 Value: 0x0000000000000002145 - Tag: DT_PLTGOT146 Value: 0x0000000000000003147 - Tag: DT_HASH148 Value: 0x0000000000000004149 - Tag: DT_STRTAB150 Value: 0x0000000000000005151 - Tag: DT_SYMTAB152 Value: 0x0000000000000006153 - Tag: DT_RELA154 Value: 0x0000000000000007155 - Tag: DT_RELASZ156 Value: 0x0000000000000008157 - Tag: DT_RELAENT158 Value: 0x0000000000000009159 - Tag: DT_STRSZ160 Value: 0x000000000000000A161 - Tag: DT_SYMENT162 Value: 0x000000000000000B163 - Tag: DT_INIT164 Value: 0x000000000000000C165 - Tag: DT_FINI166 Value: 0x000000000000000D167 - Tag: DT_SONAME168 Value: 0x000000000000000E169 - Tag: DT_RPATH170 Value: 0x000000000000000F171 - Tag: DT_SYMBOLIC172 Value: 0x0000000000000010173 - Tag: DT_REL174 Value: 0x0000000000000011175 - Tag: DT_RELSZ176 Value: 0x0000000000000012177 - Tag: DT_RELENT178 Value: 0x0000000000000013179 - Tag: DT_PLTREL180 Value: 0x0000000000000014181 - Tag: DT_DEBUG182 Value: 0x0000000000000015183 - Tag: DT_TEXTREL184 Value: 0x0000000000000016185 - Tag: DT_JMPREL186 Value: 0x0000000000000017187 - Tag: DT_BIND_NOW188 Value: 0x0000000000000018189 - Tag: DT_INIT_ARRAY190 Value: 0x0000000000000019191 - Tag: DT_FINI_ARRAY192 Value: 0x000000000000001A193 - Tag: DT_INIT_ARRAYSZ194 Value: 0x000000000000001B195 - Tag: DT_FINI_ARRAYSZ196 Value: 0x000000000000001C197 - Tag: DT_RUNPATH198 Value: 0x000000000000001D199 - Tag: DT_FLAGS200 Value: 0x000000000000001E201 - Tag: DT_PREINIT_ARRAY202 Value: 0x000000000000001F203 - Tag: DT_PREINIT_ARRAYSZ204 Value: 0x0000000000000020205 - Tag: DT_SYMTAB_SHNDX206 Value: 0x0000000000000021207 - Tag: DT_RELRSZ208 Value: 0x0000000000000022209 - Tag: DT_RELR210 Value: 0x0000000000000023211 - Tag: DT_RELRENT212 Value: 0x0000000000000024213 - Tag: DT_ANDROID_REL214 Value: 0x0000000000000025215 - Tag: DT_ANDROID_RELSZ216 Value: 0x0000000000000026217 - Tag: DT_ANDROID_RELA218 Value: 0x0000000000000027219 - Tag: DT_ANDROID_RELASZ220 Value: 0x0000000000000028221 - Tag: DT_ANDROID_RELR222 Value: 0x0000000000000029223 - Tag: DT_ANDROID_RELRSZ224 Value: 0x000000000000002A225 - Tag: DT_ANDROID_RELRENT226 Value: 0x000000000000002B227 - Tag: DT_GNU_HASH228 Value: 0x000000000000002C229 - Tag: DT_TLSDESC_PLT230 Value: 0x000000000000002D231 - Tag: DT_TLSDESC_GOT232 Value: 0x000000000000002E233 - Tag: DT_RELACOUNT234 Value: 0x000000000000002F235 - Tag: DT_RELCOUNT236 Value: 0x0000000000000030237 - Tag: DT_FLAGS_1238 Value: 0x0000000000000031239 - Tag: DT_VERSYM240 Value: 0x0000000000000032241 - Tag: DT_VERDEF242 Value: 0x0000000000000033243 - Tag: DT_VERDEFNUM244 Value: 0x0000000000000034245 - Tag: DT_VERNEED246 Value: 0x0000000000000035247 - Tag: DT_VERNEEDNUM248 Value: 0x0000000000000036249 - Tag: DT_USED250 Value: 0x0000000000000001251 252## Test the behavior when sh_entsize is invalid.253## Here we use 0xFE as an arbitrary broken value instead of expected 0x16.254 255# RUN: yaml2obj -DENTSIZE=0xff %s -o %t2256# RUN: not obj2yaml %t2 2>&1 | FileCheck %s --check-prefix=ENTSIZE257 258# ENTSIZE: section [index 1] has invalid sh_entsize: expected 16, but got 255259