1## Check we can use obj2yaml to yamalize the object containing .dynamic 2## section. Check that resulting section has the proper attributes and 3## dynamic tags and that we do not dump the default sh_entsize. 4 5# RUN: yaml2obj -DENTSIZE=0x10 %s -o %t1 6# RUN: obj2yaml %t1 | FileCheck %s 7 8# CHECK: Sections: 9# CHECK-NEXT: - Name: .dynamic 10# CHECK-NEXT: Type: SHT_DYNAMIC 11# CHECK-NEXT: Address: 0x1000 12# CHECK-NEXT: AddressAlign: 0x2000 13# CHECK-NEXT: Entries: 14# CHECK-NEXT: - Tag: DT_NULL 15# CHECK-NEXT: Value: 0x0 16# CHECK-NEXT: - Tag: DT_NEEDED 17# CHECK-NEXT: Value: 0x1 18# CHECK-NEXT: - Tag: DT_PLTRELSZ 19# CHECK-NEXT: Value: 0x2 20# CHECK-NEXT: - Tag: DT_PLTGOT 21# CHECK-NEXT: Value: 0x3 22# CHECK-NEXT: - Tag: DT_HASH 23# CHECK-NEXT: Value: 0x4 24# CHECK-NEXT: - Tag: DT_STRTAB 25# CHECK-NEXT: Value: 0x5 26# CHECK-NEXT: - Tag: DT_SYMTAB 27# CHECK-NEXT: Value: 0x6 28# CHECK-NEXT: - Tag: DT_RELA 29# CHECK-NEXT: Value: 0x7 30# CHECK-NEXT: - Tag: DT_RELASZ 31# CHECK-NEXT: Value: 0x8 32# CHECK-NEXT: - Tag: DT_RELAENT 33# CHECK-NEXT: Value: 0x9 34# CHECK-NEXT: - Tag: DT_STRSZ 35# CHECK-NEXT: Value: 0xA 36# CHECK-NEXT: - Tag: DT_SYMENT 37# CHECK-NEXT: Value: 0xB 38# CHECK-NEXT: - Tag: DT_INIT 39# CHECK-NEXT: Value: 0xC 40# CHECK-NEXT: - Tag: DT_FINI 41# CHECK-NEXT: Value: 0xD 42# CHECK-NEXT: - Tag: DT_SONAME 43# CHECK-NEXT: Value: 0xE 44# CHECK-NEXT: - Tag: DT_RPATH 45# CHECK-NEXT: Value: 0xF 46# CHECK-NEXT: - Tag: DT_SYMBOLIC 47# CHECK-NEXT: Value: 0x10 48# CHECK-NEXT: - Tag: DT_REL 49# CHECK-NEXT: Value: 0x11 50# CHECK-NEXT: - Tag: DT_RELSZ 51# CHECK-NEXT: Value: 0x12 52# CHECK-NEXT: - Tag: DT_RELENT 53# CHECK-NEXT: Value: 0x13 54# CHECK-NEXT: - Tag: DT_PLTREL 55# CHECK-NEXT: Value: 0x14 56# CHECK-NEXT: - Tag: DT_DEBUG 57# CHECK-NEXT: Value: 0x15 58# CHECK-NEXT: - Tag: DT_TEXTREL 59# CHECK-NEXT: Value: 0x16 60# CHECK-NEXT: - Tag: DT_JMPREL 61# CHECK-NEXT: Value: 0x17 62# CHECK-NEXT: - Tag: DT_BIND_NOW 63# CHECK-NEXT: Value: 0x18 64# CHECK-NEXT: - Tag: DT_INIT_ARRAY 65# CHECK-NEXT: Value: 0x19 66# CHECK-NEXT: - Tag: DT_FINI_ARRAY 67# CHECK-NEXT: Value: 0x1A 68# CHECK-NEXT: - Tag: DT_INIT_ARRAYSZ 69# CHECK-NEXT: Value: 0x1B 70# CHECK-NEXT: - Tag: DT_FINI_ARRAYSZ 71# CHECK-NEXT: Value: 0x1C 72# CHECK-NEXT: - Tag: DT_RUNPATH 73# CHECK-NEXT: Value: 0x1D 74# CHECK-NEXT: - Tag: DT_FLAGS 75# CHECK-NEXT: Value: 0x1E 76# CHECK-NEXT: - Tag: DT_PREINIT_ARRAY 77# CHECK-NEXT: Value: 0x1F 78# CHECK-NEXT: - Tag: DT_PREINIT_ARRAYSZ 79# CHECK-NEXT: Value: 0x20 80# CHECK-NEXT: - Tag: DT_SYMTAB_SHNDX 81# CHECK-NEXT: Value: 0x21 82# CHECK-NEXT: - Tag: DT_RELRSZ 83# CHECK-NEXT: Value: 0x22 84# CHECK-NEXT: - Tag: DT_RELR 85# CHECK-NEXT: Value: 0x23 86# CHECK-NEXT: - Tag: DT_RELRENT 87# CHECK-NEXT: Value: 0x24 88# CHECK-NEXT: - Tag: DT_ANDROID_REL 89# CHECK-NEXT: Value: 0x25 90# CHECK-NEXT: - Tag: DT_ANDROID_RELSZ 91# CHECK-NEXT: Value: 0x26 92# CHECK-NEXT: - Tag: DT_ANDROID_RELA 93# CHECK-NEXT: Value: 0x27 94# CHECK-NEXT: - Tag: DT_ANDROID_RELASZ 95# CHECK-NEXT: Value: 0x28 96# CHECK-NEXT: - Tag: DT_ANDROID_RELR 97# CHECK-NEXT: Value: 0x29 98# CHECK-NEXT: - Tag: DT_ANDROID_RELRSZ 99# CHECK-NEXT: Value: 0x2A 100# CHECK-NEXT: - Tag: DT_ANDROID_RELRENT 101# CHECK-NEXT: Value: 0x2B 102# CHECK-NEXT: - Tag: DT_GNU_HASH 103# CHECK-NEXT: Value: 0x2C 104# CHECK-NEXT: - Tag: DT_TLSDESC_PLT 105# CHECK-NEXT: Value: 0x2D 106# CHECK-NEXT: - Tag: DT_TLSDESC_GOT 107# CHECK-NEXT: Value: 0x2E 108# CHECK-NEXT: - Tag: DT_RELACOUNT 109# CHECK-NEXT: Value: 0x2F 110# CHECK-NEXT: - Tag: DT_RELCOUNT 111# CHECK-NEXT: Value: 0x30 112# CHECK-NEXT: - Tag: DT_FLAGS_1 113# CHECK-NEXT: Value: 0x31 114# CHECK-NEXT: - Tag: DT_VERSYM 115# CHECK-NEXT: Value: 0x32 116# CHECK-NEXT: - Tag: DT_VERDEF 117# CHECK-NEXT: Value: 0x33 118# CHECK-NEXT: - Tag: DT_VERDEFNUM 119# CHECK-NEXT: Value: 0x34 120# CHECK-NEXT: - Tag: DT_VERNEED 121# CHECK-NEXT: Value: 0x35 122# CHECK-NEXT: - Tag: DT_VERNEEDNUM 123# CHECK-NEXT: Value: 0x36 124# CHECK-NEXT: - Tag: DT_USED 125# CHECK-NEXT: Value: 0x1 126 127!ELF 128FileHeader: 129 Class: ELFCLASS64 130 Data: ELFDATA2LSB 131 Type: ET_DYN 132Sections: 133 - Name: .dynamic 134 Type: SHT_DYNAMIC 135 Address: 0x0000000000001000 136 AddressAlign: 0x0000000000002000 137 EntSize: [[ENTSIZE]] 138 Entries: 139 - Tag: DT_NULL 140 Value: 0x0000000000000000 141 - Tag: DT_NEEDED 142 Value: 0x0000000000000001 143 - Tag: DT_PLTRELSZ 144 Value: 0x0000000000000002 145 - Tag: DT_PLTGOT 146 Value: 0x0000000000000003 147 - Tag: DT_HASH 148 Value: 0x0000000000000004 149 - Tag: DT_STRTAB 150 Value: 0x0000000000000005 151 - Tag: DT_SYMTAB 152 Value: 0x0000000000000006 153 - Tag: DT_RELA 154 Value: 0x0000000000000007 155 - Tag: DT_RELASZ 156 Value: 0x0000000000000008 157 - Tag: DT_RELAENT 158 Value: 0x0000000000000009 159 - Tag: DT_STRSZ 160 Value: 0x000000000000000A 161 - Tag: DT_SYMENT 162 Value: 0x000000000000000B 163 - Tag: DT_INIT 164 Value: 0x000000000000000C 165 - Tag: DT_FINI 166 Value: 0x000000000000000D 167 - Tag: DT_SONAME 168 Value: 0x000000000000000E 169 - Tag: DT_RPATH 170 Value: 0x000000000000000F 171 - Tag: DT_SYMBOLIC 172 Value: 0x0000000000000010 173 - Tag: DT_REL 174 Value: 0x0000000000000011 175 - Tag: DT_RELSZ 176 Value: 0x0000000000000012 177 - Tag: DT_RELENT 178 Value: 0x0000000000000013 179 - Tag: DT_PLTREL 180 Value: 0x0000000000000014 181 - Tag: DT_DEBUG 182 Value: 0x0000000000000015 183 - Tag: DT_TEXTREL 184 Value: 0x0000000000000016 185 - Tag: DT_JMPREL 186 Value: 0x0000000000000017 187 - Tag: DT_BIND_NOW 188 Value: 0x0000000000000018 189 - Tag: DT_INIT_ARRAY 190 Value: 0x0000000000000019 191 - Tag: DT_FINI_ARRAY 192 Value: 0x000000000000001A 193 - Tag: DT_INIT_ARRAYSZ 194 Value: 0x000000000000001B 195 - Tag: DT_FINI_ARRAYSZ 196 Value: 0x000000000000001C 197 - Tag: DT_RUNPATH 198 Value: 0x000000000000001D 199 - Tag: DT_FLAGS 200 Value: 0x000000000000001E 201 - Tag: DT_PREINIT_ARRAY 202 Value: 0x000000000000001F 203 - Tag: DT_PREINIT_ARRAYSZ 204 Value: 0x0000000000000020 205 - Tag: DT_SYMTAB_SHNDX 206 Value: 0x0000000000000021 207 - Tag: DT_RELRSZ 208 Value: 0x0000000000000022 209 - Tag: DT_RELR 210 Value: 0x0000000000000023 211 - Tag: DT_RELRENT 212 Value: 0x0000000000000024 213 - Tag: DT_ANDROID_REL 214 Value: 0x0000000000000025 215 - Tag: DT_ANDROID_RELSZ 216 Value: 0x0000000000000026 217 - Tag: DT_ANDROID_RELA 218 Value: 0x0000000000000027 219 - Tag: DT_ANDROID_RELASZ 220 Value: 0x0000000000000028 221 - Tag: DT_ANDROID_RELR 222 Value: 0x0000000000000029 223 - Tag: DT_ANDROID_RELRSZ 224 Value: 0x000000000000002A 225 - Tag: DT_ANDROID_RELRENT 226 Value: 0x000000000000002B 227 - Tag: DT_GNU_HASH 228 Value: 0x000000000000002C 229 - Tag: DT_TLSDESC_PLT 230 Value: 0x000000000000002D 231 - Tag: DT_TLSDESC_GOT 232 Value: 0x000000000000002E 233 - Tag: DT_RELACOUNT 234 Value: 0x000000000000002F 235 - Tag: DT_RELCOUNT 236 Value: 0x0000000000000030 237 - Tag: DT_FLAGS_1 238 Value: 0x0000000000000031 239 - Tag: DT_VERSYM 240 Value: 0x0000000000000032 241 - Tag: DT_VERDEF 242 Value: 0x0000000000000033 243 - Tag: DT_VERDEFNUM 244 Value: 0x0000000000000034 245 - Tag: DT_VERNEED 246 Value: 0x0000000000000035 247 - Tag: DT_VERNEEDNUM 248 Value: 0x0000000000000036 249 - Tag: DT_USED 250 Value: 0x0000000000000001 251 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 %t2 256# RUN: not obj2yaml %t2 2>&1 | FileCheck %s --check-prefix=ENTSIZE 257 258# ENTSIZE: section [index 1] has an invalid sh_entsize: 255 259