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