1## In this test we test how machine-specific dynamic tags are dumped. 2 3## Case 1: Test that hexagon machine-specific tags can be dumped. 4# RUN: yaml2obj --docnum=1 -o %t.hex %s 5# RUN: llvm-objdump -p %t.hex | FileCheck %s --check-prefix=HEXAGON 6 7# HEXAGON: Dynamic Section: 8# HEXAGON-NEXT: HEXAGON_SYMSZ 0x0000000000000010 9# HEXAGON-NEXT: HEXAGON_VER 0x0000000000001000 10# HEXAGON-NEXT: HEXAGON_PLT 0x0000000000001000 11 12--- !ELF 13FileHeader: 14 Class: ELFCLASS64 15 Data: ELFDATA2LSB 16 Type: ET_EXEC 17 Machine: EM_HEXAGON 18Sections: 19 - Name: .dynamic 20 Type: SHT_DYNAMIC 21 Entries: 22 - Tag: DT_HEXAGON_SYMSZ 23 Value: 0x10 24 - Tag: DT_HEXAGON_VER 25 Value: 0x1000 26 - Tag: DT_HEXAGON_PLT 27 Value: 0x1000 28 - Tag: DT_NULL 29 Value: 0 30ProgramHeaders: 31 - Type: PT_LOAD 32 FirstSec: .dynamic 33 LastSec: .dynamic 34 - Type: PT_DYNAMIC 35 FirstSec: .dynamic 36 LastSec: .dynamic 37 38## Case 2: Test that MIPS machine-specific tags can be dumped. 39## MIPS has a few long tag names. Show that we indent columns properly. 40# RUN: yaml2obj --docnum=2 -o %t.mips %s 41# RUN: llvm-objdump -p %t.mips | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=MIPS 42 43# MIPS:Dynamic Section: 44# MIPS-NEXT: MIPS_RLD_VERSION 0x0000000012345678 45# MIPS-NEXT: MIPS_TIME_STAMP 0x0000000011223344 46# MIPS-NEXT: MIPS_ICHECKSUM 0x0000000011112222 47# MIPS-NEXT: MIPS_IVERSION 0x0000000000000001 48# MIPS-NEXT: MIPS_FLAGS 0x0000000011111111 49# MIPS-NEXT: MIPS_BASE_ADDRESS 0x0000000087654321 50# MIPS-NEXT: MIPS_MSYM 0x0000000000001000 51# MIPS-NEXT: MIPS_CONFLICT 0x0000000000001000 52# MIPS-NEXT: MIPS_LIBLIST 0x0000000000001000 53# MIPS-NEXT: MIPS_LOCAL_GOTNO 0x0000000000000001 54# MIPS-NEXT: MIPS_CONFLICTNO 0x0000000000000001 55# MIPS-NEXT: MIPS_LIBLISTNO 0x0000000000000001 56# MIPS-NEXT: MIPS_SYMTABNO 0x0000000000000001 57# MIPS-NEXT: MIPS_UNREFEXTNO 0x0000000000000000 58# MIPS-NEXT: MIPS_GOTSYM 0x0000000000000000 59# MIPS-NEXT: MIPS_HIPAGENO 0x0000000088776655 60# MIPS-NEXT: MIPS_RLD_MAP 0x0000000000001000 61# MIPS-NEXT: MIPS_DELTA_CLASS 0x0000000000001000 62# MIPS-NEXT: MIPS_DELTA_CLASS_NO 0x0000000000000001 63# MIPS-NEXT: MIPS_DELTA_INSTANCE 0x0000000000001000 64# MIPS-NEXT: MIPS_DELTA_INSTANCE_NO 0x0000000000000001 65# MIPS-NEXT: MIPS_DELTA_RELOC 0x0000000000001000 66# MIPS-NEXT: MIPS_DELTA_RELOC_NO 0x0000000000000001 67# MIPS-NEXT: MIPS_DELTA_SYM 0x0000000000001000 68# MIPS-NEXT: MIPS_DELTA_SYM_NO 0x0000000000000001 69# MIPS-NEXT: MIPS_DELTA_CLASSSYM 0x0000000000001000 70# MIPS-NEXT: MIPS_DELTA_CLASSSYM_NO 0x0000000000000001 71# MIPS-NEXT: MIPS_CXX_FLAGS 0x0000000088887777 72# MIPS-NEXT: MIPS_PIXIE_INIT 0x0000000000001000 73# MIPS-NEXT: MIPS_LOCALPAGE_GOTIDX 0x0000000000000001 74# MIPS-NEXT: MIPS_LOCAL_GOTIDX 0x0000000000000001 75# MIPS-NEXT: MIPS_HIDDEN_GOTIDX 0x0000000000000001 76# MIPS-NEXT: MIPS_PROTECTED_GOTIDX 0x0000000000000001 77# MIPS-NEXT: MIPS_OPTIONS 0x0000000000001000 78# MIPS-NEXT: MIPS_INTERFACE 0x0000000000001000 79# MIPS-NEXT: MIPS_DYNSTR_ALIGN 0x0000000088888888 80# MIPS-NEXT: MIPS_INTERFACE_SIZE 0x0000000000000010 81# MIPS-NEXT: MIPS_RLD_TEXT_RESOLVE_ADDR 0x0000000000000008 82# MIPS-NEXT: MIPS_PERF_SUFFIX 0x0000000000000000 83# MIPS-NEXT: MIPS_COMPACT_SIZE 0x0000000000000010 84# MIPS-NEXT: MIPS_GP_VALUE 0x0000000000000001 85# MIPS-NEXT: MIPS_AUX_DYNAMIC 0x0000000000001000 86# MIPS-NEXT: MIPS_PLTGOT 0x0000000000001000 87# MIPS-NEXT: MIPS_RWPLT 0x0000000000001000 88# MIPS-NEXT: MIPS_RLD_MAP_REL 0x0000000000001000 89# MIPS-NEXT: MIPS_XHASH 0x0000000000002000 90 91--- !ELF 92FileHeader: 93 Class: ELFCLASS64 94 Data: ELFDATA2LSB 95 Type: ET_EXEC 96 Machine: EM_MIPS 97Sections: 98 - Name: .dynamic 99 Type: SHT_DYNAMIC 100 Entries: 101 - Tag: DT_MIPS_RLD_VERSION 102 Value: 0x12345678 103 - Tag: DT_MIPS_TIME_STAMP 104 Value: 0x11223344 105 - Tag: DT_MIPS_ICHECKSUM 106 Value: 0x11112222 107 - Tag: DT_MIPS_IVERSION 108 Value: 0x1 109 - Tag: DT_MIPS_FLAGS 110 Value: 0x11111111 111 - Tag: DT_MIPS_BASE_ADDRESS 112 Value: 0x87654321 113 - Tag: DT_MIPS_MSYM 114 Value: 0x1000 115 - Tag: DT_MIPS_CONFLICT 116 Value: 0x1000 117 - Tag: DT_MIPS_LIBLIST 118 Value: 0x1000 119 - Tag: DT_MIPS_LOCAL_GOTNO 120 Value: 0x1 121 - Tag: DT_MIPS_CONFLICTNO 122 Value: 0x1 123 - Tag: DT_MIPS_LIBLISTNO 124 Value: 0x1 125 - Tag: DT_MIPS_SYMTABNO 126 Value: 0x1 127 - Tag: DT_MIPS_UNREFEXTNO 128 Value: 0x0 129 - Tag: DT_MIPS_GOTSYM 130 Value: 0x0 131 - Tag: DT_MIPS_HIPAGENO 132 Value: 0x88776655 133 - Tag: DT_MIPS_RLD_MAP 134 Value: 0x1000 135 - Tag: DT_MIPS_DELTA_CLASS 136 Value: 0x1000 137 - Tag: DT_MIPS_DELTA_CLASS_NO 138 Value: 0x1 139 - Tag: DT_MIPS_DELTA_INSTANCE 140 Value: 0x1000 141 - Tag: DT_MIPS_DELTA_INSTANCE_NO 142 Value: 0x1 143 - Tag: DT_MIPS_DELTA_RELOC 144 Value: 0x1000 145 - Tag: DT_MIPS_DELTA_RELOC_NO 146 Value: 0x1 147 - Tag: DT_MIPS_DELTA_SYM 148 Value: 0x1000 149 - Tag: DT_MIPS_DELTA_SYM_NO 150 Value: 0x1 151 - Tag: DT_MIPS_DELTA_CLASSSYM 152 Value: 0x1000 153 - Tag: DT_MIPS_DELTA_CLASSSYM_NO 154 Value: 0x1 155 - Tag: DT_MIPS_CXX_FLAGS 156 Value: 0x88887777 157 - Tag: DT_MIPS_PIXIE_INIT 158 Value: 0x1000 159 - Tag: DT_MIPS_LOCALPAGE_GOTIDX 160 Value: 0x1 161 - Tag: DT_MIPS_LOCAL_GOTIDX 162 Value: 0x1 163 - Tag: DT_MIPS_HIDDEN_GOTIDX 164 Value: 0x1 165 - Tag: DT_MIPS_PROTECTED_GOTIDX 166 Value: 0x1 167 - Tag: DT_MIPS_OPTIONS 168 Value: 0x1000 169 - Tag: DT_MIPS_INTERFACE 170 Value: 0x1000 171 - Tag: DT_MIPS_DYNSTR_ALIGN 172 Value: 0x88888888 173 - Tag: DT_MIPS_INTERFACE_SIZE 174 Value: 0x10 175 - Tag: DT_MIPS_RLD_TEXT_RESOLVE_ADDR 176 Value: 0x8 177 - Tag: DT_MIPS_PERF_SUFFIX 178 Value: 0x0 179 - Tag: DT_MIPS_COMPACT_SIZE 180 Value: 0x10 181 - Tag: DT_MIPS_GP_VALUE 182 Value: 0x1 183 - Tag: DT_MIPS_AUX_DYNAMIC 184 Value: 0x1000 185 - Tag: DT_MIPS_PLTGOT 186 Value: 0x1000 187 - Tag: DT_MIPS_RWPLT 188 Value: 0x1000 189 - Tag: DT_MIPS_RLD_MAP_REL 190 Value: 0x1000 191 - Tag: DT_MIPS_XHASH 192 Value: 0x2000 193 - Tag: DT_NULL 194 Value: 0 195ProgramHeaders: 196 - Type: PT_LOAD 197 FirstSec: .dynamic 198 LastSec: .dynamic 199 - Type: PT_DYNAMIC 200 FirstSec: .dynamic 201 LastSec: .dynamic 202 203## Case 3: Test that PPC machine-specific tags can be dumped. 204# RUN: yaml2obj --docnum=3 -o %t.ppc %s 205# RUN: llvm-objdump -p %t.ppc | FileCheck %s --check-prefix=PPC 206 207# PPC: Dynamic Section: 208# PPC-NEXT: PPC_GOT 0x000200c0 209# PPC-NEXT: PPC_OPT 0x00000001 210 211--- !ELF 212FileHeader: 213 Class: ELFCLASS32 214 Data: ELFDATA2MSB 215 Type: ET_EXEC 216 Machine: EM_PPC 217Sections: 218 - Name: .dynamic 219 Type: SHT_DYNAMIC 220 Entries: 221 - Tag: DT_PPC_GOT 222 Value: 0x200c0 223 - Tag: DT_PPC_OPT 224 Value: 1 225 - Tag: DT_NULL 226 Value: 0 227ProgramHeaders: 228 - Type: PT_LOAD 229 FirstSec: .dynamic 230 LastSec: .dynamic 231 - Type: PT_DYNAMIC 232 FirstSec: .dynamic 233 LastSec: .dynamic 234 235## Case 4: Test that PPC64 machine-specific tags can be dumped. 236# RUN: yaml2obj --docnum=4 -o %t.ppc64 %s 237# RUN: llvm-objdump -p %t.ppc64 | FileCheck %s --check-prefix=PPC64 238 239# PPC64: Dynamic Section: 240# PPC64-NEXT: PPC64_GLINK 0x0000000000001000 241 242--- !ELF 243FileHeader: 244 Class: ELFCLASS64 245 Data: ELFDATA2LSB 246 Type: ET_EXEC 247 Machine: EM_PPC64 248Sections: 249 - Name: .dynamic 250 Type: SHT_DYNAMIC 251 Entries: 252 - Tag: DT_PPC64_GLINK 253 Value: 0x1000 254 - Tag: DT_NULL 255 Value: 0 256ProgramHeaders: 257 - Type: PT_LOAD 258 FirstSec: .dynamic 259 LastSec: .dynamic 260 - Type: PT_DYNAMIC 261 FirstSec: .dynamic 262 LastSec: .dynamic 263 264## Case 5: Test that AARCH64 machine-specific tags can be dumped. 265# RUN: yaml2obj --docnum=5 -o %t.aarch64 %s 266# RUN: llvm-objdump -p %t.aarch64 | FileCheck %s --check-prefix=AARCH64 267 268# AARCH64: Dynamic Section: 269# AARCH64-NEXT: AARCH64_BTI_PLT 0x0000000000000001 270# AARCH64-NEXT: AARCH64_PAC_PLT 0x0000000000000002 271# AARCH64-NEXT: AARCH64_AUTH_RELR 0x0000000000000003 272# AARCH64-NEXT: AARCH64_AUTH_RELRSZ 0x0000000000000004 273# AARCH64-NEXT: AARCH64_AUTH_RELRENT 0x0000000000000005 274 275--- !ELF 276FileHeader: 277 Class: ELFCLASS64 278 Data: ELFDATA2LSB 279 Type: ET_EXEC 280 Machine: EM_AARCH64 281Sections: 282 - Name: .dynamic 283 Type: SHT_DYNAMIC 284 Entries: 285 - Tag: DT_AARCH64_BTI_PLT 286 Value: 1 287 - Tag: DT_AARCH64_PAC_PLT 288 Value: 2 289 - Tag: DT_AARCH64_AUTH_RELR 290 Value: 3 291 - Tag: DT_AARCH64_AUTH_RELRSZ 292 Value: 4 293 - Tag: DT_AARCH64_AUTH_RELRENT 294 Value: 5 295 - Tag: DT_NULL 296 Value: 0 297ProgramHeaders: 298 - Type: PT_LOAD 299 FirstSec: .dynamic 300 LastSec: .dynamic 301 - Type: PT_DYNAMIC 302 FirstSec: .dynamic 303 LastSec: .dynamic 304 305## Case 6: Test that RISC-V machine-specific tags can be dumped. 306# RUN: yaml2obj --docnum=6 %s -o %t.rv 307# RUN: llvm-objdump -p %t.rv | FileCheck %s --check-prefix=RISCV 308 309# RISCV: Dynamic Section: 310# RISCV-NEXT: RISCV_VARIANT_CC 0x0000000000000001 311 312--- !ELF 313FileHeader: 314 Class: ELFCLASS64 315 Data: ELFDATA2LSB 316 Type: ET_EXEC 317 Machine: EM_RISCV 318Sections: 319 - Name: .dynamic 320 Type: SHT_DYNAMIC 321 Entries: 322 - Tag: DT_RISCV_VARIANT_CC 323 Value: 1 324 - Tag: DT_NULL 325 Value: 0 326ProgramHeaders: 327 - Type: PT_LOAD 328 FirstSec: .dynamic 329 LastSec: .dynamic 330 - Type: PT_DYNAMIC 331 FirstSec: .dynamic 332 LastSec: .dynamic 333