aboutsummaryrefslogtreecommitdiffstats
path: root/test/MC
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC')
-rw-r--r--test/MC/AArch64/elf-globaladdress.ll93
-rw-r--r--test/MC/AArch64/elf-objdump.s2
-rw-r--r--test/MC/AArch64/elf-reloc-addsubimm.s17
-rw-r--r--test/MC/AArch64/elf-reloc-condbr.s17
-rw-r--r--test/MC/AArch64/elf-reloc-ldrlit.s32
-rw-r--r--test/MC/AArch64/elf-reloc-ldstunsimm.s38
-rw-r--r--test/MC/AArch64/elf-reloc-movw.s96
-rw-r--r--test/MC/AArch64/elf-reloc-pcreladdressing.s32
-rw-r--r--test/MC/AArch64/elf-reloc-tstb.s22
-rw-r--r--test/MC/AArch64/elf-reloc-uncondbrimm.s22
-rw-r--r--test/MC/AArch64/gicv3-regs-diagnostics.s61
-rw-r--r--test/MC/AArch64/gicv3-regs.s223
-rw-r--r--test/MC/AArch64/tls-relocs.s531
-rw-r--r--test/MC/AArch64/trace-regs-diagnostics.s156
-rw-r--r--test/MC/AArch64/trace-regs.s766
-rw-r--r--test/MC/ARM/2013-03-18-Br-to-label-named-like-reg.s5
-rw-r--r--test/MC/ARM/arm-thumb-trustzone.s25
-rw-r--r--test/MC/ARM/arm-trustzone.s24
-rw-r--r--test/MC/ARM/basic-arm-instructions.s13
-rw-r--r--test/MC/ARM/basic-thumb2-instructions.s4
-rw-r--r--test/MC/ARM/cxx-global-constructor.ll5
-rw-r--r--test/MC/ARM/data-in-code.ll122
-rw-r--r--test/MC/ARM/elf-eflags-eabi-cg.ll5
-rw-r--r--test/MC/ARM/elf-eflags-eabi.s5
-rw-r--r--test/MC/ARM/elf-movt.s45
-rw-r--r--test/MC/ARM/elf-reloc-01.ll15
-rw-r--r--test/MC/ARM/elf-reloc-02.ll14
-rw-r--r--test/MC/ARM/elf-reloc-03.ll14
-rw-r--r--test/MC/ARM/elf-reloc-condcall.s35
-rw-r--r--test/MC/ARM/elf-thumbfunc-reloc.ll28
-rw-r--r--test/MC/ARM/elf-thumbfunc-reloc.s11
-rw-r--r--test/MC/ARM/elf-thumbfunc.s14
-rw-r--r--test/MC/ARM/invalid-hint-arm.s7
-rw-r--r--test/MC/ARM/invalid-hint-thumb.s9
-rw-r--r--test/MC/ARM/neon-cmp-encoding.s21
-rw-r--r--test/MC/ARM/xscale-attributes.ll33
-rw-r--r--test/MC/AsmParser/section.s144
-rw-r--r--test/MC/AsmParser/section_names.s62
-rw-r--r--test/MC/COFF/align-nops.s64
-rw-r--r--test/MC/COFF/basic-coff-64.s137
-rw-r--r--test/MC/COFF/basic-coff.s220
-rw-r--r--test/MC/COFF/bss.s12
-rw-r--r--test/MC/COFF/diff.s34
-rwxr-xr-xtest/MC/COFF/linker-options.ll21
-rw-r--r--test/MC/COFF/module-asm.ll32
-rw-r--r--test/MC/COFF/relocation-imgrel.s29
-rw-r--r--test/MC/COFF/secrel-variant.s19
-rw-r--r--test/MC/COFF/secrel32.s12
-rw-r--r--test/MC/COFF/seh-section.s20
-rw-r--r--test/MC/COFF/seh.s119
-rw-r--r--test/MC/COFF/simple-fixups.s11
-rw-r--r--test/MC/COFF/symbol-alias.s76
-rw-r--r--test/MC/COFF/symbol-fragment-offset-64.s168
-rw-r--r--test/MC/COFF/symbol-fragment-offset.s277
-rw-r--r--test/MC/COFF/weak-symbol-section-specification.ll30
-rw-r--r--test/MC/COFF/weak.s70
-rw-r--r--test/MC/Disassembler/AArch64/gicv3-regs.txt222
-rw-r--r--test/MC/Disassembler/AArch64/trace-regs.txt736
-rw-r--r--test/MC/Disassembler/ARM/arm-tests.txt42
-rw-r--r--test/MC/Disassembler/ARM/arm-thumb-trustzone.txt17
-rw-r--r--test/MC/Disassembler/ARM/arm-trustzone.txt16
-rw-r--r--test/MC/Disassembler/ARM/basic-arm-instructions.txt18
-rw-r--r--test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt1
-rw-r--r--test/MC/Disassembler/ARM/invalid-hint-arm.txt13
-rw-r--r--test/MC/Disassembler/ARM/invalid-hint-thumb.txt8
-rw-r--r--test/MC/Disassembler/ARM/thumb2.txt5
-rw-r--r--test/MC/Disassembler/Mips/mips-dsp.txt13
-rw-r--r--test/MC/Disassembler/Mips/mips32.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips32_le.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips32r2.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips32r2_le.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips64.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips64_le.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips64r2.txt1
-rw-r--r--test/MC/Disassembler/Mips/mips64r2_le.txt1
-rw-r--r--test/MC/Disassembler/X86/intel-syntax.txt9
-rw-r--r--test/MC/Disassembler/X86/simple-tests.txt15
-rw-r--r--test/MC/Disassembler/X86/x86-64.txt15
-rw-r--r--test/MC/Disassembler/XCore/xcore.txt67
-rw-r--r--test/MC/ELF/abs.s19
-rw-r--r--test/MC/ELF/alias-reloc.s62
-rw-r--r--test/MC/ELF/alias.s144
-rw-r--r--test/MC/ELF/align-bss.s27
-rw-r--r--test/MC/ELF/align-nops.s60
-rw-r--r--test/MC/ELF/align-size.s19
-rw-r--r--test/MC/ELF/align-text.s28
-rw-r--r--test/MC/ELF/align.s55
-rw-r--r--test/MC/ELF/basic-elf-32.s82
-rw-r--r--test/MC/ELF/basic-elf-64.s84
-rw-r--r--test/MC/ELF/call-abs.s14
-rw-r--r--test/MC/ELF/cfi-adjust-cfa-offset.s75
-rw-r--r--test/MC/ELF/cfi-advance-loc2.s71
-rw-r--r--test/MC/ELF/cfi-def-cfa-offset.s74
-rw-r--r--test/MC/ELF/cfi-def-cfa-register.s70
-rw-r--r--test/MC/ELF/cfi-def-cfa.s71
-rw-r--r--test/MC/ELF/cfi-escape.s74
-rw-r--r--test/MC/ELF/cfi-offset.s71
-rw-r--r--test/MC/ELF/cfi-register.s74
-rw-r--r--test/MC/ELF/cfi-rel-offset.s75
-rw-r--r--test/MC/ELF/cfi-rel-offset2.s74
-rw-r--r--test/MC/ELF/cfi-remember.s75
-rw-r--r--test/MC/ELF/cfi-restore.s74
-rw-r--r--test/MC/ELF/cfi-same-value.s74
-rw-r--r--test/MC/ELF/cfi-sections.s65
-rw-r--r--test/MC/ELF/cfi-signal-frame.s36
-rw-r--r--test/MC/ELF/cfi-undefined.s75
-rw-r--r--test/MC/ELF/cfi-zero-addr-delta.s70
-rw-r--r--test/MC/ELF/cfi.s679
-rw-r--r--test/MC/ELF/comdat.s134
-rw-r--r--test/MC/ELF/common.s105
-rw-r--r--test/MC/ELF/common2.s25
-rw-r--r--test/MC/ELF/debug-line.s32
-rw-r--r--test/MC/ELF/debug-loc.s28
-rw-r--r--test/MC/ELF/diff.s8
-rw-r--r--test/MC/ELF/empty-dwarf-lines.s28
-rw-r--r--test/MC/ELF/empty.s151
-rw-r--r--test/MC/ELF/entsize.ll56
-rw-r--r--test/MC/ELF/entsize.s87
-rw-r--r--test/MC/ELF/file.s38
-rw-r--r--test/MC/ELF/gen-dwarf.s106
-rw-r--r--test/MC/ELF/global-offset.s30
-rw-r--r--test/MC/ELF/got.s29
-rw-r--r--test/MC/ELF/ident.s31
-rw-r--r--test/MC/ELF/lcomm.s36
-rw-r--r--test/MC/ELF/leb128.s39
-rw-r--r--test/MC/ELF/local-reloc.s30
-rw-r--r--test/MC/ELF/many-sections-2.s2
-rw-r--r--test/MC/ELF/merge.s85
-rw-r--r--test/MC/ELF/n_bytes.s38
-rw-r--r--test/MC/ELF/noexec.s46
-rw-r--r--test/MC/ELF/norelocation.s34
-rw-r--r--test/MC/ELF/org.s16
-rw-r--r--test/MC/ELF/pic-diff.s33
-rw-r--r--test/MC/ELF/plt.s15
-rw-r--r--test/MC/ELF/pr9292.s37
-rw-r--r--test/MC/ELF/relax-arith.s66
-rw-r--r--test/MC/ELF/relax.s36
-rw-r--r--test/MC/ELF/relocation-386.s219
-rw-r--r--test/MC/ELF/relocation-pc.s53
-rw-r--r--test/MC/ELF/relocation.s131
-rw-r--r--test/MC/ELF/rename.s56
-rw-r--r--test/MC/ELF/section.s172
-rw-r--r--test/MC/ELF/set.s36
-rw-r--r--test/MC/ELF/sleb.s16
-rw-r--r--test/MC/ELF/subsection.s37
-rw-r--r--test/MC/ELF/symref.s261
-rw-r--r--test/MC/ELF/tls-i386.s254
-rw-r--r--test/MC/ELF/tls.s127
-rw-r--r--test/MC/ELF/type.s97
-rw-r--r--test/MC/ELF/uleb.s16
-rw-r--r--test/MC/ELF/undef.s45
-rw-r--r--test/MC/ELF/undef2.s18
-rw-r--r--test/MC/ELF/version.s32
-rw-r--r--test/MC/ELF/weak-relocation.s13
-rw-r--r--test/MC/ELF/weak.s40
-rw-r--r--test/MC/ELF/weakref-plt.s14
-rw-r--r--test/MC/ELF/weakref-reloc.s79
-rw-r--r--test/MC/ELF/weakref.s320
-rw-r--r--test/MC/ELF/x86_64-reloc-sizetest.s12
-rw-r--r--test/MC/ELF/zero.s31
-rw-r--r--test/MC/Mips/ef_frame.ll52
-rw-r--r--test/MC/Mips/eh-frame.s167
-rw-r--r--test/MC/Mips/elf-N64.ll27
-rw-r--r--test/MC/Mips/elf-bigendian.ll39
-rw-r--r--test/MC/Mips/elf-gprel-32-64.ll15
-rw-r--r--test/MC/Mips/elf-reginfo.ll21
-rw-r--r--test/MC/Mips/elf-relsym.ll20
-rw-r--r--test/MC/Mips/elf-tls.ll12
-rw-r--r--test/MC/Mips/elf_basic.s52
-rw-r--r--test/MC/Mips/elf_eflags.ll44
-rw-r--r--test/MC/Mips/elf_st_other.ll7
-rw-r--r--test/MC/Mips/expr1.s26
-rw-r--r--test/MC/Mips/higher_highest.ll12
-rw-r--r--test/MC/Mips/micromips-alu-instructions.s64
-rw-r--r--test/MC/Mips/micromips-loadstore-instructions.s22
-rw-r--r--test/MC/Mips/micromips-shift-instructions.s22
-rw-r--r--test/MC/Mips/mips-alu-instructions.s3
-rw-r--r--test/MC/Mips/mips-expansions.s23
-rw-r--r--test/MC/Mips/mips-fpu-instructions.s5
-rw-r--r--test/MC/Mips/mips-jump-instructions.s126
-rw-r--r--test/MC/Mips/mips-memory-instructions.s1
-rw-r--r--test/MC/Mips/mips-relocations.s1
-rw-r--r--test/MC/Mips/mips64-alu-instructions.s3
-rw-r--r--test/MC/Mips/mips_directives.s24
-rw-r--r--test/MC/Mips/nabi-regs.s1
-rw-r--r--test/MC/Mips/r-mips-got-disp.ll5
-rw-r--r--test/MC/Mips/set-at-directive.s1
-rw-r--r--test/MC/Mips/sym-offset.ll6
-rw-r--r--test/MC/Mips/xgot.ll35
-rw-r--r--test/MC/PowerPC/ppc64-initial-cfa.ll134
-rw-r--r--test/MC/PowerPC/ppc64-relocs-01.ll45
-rw-r--r--test/MC/PowerPC/ppc64-tls-relocs-01.ll21
-rw-r--r--test/MC/X86/fde-reloc.s (renamed from test/MC/ELF/fde-reloc.s)0
-rw-r--r--test/MC/X86/intel-syntax.s77
-rw-r--r--test/MC/X86/x86-32-ms-inline-asm.s20
-rw-r--r--test/MC/X86/x86-64.s8
-rw-r--r--test/MC/X86/x86_64-rand-encoding.s49
-rw-r--r--test/MC/X86/x86_64-rtm-encoding.s4
198 files changed, 7621 insertions, 4848 deletions
diff --git a/test/MC/AArch64/elf-globaladdress.ll b/test/MC/AArch64/elf-globaladdress.ll
index 190439d..942920b 100644
--- a/test/MC/AArch64/elf-globaladdress.ll
+++ b/test/MC/AArch64/elf-globaladdress.ll
@@ -1,10 +1,10 @@
;; RUN: llc -mtriple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
-;; RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+;; RUN: llvm-readobj -h -r | FileCheck -check-prefix=OBJ %s
; Also take it on a round-trip through llvm-mc to stretch assembly-parsing's legs:
;; RUN: llc -mtriple=aarch64-none-linux-gnu %s -o - | \
-;; RUN: llvm-mc -arch=aarch64 -filetype=obj -o - | \
-;; RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+;; RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj -o - | \
+;; RUN: llvm-readobj -h -r | FileCheck -check-prefix=OBJ %s
@var8 = global i8 0
@var16 = global i16 0
@@ -35,77 +35,28 @@ define void @address() {
}
; Check we're using EM_AARCH64
-; OBJ: 'e_machine', 0x00
-
-; OBJ: .rela.text
-
-; var8
-; R_AARCH64_ADR_PREL_PG_HI21 against var8
-; OBJ: 'r_sym', 0x0000000f
-; OBJ-NEXT: 'r_type', 0x00000113
-
-; R_AARCH64_LDST8_ABS_LO12_NC against var8
-; OBJ: 'r_sym', 0x0000000f
-; OBJ-NEXT: 'r_type', 0x00000116
-
-
-; var16
-; R_AARCH64_ADR_PREL_PG_HI21 against var16
-; OBJ: 'r_sym', 0x0000000c
-; OBJ-NEXT: 'r_type', 0x00000113
-
-; R_AARCH64_LDST16_ABS_LO12_NC against var16
-; OBJ: 'r_sym', 0x0000000c
-; OBJ-NEXT: 'r_type', 0x0000011c
-
-
-; var32
-; R_AARCH64_ADR_PREL_PG_HI21 against var32
-; OBJ: 'r_sym', 0x0000000d
-; OBJ-NEXT: 'r_type', 0x00000113
-
-; R_AARCH64_LDST32_ABS_LO12_NC against var32
-; OBJ: 'r_sym', 0x0000000d
-; OBJ-NEXT: 'r_type', 0x0000011d
-
-
-; var64
-; R_AARCH64_ADR_PREL_PG_HI21 against var64
-; OBJ: 'r_sym', 0x0000000e
-; OBJ-NEXT: 'r_type', 0x00000113
-
-; R_AARCH64_LDST64_ABS_LO12_NC against var64
-; OBJ: 'r_sym', 0x0000000e
-; OBJ-NEXT: 'r_type', 0x0000011e
+; OBJ: ElfHeader {
+; OBJ: Machine: EM_AARCH64
+; OBJ: }
+
+; OBJ: Relocations [
+; OBJ: Section (1) .text {
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 var8
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_LDST8_ABS_LO12_NC var8
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 var16
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_LDST16_ABS_LO12_NC var16
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 var32
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_LDST32_ABS_LO12_NC var32
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 var64
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_LDST64_ABS_LO12_NC var64
; This is on the store, so not really important, but it stops the next
; match working.
-; R_AARCH64_LDST64_ABS_LO12_NC against var64
-; OBJ: 'r_sym', 0x0000000e
-; OBJ-NEXT: 'r_type', 0x0000011e
-
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_LDST64_ABS_LO12_NC var64
; Pure address-calculation against var64
-; R_AARCH64_ADR_PREL_PG_HI21 against var64
-; OBJ: 'r_sym', 0x0000000e
-; OBJ-NEXT: 'r_type', 0x00000113
-
-; R_AARCH64_ADD_ABS_LO12_NC against var64
-; OBJ: 'r_sym', 0x0000000e
-; OBJ-NEXT: 'r_type', 0x00000115
-
-
-; Make sure the symbols don't move around, otherwise relocation info
-; will be wrong:
-
-; OBJ: Symbol 12
-; OBJ-NEXT: var16
-
-; OBJ: Symbol 13
-; OBJ-NEXT: var32
-
-; OBJ: Symbol 14
-; OBJ-NEXT: var64
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 var64
+; OBJ: 0x{{[0-9,A-F]+}} R_AARCH64_ADD_ABS_LO12_NC var64
-; OBJ: Symbol 15
-; OBJ-NEXT: var8
+; OBJ: }
+; OBJ: ]
diff --git a/test/MC/AArch64/elf-objdump.s b/test/MC/AArch64/elf-objdump.s
index c5aa5b1..51d444a 100644
--- a/test/MC/AArch64/elf-objdump.s
+++ b/test/MC/AArch64/elf-objdump.s
@@ -1,5 +1,5 @@
// 64 bit little endian
-// RUN: llvm-mc -filetype=obj -arch=aarch64 -triple aarch64-none-linux-gnu %s -o - | llvm-objdump -d
+// RUN: llvm-mc -filetype=obj -triple aarch64-none-linux-gnu %s -o - | llvm-objdump -d
// We just want to see if llvm-objdump works at all.
// CHECK: .text
diff --git a/test/MC/AArch64/elf-reloc-addsubimm.s b/test/MC/AArch64/elf-reloc-addsubimm.s
index 7fa6e90..0321dda 100644
--- a/test/MC/AArch64/elf-reloc-addsubimm.s
+++ b/test/MC/AArch64/elf-reloc-addsubimm.s
@@ -1,13 +1,10 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
add x2, x3, #:lo12:some_label
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000115
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label \ No newline at end of file
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_ADD_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-condbr.s b/test/MC/AArch64/elf-reloc-condbr.s
index 283d3b9..684e75a 100644
--- a/test/MC/AArch64/elf-reloc-condbr.s
+++ b/test/MC/AArch64/elf-reloc-condbr.s
@@ -1,13 +1,10 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
b.eq somewhere
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000118
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: somewhere \ No newline at end of file
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_CONDBR19 somewhere 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-ldrlit.s b/test/MC/AArch64/elf-reloc-ldrlit.s
index ce9ff49..de43c4f 100644
--- a/test/MC/AArch64/elf-reloc-ldrlit.s
+++ b/test/MC/AArch64/elf-reloc-ldrlit.s
@@ -1,28 +1,16 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
ldr x0, some_label
ldr w3, some_label
ldrsw x9, some_label
prfm pldl3keep, some_label
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000111
-
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000111
-
-// OBJ: 'r_offset', 0x0000000000000008
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000111
-
-// OBJ: 'r_offset', 0x000000000000000c
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000111
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label \ No newline at end of file
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_LD_PREL_LO19 some_label 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_LD_PREL_LO19 some_label 0x0
+// OBJ-NEXT: 0x8 R_AARCH64_LD_PREL_LO19 some_label 0x0
+// OBJ-NEXT: 0xC R_AARCH64_LD_PREL_LO19 some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-ldstunsimm.s b/test/MC/AArch64/elf-reloc-ldstunsimm.s
index 345fc82..e1f841bd 100644
--- a/test/MC/AArch64/elf-reloc-ldstunsimm.s
+++ b/test/MC/AArch64/elf-reloc-ldstunsimm.s
@@ -1,5 +1,5 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
ldrb w0, [sp, #:lo12:some_label]
ldrh w0, [sp, #:lo12:some_label]
@@ -7,28 +7,12 @@
ldr x0, [sp, #:lo12:some_label]
str q0, [sp, #:lo12:some_label]
-// OBJ: .rela.text
-
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000116
-
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000011c
-
-// OBJ: 'r_offset', 0x0000000000000008
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000011d
-
-// OBJ: 'r_offset', 0x000000000000000c
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000011e
-
-// OBJ: 'r_offset', 0x0000000000000010
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000012b
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_LDST8_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_LDST16_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: 0x8 R_AARCH64_LDST32_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: 0xC R_AARCH64_LDST64_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: 0x10 R_AARCH64_LDST128_ABS_LO12_NC some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-movw.s b/test/MC/AArch64/elf-reloc-movw.s
index cb7dc67..8a7e532 100644
--- a/test/MC/AArch64/elf-reloc-movw.s
+++ b/test/MC/AArch64/elf-reloc-movw.s
@@ -1,5 +1,5 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
movz x0, #:abs_g0:some_label
movk x0, #:abs_g0_nc:some_label
@@ -21,78 +21,22 @@
movz x19, #:abs_g2_s:some_label
movn x19, #:abs_g2_s:some_label
-// OBJ: .rela.text
-// :abs_g0: => R_AARCH64_MOVW_UABS_G0
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000107
-
-// :abs_g0_nc: => R_AARCH64_MOVW_UABS_G0_NC
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000108
-
-// :abs_g1: => R_AARCH64_MOVW_UABS_G1
-// OBJ: 'r_offset', 0x0000000000000008
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000109
-
-// :abs_g1_nc: => R_AARCH64_MOVW_UABS_G1_NC
-// OBJ: 'r_offset', 0x000000000000000c
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010a
-
-// :abs_g2: => R_AARCH64_MOVW_UABS_G2
-// OBJ: 'r_offset', 0x0000000000000010
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010b
-
-// :abs_g2_nc: => R_AARCH64_MOVW_UABS_G2_NC
-// OBJ: 'r_offset', 0x0000000000000014
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010c
-
-// :abs_g3: => R_AARCH64_MOVW_UABS_G3
-// OBJ: 'r_offset', 0x0000000000000018
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010d
-
-// :abs_g3: => R_AARCH64_MOVW_UABS_G3
-// OBJ: 'r_offset', 0x000000000000001c
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010d
-
-// :abs_g0_s: => R_AARCH64_MOVW_SABS_G0
-// OBJ: 'r_offset', 0x0000000000000020
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010e
-
-// :abs_g0_s: => R_AARCH64_MOVW_SABS_G0
-// OBJ: 'r_offset', 0x0000000000000024
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010e
-
-// :abs_g1_s: => R_AARCH64_MOVW_SABS_G1
-// OBJ: 'r_offset', 0x0000000000000028
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010f
-
-// :abs_g1_s: => R_AARCH64_MOVW_SABS_G1
-// OBJ: 'r_offset', 0x000000000000002c
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000010f
-
-// :abs_g2_s: => R_AARCH64_MOVW_SABS_G2
-// OBJ: 'r_offset', 0x0000000000000030
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000110
-
-// :abs_g2_s: => R_AARCH64_MOVW_SABS_G2
-// OBJ: 'r_offset', 0x0000000000000034
-// OBJ: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000110
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_MOVW_UABS_G0 some_label 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_MOVW_UABS_G0_NC some_label 0x0
+// OBJ-NEXT: 0x8 R_AARCH64_MOVW_UABS_G1 some_label 0x0
+// OBJ-NEXT: 0xC R_AARCH64_MOVW_UABS_G1_NC some_label 0x0
+// OBJ-NEXT: 0x10 R_AARCH64_MOVW_UABS_G2 some_label 0x0
+// OBJ-NEXT: 0x14 R_AARCH64_MOVW_UABS_G2_NC some_label 0x0
+// OBJ-NEXT: 0x18 R_AARCH64_MOVW_UABS_G3 some_label 0x0
+// OBJ-NEXT: 0x1C R_AARCH64_MOVW_UABS_G3 some_label 0x0
+// OBJ-NEXT: 0x20 R_AARCH64_MOVW_SABS_G0 some_label 0x0
+// OBJ-NEXT: 0x24 R_AARCH64_MOVW_SABS_G0 some_label 0x0
+// OBJ-NEXT: 0x28 R_AARCH64_MOVW_SABS_G1 some_label 0x0
+// OBJ-NEXT: 0x2C R_AARCH64_MOVW_SABS_G1 some_label 0x0
+// OBJ-NEXT: 0x30 R_AARCH64_MOVW_SABS_G2 some_label 0x0
+// OBJ-NEXT: 0x34 R_AARCH64_MOVW_SABS_G2 some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-pcreladdressing.s b/test/MC/AArch64/elf-reloc-pcreladdressing.s
index 39a8ba9..b5f0727 100644
--- a/test/MC/AArch64/elf-reloc-pcreladdressing.s
+++ b/test/MC/AArch64/elf-reloc-pcreladdressing.s
@@ -1,29 +1,17 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
adr x2, some_label
adrp x5, some_label
adrp x5, :got:some_label
ldr x0, [x5, #:got_lo12:some_label]
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000112
-
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000113
-
-// OBJ: 'r_offset', 0x0000000000000008
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000137
-
-// OBJ: 'r_offset', 0x000000000000000c
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000138
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label \ No newline at end of file
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_ADR_PREL_LO21 some_label 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_ADR_PREL_PG_HI21 some_label 0x0
+// OBJ-NEXT: 0x8 R_AARCH64_ADR_GOT_PAGE some_label 0x0
+// OBJ-NEXT: 0xC R_AARCH64_LD64_GOT_LO12_NC some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-tstb.s b/test/MC/AArch64/elf-reloc-tstb.s
index c5e2981..037e896 100644
--- a/test/MC/AArch64/elf-reloc-tstb.s
+++ b/test/MC/AArch64/elf-reloc-tstb.s
@@ -1,18 +1,12 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
tbz x6, #45, somewhere
tbnz w3, #15, somewhere
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000117
-
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x00000117
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: somewhere
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_TSTBR14 somewhere 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_TSTBR14 somewhere 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/elf-reloc-uncondbrimm.s b/test/MC/AArch64/elf-reloc-uncondbrimm.s
index 0e97bc6..bead07c 100644
--- a/test/MC/AArch64/elf-reloc-uncondbrimm.s
+++ b/test/MC/AArch64/elf-reloc-uncondbrimm.s
@@ -1,18 +1,12 @@
-// RUN: llvm-mc -arch=aarch64 -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o - | \
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
b somewhere
bl somewhere
-// OBJ: .rela.text
-// OBJ: 'r_offset', 0x0000000000000000
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000011a
-
-// OBJ: 'r_offset', 0x0000000000000004
-// OBJ-NEXT: 'r_sym', 0x00000005
-// OBJ-NEXT: 'r_type', 0x0000011b
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: somewhere \ No newline at end of file
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_AARCH64_JUMP26 somewhere 0x0
+// OBJ-NEXT: 0x4 R_AARCH64_CALL26 somewhere 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/AArch64/gicv3-regs-diagnostics.s b/test/MC/AArch64/gicv3-regs-diagnostics.s
new file mode 100644
index 0000000..e891adb
--- /dev/null
+++ b/test/MC/AArch64/gicv3-regs-diagnostics.s
@@ -0,0 +1,61 @@
+// RUN: llvm-mc -triple aarch64-none-linux-gnu < %s 2>&1 | FileCheck %s
+
+ // Write-only
+ mrs x10, icc_eoir1_el1
+ mrs x7, icc_eoir0_el1
+ mrs x22, icc_dir_el1
+ mrs x24, icc_sgi1r_el1
+ mrs x8, icc_asgi1r_el1
+ mrs x28, icc_sgi0r_el1
+// CHECK: error: expected readable system register
+// CHECK-NEXT: mrs x10, icc_eoir1_el1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x7, icc_eoir0_el1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x22, icc_dir_el1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x24, icc_sgi1r_el1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x8, icc_asgi1r_el1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x28, icc_sgi0r_el1
+// CHECK-NEXT: ^
+
+ // Read-only
+ msr icc_iar1_el1, x16
+ msr icc_iar0_el1, x19
+ msr icc_hppir1_el1, x29
+ msr icc_hppir0_el1, x14
+ msr icc_rpr_el1, x6
+ msr ich_vtr_el2, x8
+ msr ich_eisr_el2, x22
+ msr ich_elsr_el2, x8
+// CHECK: error: expected writable system register or pstate
+// CHECK-NEXT: msr icc_iar1_el1, x16
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr icc_iar0_el1, x19
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr icc_hppir1_el1, x29
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr icc_hppir0_el1, x14
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr icc_rpr_el1, x6
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr ich_vtr_el2, x8
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr ich_eisr_el2, x22
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr ich_elsr_el2, x8
+// CHECK-NEXT: ^
diff --git a/test/MC/AArch64/gicv3-regs.s b/test/MC/AArch64/gicv3-regs.s
new file mode 100644
index 0000000..f777651
--- /dev/null
+++ b/test/MC/AArch64/gicv3-regs.s
@@ -0,0 +1,223 @@
+ // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s
+
+ mrs x8, icc_iar1_el1
+ mrs x26, icc_iar0_el1
+ mrs x2, icc_hppir1_el1
+ mrs x17, icc_hppir0_el1
+ mrs x29, icc_rpr_el1
+ mrs x4, ich_vtr_el2
+ mrs x24, ich_eisr_el2
+ mrs x9, ich_elsr_el2
+ mrs x24, icc_bpr1_el1
+ mrs x14, icc_bpr0_el1
+ mrs x19, icc_pmr_el1
+ mrs x23, icc_ctlr_el1
+ mrs x20, icc_ctlr_el3
+ mrs x28, icc_sre_el1
+ mrs x25, icc_sre_el2
+ mrs x8, icc_sre_el3
+ mrs x22, icc_igrpen0_el1
+ mrs x5, icc_igrpen1_el1
+ mrs x7, icc_igrpen1_el3
+ mrs x22, icc_seien_el1
+ mrs x4, icc_ap0r0_el1
+ mrs x11, icc_ap0r1_el1
+ mrs x27, icc_ap0r2_el1
+ mrs x21, icc_ap0r3_el1
+ mrs x2, icc_ap1r0_el1
+ mrs x21, icc_ap1r1_el1
+ mrs x10, icc_ap1r2_el1
+ mrs x27, icc_ap1r3_el1
+ mrs x20, ich_ap0r0_el2
+ mrs x21, ich_ap0r1_el2
+ mrs x5, ich_ap0r2_el2
+ mrs x4, ich_ap0r3_el2
+ mrs x15, ich_ap1r0_el2
+ mrs x12, ich_ap1r1_el2
+ mrs x27, ich_ap1r2_el2
+ mrs x20, ich_ap1r3_el2
+ mrs x10, ich_hcr_el2
+ mrs x27, ich_misr_el2
+ mrs x6, ich_vmcr_el2
+ mrs x19, ich_vseir_el2
+ mrs x3, ich_lr0_el2
+ mrs x1, ich_lr1_el2
+ mrs x22, ich_lr2_el2
+ mrs x21, ich_lr3_el2
+ mrs x6, ich_lr4_el2
+ mrs x10, ich_lr5_el2
+ mrs x11, ich_lr6_el2
+ mrs x12, ich_lr7_el2
+ mrs x0, ich_lr8_el2
+ mrs x21, ich_lr9_el2
+ mrs x13, ich_lr10_el2
+ mrs x26, ich_lr11_el2
+ mrs x1, ich_lr12_el2
+ mrs x8, ich_lr13_el2
+ mrs x2, ich_lr14_el2
+ mrs x8, ich_lr15_el2
+// CHECK: mrs x8, icc_iar1_el1 // encoding: [0x08,0xcc,0x38,0xd5]
+// CHECK: mrs x26, icc_iar0_el1 // encoding: [0x1a,0xc8,0x38,0xd5]
+// CHECK: mrs x2, icc_hppir1_el1 // encoding: [0x42,0xcc,0x38,0xd5]
+// CHECK: mrs x17, icc_hppir0_el1 // encoding: [0x51,0xc8,0x38,0xd5]
+// CHECK: mrs x29, icc_rpr_el1 // encoding: [0x7d,0xcb,0x38,0xd5]
+// CHECK: mrs x4, ich_vtr_el2 // encoding: [0x24,0xcb,0x3c,0xd5]
+// CHECK: mrs x24, ich_eisr_el2 // encoding: [0x78,0xcb,0x3c,0xd5]
+// CHECK: mrs x9, ich_elsr_el2 // encoding: [0xa9,0xcb,0x3c,0xd5]
+// CHECK: mrs x24, icc_bpr1_el1 // encoding: [0x78,0xcc,0x38,0xd5]
+// CHECK: mrs x14, icc_bpr0_el1 // encoding: [0x6e,0xc8,0x38,0xd5]
+// CHECK: mrs x19, icc_pmr_el1 // encoding: [0x13,0x46,0x38,0xd5]
+// CHECK: mrs x23, icc_ctlr_el1 // encoding: [0x97,0xcc,0x38,0xd5]
+// CHECK: mrs x20, icc_ctlr_el3 // encoding: [0x94,0xcc,0x3e,0xd5]
+// CHECK: mrs x28, icc_sre_el1 // encoding: [0xbc,0xcc,0x38,0xd5]
+// CHECK: mrs x25, icc_sre_el2 // encoding: [0xb9,0xc9,0x3c,0xd5]
+// CHECK: mrs x8, icc_sre_el3 // encoding: [0xa8,0xcc,0x3e,0xd5]
+// CHECK: mrs x22, icc_igrpen0_el1 // encoding: [0xd6,0xcc,0x38,0xd5]
+// CHECK: mrs x5, icc_igrpen1_el1 // encoding: [0xe5,0xcc,0x38,0xd5]
+// CHECK: mrs x7, icc_igrpen1_el3 // encoding: [0xe7,0xcc,0x3e,0xd5]
+// CHECK: mrs x22, icc_seien_el1 // encoding: [0x16,0xcd,0x38,0xd5]
+// CHECK: mrs x4, icc_ap0r0_el1 // encoding: [0x84,0xc8,0x38,0xd5]
+// CHECK: mrs x11, icc_ap0r1_el1 // encoding: [0xab,0xc8,0x38,0xd5]
+// CHECK: mrs x27, icc_ap0r2_el1 // encoding: [0xdb,0xc8,0x38,0xd5]
+// CHECK: mrs x21, icc_ap0r3_el1 // encoding: [0xf5,0xc8,0x38,0xd5]
+// CHECK: mrs x2, icc_ap1r0_el1 // encoding: [0x02,0xc9,0x38,0xd5]
+// CHECK: mrs x21, icc_ap1r1_el1 // encoding: [0x35,0xc9,0x38,0xd5]
+// CHECK: mrs x10, icc_ap1r2_el1 // encoding: [0x4a,0xc9,0x38,0xd5]
+// CHECK: mrs x27, icc_ap1r3_el1 // encoding: [0x7b,0xc9,0x38,0xd5]
+// CHECK: mrs x20, ich_ap0r0_el2 // encoding: [0x14,0xc8,0x3c,0xd5]
+// CHECK: mrs x21, ich_ap0r1_el2 // encoding: [0x35,0xc8,0x3c,0xd5]
+// CHECK: mrs x5, ich_ap0r2_el2 // encoding: [0x45,0xc8,0x3c,0xd5]
+// CHECK: mrs x4, ich_ap0r3_el2 // encoding: [0x64,0xc8,0x3c,0xd5]
+// CHECK: mrs x15, ich_ap1r0_el2 // encoding: [0x0f,0xc9,0x3c,0xd5]
+// CHECK: mrs x12, ich_ap1r1_el2 // encoding: [0x2c,0xc9,0x3c,0xd5]
+// CHECK: mrs x27, ich_ap1r2_el2 // encoding: [0x5b,0xc9,0x3c,0xd5]
+// CHECK: mrs x20, ich_ap1r3_el2 // encoding: [0x74,0xc9,0x3c,0xd5]
+// CHECK: mrs x10, ich_hcr_el2 // encoding: [0x0a,0xcb,0x3c,0xd5]
+// CHECK: mrs x27, ich_misr_el2 // encoding: [0x5b,0xcb,0x3c,0xd5]
+// CHECK: mrs x6, ich_vmcr_el2 // encoding: [0xe6,0xcb,0x3c,0xd5]
+// CHECK: mrs x19, ich_vseir_el2 // encoding: [0x93,0xc9,0x3c,0xd5]
+// CHECK: mrs x3, ich_lr0_el2 // encoding: [0x03,0xcc,0x3c,0xd5]
+// CHECK: mrs x1, ich_lr1_el2 // encoding: [0x21,0xcc,0x3c,0xd5]
+// CHECK: mrs x22, ich_lr2_el2 // encoding: [0x56,0xcc,0x3c,0xd5]
+// CHECK: mrs x21, ich_lr3_el2 // encoding: [0x75,0xcc,0x3c,0xd5]
+// CHECK: mrs x6, ich_lr4_el2 // encoding: [0x86,0xcc,0x3c,0xd5]
+// CHECK: mrs x10, ich_lr5_el2 // encoding: [0xaa,0xcc,0x3c,0xd5]
+// CHECK: mrs x11, ich_lr6_el2 // encoding: [0xcb,0xcc,0x3c,0xd5]
+// CHECK: mrs x12, ich_lr7_el2 // encoding: [0xec,0xcc,0x3c,0xd5]
+// CHECK: mrs x0, ich_lr8_el2 // encoding: [0x00,0xcd,0x3c,0xd5]
+// CHECK: mrs x21, ich_lr9_el2 // encoding: [0x35,0xcd,0x3c,0xd5]
+// CHECK: mrs x13, ich_lr10_el2 // encoding: [0x4d,0xcd,0x3c,0xd5]
+// CHECK: mrs x26, ich_lr11_el2 // encoding: [0x7a,0xcd,0x3c,0xd5]
+// CHECK: mrs x1, ich_lr12_el2 // encoding: [0x81,0xcd,0x3c,0xd5]
+// CHECK: mrs x8, ich_lr13_el2 // encoding: [0xa8,0xcd,0x3c,0xd5]
+// CHECK: mrs x2, ich_lr14_el2 // encoding: [0xc2,0xcd,0x3c,0xd5]
+// CHECK: mrs x8, ich_lr15_el2 // encoding: [0xe8,0xcd,0x3c,0xd5]
+
+ msr icc_eoir1_el1, x27
+ msr icc_eoir0_el1, x5
+ msr icc_dir_el1, x13
+ msr icc_sgi1r_el1, x21
+ msr icc_asgi1r_el1, x25
+ msr icc_sgi0r_el1, x28
+ msr icc_bpr1_el1, x7
+ msr icc_bpr0_el1, x9
+ msr icc_pmr_el1, x29
+ msr icc_ctlr_el1, x24
+ msr icc_ctlr_el3, x0
+ msr icc_sre_el1, x2
+ msr icc_sre_el2, x5
+ msr icc_sre_el3, x10
+ msr icc_igrpen0_el1, x22
+ msr icc_igrpen1_el1, x11
+ msr icc_igrpen1_el3, x8
+ msr icc_seien_el1, x4
+ msr icc_ap0r0_el1, x27
+ msr icc_ap0r1_el1, x5
+ msr icc_ap0r2_el1, x20
+ msr icc_ap0r3_el1, x0
+ msr icc_ap1r0_el1, x2
+ msr icc_ap1r1_el1, x29
+ msr icc_ap1r2_el1, x23
+ msr icc_ap1r3_el1, x11
+ msr ich_ap0r0_el2, x2
+ msr ich_ap0r1_el2, x27
+ msr ich_ap0r2_el2, x7
+ msr ich_ap0r3_el2, x1
+ msr ich_ap1r0_el2, x7
+ msr ich_ap1r1_el2, x12
+ msr ich_ap1r2_el2, x14
+ msr ich_ap1r3_el2, x13
+ msr ich_hcr_el2, x1
+ msr ich_misr_el2, x10
+ msr ich_vmcr_el2, x24
+ msr ich_vseir_el2, x29
+ msr ich_lr0_el2, x26
+ msr ich_lr1_el2, x9
+ msr ich_lr2_el2, x18
+ msr ich_lr3_el2, x26
+ msr ich_lr4_el2, x22
+ msr ich_lr5_el2, x26
+ msr ich_lr6_el2, x27
+ msr ich_lr7_el2, x8
+ msr ich_lr8_el2, x17
+ msr ich_lr9_el2, x19
+ msr ich_lr10_el2, x17
+ msr ich_lr11_el2, x5
+ msr ich_lr12_el2, x29
+ msr ich_lr13_el2, x2
+ msr ich_lr14_el2, x13
+ msr ich_lr15_el2, x27
+// CHECK: msr icc_eoir1_el1, x27 // encoding: [0x3b,0xcc,0x18,0xd5]
+// CHECK: msr icc_eoir0_el1, x5 // encoding: [0x25,0xc8,0x18,0xd5]
+// CHECK: msr icc_dir_el1, x13 // encoding: [0x2d,0xcb,0x18,0xd5]
+// CHECK: msr icc_sgi1r_el1, x21 // encoding: [0xb5,0xcb,0x18,0xd5]
+// CHECK: msr icc_asgi1r_el1, x25 // encoding: [0xd9,0xcb,0x18,0xd5]
+// CHECK: msr icc_sgi0r_el1, x28 // encoding: [0xfc,0xcb,0x18,0xd5]
+// CHECK: msr icc_bpr1_el1, x7 // encoding: [0x67,0xcc,0x18,0xd5]
+// CHECK: msr icc_bpr0_el1, x9 // encoding: [0x69,0xc8,0x18,0xd5]
+// CHECK: msr icc_pmr_el1, x29 // encoding: [0x1d,0x46,0x18,0xd5]
+// CHECK: msr icc_ctlr_el1, x24 // encoding: [0x98,0xcc,0x18,0xd5]
+// CHECK: msr icc_ctlr_el3, x0 // encoding: [0x80,0xcc,0x1e,0xd5]
+// CHECK: msr icc_sre_el1, x2 // encoding: [0xa2,0xcc,0x18,0xd5]
+// CHECK: msr icc_sre_el2, x5 // encoding: [0xa5,0xc9,0x1c,0xd5]
+// CHECK: msr icc_sre_el3, x10 // encoding: [0xaa,0xcc,0x1e,0xd5]
+// CHECK: msr icc_igrpen0_el1, x22 // encoding: [0xd6,0xcc,0x18,0xd5]
+// CHECK: msr icc_igrpen1_el1, x11 // encoding: [0xeb,0xcc,0x18,0xd5]
+// CHECK: msr icc_igrpen1_el3, x8 // encoding: [0xe8,0xcc,0x1e,0xd5]
+// CHECK: msr icc_seien_el1, x4 // encoding: [0x04,0xcd,0x18,0xd5]
+// CHECK: msr icc_ap0r0_el1, x27 // encoding: [0x9b,0xc8,0x18,0xd5]
+// CHECK: msr icc_ap0r1_el1, x5 // encoding: [0xa5,0xc8,0x18,0xd5]
+// CHECK: msr icc_ap0r2_el1, x20 // encoding: [0xd4,0xc8,0x18,0xd5]
+// CHECK: msr icc_ap0r3_el1, x0 // encoding: [0xe0,0xc8,0x18,0xd5]
+// CHECK: msr icc_ap1r0_el1, x2 // encoding: [0x02,0xc9,0x18,0xd5]
+// CHECK: msr icc_ap1r1_el1, x29 // encoding: [0x3d,0xc9,0x18,0xd5]
+// CHECK: msr icc_ap1r2_el1, x23 // encoding: [0x57,0xc9,0x18,0xd5]
+// CHECK: msr icc_ap1r3_el1, x11 // encoding: [0x6b,0xc9,0x18,0xd5]
+// CHECK: msr ich_ap0r0_el2, x2 // encoding: [0x02,0xc8,0x1c,0xd5]
+// CHECK: msr ich_ap0r1_el2, x27 // encoding: [0x3b,0xc8,0x1c,0xd5]
+// CHECK: msr ich_ap0r2_el2, x7 // encoding: [0x47,0xc8,0x1c,0xd5]
+// CHECK: msr ich_ap0r3_el2, x1 // encoding: [0x61,0xc8,0x1c,0xd5]
+// CHECK: msr ich_ap1r0_el2, x7 // encoding: [0x07,0xc9,0x1c,0xd5]
+// CHECK: msr ich_ap1r1_el2, x12 // encoding: [0x2c,0xc9,0x1c,0xd5]
+// CHECK: msr ich_ap1r2_el2, x14 // encoding: [0x4e,0xc9,0x1c,0xd5]
+// CHECK: msr ich_ap1r3_el2, x13 // encoding: [0x6d,0xc9,0x1c,0xd5]
+// CHECK: msr ich_hcr_el2, x1 // encoding: [0x01,0xcb,0x1c,0xd5]
+// CHECK: msr ich_misr_el2, x10 // encoding: [0x4a,0xcb,0x1c,0xd5]
+// CHECK: msr ich_vmcr_el2, x24 // encoding: [0xf8,0xcb,0x1c,0xd5]
+// CHECK: msr ich_vseir_el2, x29 // encoding: [0x9d,0xc9,0x1c,0xd5]
+// CHECK: msr ich_lr0_el2, x26 // encoding: [0x1a,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr1_el2, x9 // encoding: [0x29,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr2_el2, x18 // encoding: [0x52,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr3_el2, x26 // encoding: [0x7a,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr4_el2, x22 // encoding: [0x96,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr5_el2, x26 // encoding: [0xba,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr6_el2, x27 // encoding: [0xdb,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr7_el2, x8 // encoding: [0xe8,0xcc,0x1c,0xd5]
+// CHECK: msr ich_lr8_el2, x17 // encoding: [0x11,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr9_el2, x19 // encoding: [0x33,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr10_el2, x17 // encoding: [0x51,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr11_el2, x5 // encoding: [0x65,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr12_el2, x29 // encoding: [0x9d,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr13_el2, x2 // encoding: [0xa2,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr14_el2, x13 // encoding: [0xcd,0xcd,0x1c,0xd5]
+// CHECK: msr ich_lr15_el2, x27 // encoding: [0xfb,0xcd,0x1c,0xd5]
diff --git a/test/MC/AArch64/tls-relocs.s b/test/MC/AArch64/tls-relocs.s
index 690fa8c..d0e336e 100644
--- a/test/MC/AArch64/tls-relocs.s
+++ b/test/MC/AArch64/tls-relocs.s
@@ -1,9 +1,6 @@
-// RUN: llvm-mc -arch=aarch64 -show-encoding < %s | FileCheck %s
-// RUN: llvm-mc -arch=aarch64 -filetype=obj < %s -o %t
-// RUN: elf-dump %t | FileCheck --check-prefix=CHECK-ELF %s
-// RUN: llvm-objdump -r %t | FileCheck --check-prefix=CHECK-ELF-NAMES %s
-
-// CHECK-ELF: .rela.text
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj < %s -o - | \
+// RUN: llvm-readobj -r -t | FileCheck --check-prefix=CHECK-ELF %s
// TLS local-dynamic forms
movz x1, #:dtprel_g2:var
@@ -12,34 +9,20 @@
movn x4, #:dtprel_g2:var
// CHECK: movz x1, #:dtprel_g2:var // encoding: [0x01'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2
-// CHECK-NEXT: movn x2, #:dtprel_g2:var // encoding: [0x02'A',A,0xc0'A',0x92'A']
+// CHECK: movn x2, #:dtprel_g2:var // encoding: [0x02'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2
-// CHECK-NEXT: movz x3, #:dtprel_g2:var // encoding: [0x03'A',A,0xc0'A',0x92'A']
+// CHECK: movz x3, #:dtprel_g2:var // encoding: [0x03'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2
-// CHECK-NEXT: movn x4, #:dtprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A']
+// CHECK: movn x4, #:dtprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_a64_movw_dtprel_g2
-// CHECK-ELF: # Relocation 0
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000000)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM:0x[0-9a-f]+]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020b)
-// CHECK-ELF: # Relocation 1
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000004)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020b)
-// CHECK-ELF: # Relocation 2
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000008)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020b)
-// CHECK-ELF: # Relocation 3
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000000c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020b)
-
-// CHECK-ELF-NAMES: 0 R_AARCH64_TLSLD_MOVW_DTPREL_G2
-// CHECK-ELF-NAMES: 4 R_AARCH64_TLSLD_MOVW_DTPREL_G2
-// CHECK-ELF-NAMES: 8 R_AARCH64_TLSLD_MOVW_DTPREL_G2
-// CHECK-ELF-NAMES: 12 R_AARCH64_TLSLD_MOVW_DTPREL_G2
+// CHECK-ELF: Relocations [
+// CHECK-ELF-NEXT: Section (1) .text {
+// CHECK-ELF-NEXT: 0x0 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM:[^ ]+]]
+// CHECK-ELF-NEXT: 0x4 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x8 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xC R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]]
+
movz x5, #:dtprel_g1:var
movn x6, #:dtprel_g1:var
@@ -54,46 +37,22 @@
// CHECK-NEXT: movn w8, #:dtprel_g1:var // encoding: [0x08'A',A,0xa0'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_a64_movw_dtprel_g1
-// CHECK-ELF: # Relocation 4
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000010)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020c)
-// CHECK-ELF: # Relocation 5
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000014)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020c)
-// CHECK-ELF: # Relocation 6
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000018)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020c)
-// CHECK-ELF: # Relocation 7
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000001c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020c)
-
-// CHECK-ELF-NAMES: 16 R_AARCH64_TLSLD_MOVW_DTPREL_G1
-// CHECK-ELF-NAMES: 20 R_AARCH64_TLSLD_MOVW_DTPREL_G1
-// CHECK-ELF-NAMES: 24 R_AARCH64_TLSLD_MOVW_DTPREL_G1
-// CHECK-ELF-NAMES: 28 R_AARCH64_TLSLD_MOVW_DTPREL_G1
+// CHECK-ELF-NEXT: 0x10 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x14 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x18 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x1C R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]]
+
movk x9, #:dtprel_g1_nc:var
movk w10, #:dtprel_g1_nc:var
// CHECK: movk x9, #:dtprel_g1_nc:var // encoding: [0x09'A',A,0xa0'A',0xf2'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_a64_movw_dtprel_g1_nc
-// CHECK-NEXT: movk w10, #:dtprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A']
+// CHECK: movk w10, #:dtprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_a64_movw_dtprel_g1_nc
-// CHECK-ELF: # Relocation 8
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020d)
-// CHECK-ELF: # Relocation 9
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000024)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020d)
+// CHECK-ELF-NEXT: 0x20 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x24 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 32 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
-// CHECK-ELF-NAMES: 36 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
movz x11, #:dtprel_g0:var
movn x12, #:dtprel_g0:var
@@ -101,275 +60,156 @@
movn w14, #:dtprel_g0:var
// CHECK: movz x11, #:dtprel_g0:var // encoding: [0x0b'A',A,0x80'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0
-// CHECK-NEXT: movn x12, #:dtprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A']
+// CHECK: movn x12, #:dtprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0
-// CHECK-NEXT: movz w13, #:dtprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A']
+// CHECK: movz w13, #:dtprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_a64_movw_dtprel_g0
-// CHECK-NEXT: movn w14, #:dtprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A']
-
-
-// CHECK-ELF: # Relocation 10
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000028)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020e)
-// CHECK-ELF: # Relocation 11
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000002c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020e)
-// CHECK-ELF: # Relocation 12
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000030)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020e)
-// CHECK-ELF: # Relocation 13
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000034)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020e)
-
-// CHECK-ELF-NAMES: 40 R_AARCH64_TLSLD_MOVW_DTPREL_G0
-// CHECK-ELF-NAMES: 44 R_AARCH64_TLSLD_MOVW_DTPREL_G0
-// CHECK-ELF-NAMES: 48 R_AARCH64_TLSLD_MOVW_DTPREL_G0
-// CHECK-ELF-NAMES: 52 R_AARCH64_TLSLD_MOVW_DTPREL_G0
+// CHECK: movn w14, #:dtprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A']
+
+// CHECK-ELF-NEXT: 0x28 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x2C R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x30 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x34 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]]
movk x15, #:dtprel_g0_nc:var
movk w16, #:dtprel_g0_nc:var
// CHECK: movk x15, #:dtprel_g0_nc:var // encoding: [0x0f'A',A,0x80'A',0xf2'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_a64_movw_dtprel_g0_nc
-// CHECK-NEXT: movk w16, #:dtprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A']
+// CHECK: movk w16, #:dtprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_a64_movw_dtprel_g0_nc
-// CHECK-ELF: # Relocation 14
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000038)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020f)
-// CHECK-ELF: # Relocation 15
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000003c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000020f)
+// CHECK-ELF-NEXT: 0x38 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x3C R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 56 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
-// CHECK-ELF-NAMES: 60 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
add x17, x18, #:dtprel_hi12:var, lsl #12
add w19, w20, #:dtprel_hi12:var, lsl #12
// CHECK: add x17, x18, #:dtprel_hi12:var, lsl #12 // encoding: [0x51'A',0x02'A',0x40'A',0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_a64_add_dtprel_hi12
-// CHECK-NEXT: add w19, w20, #:dtprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A']
+// CHECK: add w19, w20, #:dtprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_a64_add_dtprel_hi12
-// CHECK-ELF: # Relocation 16
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000040)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000210)
-// CHECK-ELF: # Relocation 17
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000044)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000210)
-
-// CHECK-ELF-NAMES: 64 R_AARCH64_TLSLD_ADD_DTPREL_HI12
-// CHECK-ELF-NAMES: 68 R_AARCH64_TLSLD_ADD_DTPREL_HI12
+// CHECK-ELF-NEXT: 0x40 R_AARCH64_TLSLD_ADD_DTPREL_HI12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x44 R_AARCH64_TLSLD_ADD_DTPREL_HI12 [[VARSYM]]
add x21, x22, #:dtprel_lo12:var
add w23, w24, #:dtprel_lo12:var
// CHECK: add x21, x22, #:dtprel_lo12:var // encoding: [0xd5'A',0x02'A',A,0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_add_dtprel_lo12
-// CHECK-NEXT: add w23, w24, #:dtprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A']
+// CHECK: add w23, w24, #:dtprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_add_dtprel_lo12
-// CHECK-ELF: # Relocation 18
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000048)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000211)
-// CHECK-ELF: # Relocation 19
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000004c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000211)
+// CHECK-ELF-NEXT: 0x48 R_AARCH64_TLSLD_ADD_DTPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x4C R_AARCH64_TLSLD_ADD_DTPREL_LO12 [[VARSYM]]
-// CHECK-ELF-NAMES: 72 R_AARCH64_TLSLD_ADD_DTPREL_LO12
-// CHECK-ELF-NAMES: 76 R_AARCH64_TLSLD_ADD_DTPREL_LO12
add x25, x26, #:dtprel_lo12_nc:var
add w27, w28, #:dtprel_lo12_nc:var
// CHECK: add x25, x26, #:dtprel_lo12_nc:var // encoding: [0x59'A',0x03'A',A,0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_add_dtprel_lo12_nc
-// CHECK-NEXT: add w27, w28, #:dtprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A']
+// CHECK: add w27, w28, #:dtprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_add_dtprel_lo12_nc
-// CHECK-ELF: # Relocation 20
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000050)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000212)
-// CHECK-ELF: # Relocation 21
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000054)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000212)
+// CHECK-ELF-NEXT: 0x50 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x54 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 80 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
-// CHECK-ELF-NAMES: 84 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
ldrb w29, [x30, #:dtprel_lo12:var]
ldrsb x29, [x28, #:dtprel_lo12_nc:var]
// CHECK: ldrb w29, [x30, #:dtprel_lo12:var] // encoding: [0xdd'A',0x03'A',0x40'A',0x39'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst8_dtprel_lo12
-// CHECK-NEXT: ldrsb x29, [x28, #:dtprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A']
+// CHECK: ldrsb x29, [x28, #:dtprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst8_dtprel_lo12_nc
-// CHECK-ELF: # Relocation 22
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000058)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000213)
-// CHECK-ELF: # Relocation 23
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000005c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000214)
+// CHECK-ELF-NEXT: 0x58 R_AARCH64_TLSLD_LDST8_DTPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x5C R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 88 R_AARCH64_TLSLD_LDST8_DTPREL_LO12
-// CHECK-ELF-NAMES: 92 R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
strh w27, [x26, #:dtprel_lo12:var]
ldrsh x25, [x24, #:dtprel_lo12_nc:var]
// CHECK: strh w27, [x26, #:dtprel_lo12:var] // encoding: [0x5b'A',0x03'A',A,0x79'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst16_dtprel_lo12
-// CHECK-NEXT: ldrsh x25, [x24, #:dtprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A']
+// CHECK: ldrsh x25, [x24, #:dtprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst16_dtprel_lo12_n
-// CHECK-ELF: # Relocation 24
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000060)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000215)
-// CHECK-ELF: # Relocation 25
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000064)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000216)
+// CHECK-ELF-NEXT: 0x60 R_AARCH64_TLSLD_LDST16_DTPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x64 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 96 R_AARCH64_TLSLD_LDST16_DTPREL_LO12
-// CHECK-ELF-NAMES: 100 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
ldr w23, [x22, #:dtprel_lo12:var]
ldrsw x21, [x20, #:dtprel_lo12_nc:var]
// CHECK: ldr w23, [x22, #:dtprel_lo12:var] // encoding: [0xd7'A',0x02'A',0x40'A',0xb9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst32_dtprel_lo12
-// CHECK-NEXT: ldrsw x21, [x20, #:dtprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A']
+// CHECK: ldrsw x21, [x20, #:dtprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst32_dtprel_lo12_n
-// CHECK-ELF: # Relocation 26
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000068)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000217)
-// CHECK-ELF: # Relocation 27
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000006c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000218)
+// CHECK-ELF-NEXT: 0x68 R_AARCH64_TLSLD_LDST32_DTPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x6C R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 104 R_AARCH64_TLSLD_LDST32_DTPREL_LO12
-// CHECK-ELF-NAMES: 108 R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
ldr x19, [x18, #:dtprel_lo12:var]
str x17, [x16, #:dtprel_lo12_nc:var]
// CHECK: ldr x19, [x18, #:dtprel_lo12:var] // encoding: [0x53'A',0x02'A',0x40'A',0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_a64_ldst64_dtprel_lo12
-// CHECK-NEXT: str x17, [x16, #:dtprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A']
+// CHECK: str x17, [x16, #:dtprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_a64_ldst64_dtprel_lo12_nc
-// CHECK-ELF: # Relocation 28
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000070)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000219)
-// CHECK-ELF: # Relocation 29
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000074)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021a)
+// CHECK-ELF-NEXT: 0x70 R_AARCH64_TLSLD_LDST64_DTPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x74 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 112 R_AARCH64_TLSLD_LDST64_DTPREL_LO12
-// CHECK-ELF-NAMES: 116 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
// TLS initial-exec forms
movz x15, #:gottprel_g1:var
movz w14, #:gottprel_g1:var
// CHECK: movz x15, #:gottprel_g1:var // encoding: [0x0f'A',A,0xa0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_a64_movw_gottprel_g1
-// CHECK-NEXT: movz w14, #:gottprel_g1:var // encoding: [0x0e'A',A,0xa0'A',0x12'A']
+// CHECK: movz w14, #:gottprel_g1:var // encoding: [0x0e'A',A,0xa0'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_a64_movw_gottprel_g1
-// CHECK-ELF: # Relocation 30
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000078)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021b)
-// CHECK-ELF: # Relocation 31
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000007c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021b)
+// CHECK-ELF-NEXT: 0x78 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x7C R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 [[VARSYM]]
-// CHECK-ELF-NAMES: 120 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
-// CHECK-ELF-NAMES: 124 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
movk x13, #:gottprel_g0_nc:var
movk w12, #:gottprel_g0_nc:var
// CHECK: movk x13, #:gottprel_g0_nc:var // encoding: [0x0d'A',A,0x80'A',0xf2'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_a64_movw_gottprel_g0_nc
-// CHECK-NEXT: movk w12, #:gottprel_g0_nc:var // encoding: [0x0c'A',A,0x80'A',0x72'A']
+// CHECK: movk w12, #:gottprel_g0_nc:var // encoding: [0x0c'A',A,0x80'A',0x72'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_a64_movw_gottprel_g0_nc
-// CHECK-ELF: # Relocation 32
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000080)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021c)
-// CHECK-ELF: # Relocation 33
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000084)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021c)
+// CHECK-ELF-NEXT: 0x80 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x84 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 128 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
-// CHECK-ELF-NAMES: 132 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
adrp x11, :gottprel:var
ldr x10, [x0, #:gottprel_lo12:var]
ldr x9, :gottprel:var
// CHECK: adrp x11, :gottprel:var // encoding: [0x0b'A',A,A,0x90'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_a64_adr_gottprel_page
-// CHECK-NEXT: ldr x10, [x0, #:gottprel_lo12:var] // encoding: [0x0a'A',A,0x40'A',0xf9'A']
+// CHECK: ldr x10, [x0, #:gottprel_lo12:var] // encoding: [0x0a'A',A,0x40'A',0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel_lo12:var, kind: fixup_a64_ld64_gottprel_lo12_nc
-// CHECK-NEXT: ldr x9, :gottprel:var // encoding: [0x09'A',A,A,0x58'A']
+// CHECK: ldr x9, :gottprel:var // encoding: [0x09'A',A,A,0x58'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_a64_ld_gottprel_prel19
-// CHECK-ELF: # Relocation 34
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000088)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021d)
-// CHECK-ELF: # Relocation 35
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000008c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021e)
-// CHECK-ELF: # Relocation 36
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000090)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000021f)
-
-// CHECK-ELF-NAMES: 136 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE
-// CHECK-ELF-NAMES: 140 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
-// CHECK-ELF-NAMES: 144 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19
+// CHECK-ELF-NEXT: 0x88 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x8C R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x90 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 [[VARSYM]]
+
// TLS local-exec forms
movz x3, #:tprel_g2:var
movn x4, #:tprel_g2:var
// CHECK: movz x3, #:tprel_g2:var // encoding: [0x03'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_a64_movw_tprel_g2
-// CHECK-NEXT: movn x4, #:tprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A']
+// CHECK: movn x4, #:tprel_g2:var // encoding: [0x04'A',A,0xc0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_a64_movw_tprel_g2
-// CHECK-ELF: # Relocation 37
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000094)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000220)
-// CHECK-ELF: # Relocation 38
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000098)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000220)
+// CHECK-ELF-NEXT: 0x94 R_AARCH64_TLSLE_MOVW_TPREL_G2 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x98 R_AARCH64_TLSLE_MOVW_TPREL_G2 [[VARSYM]]
-// CHECK-ELF-NAMES: 148 R_AARCH64_TLSLE_MOVW_TPREL_G2
-// CHECK-ELF-NAMES: 152 R_AARCH64_TLSLE_MOVW_TPREL_G2
movz x5, #:tprel_g1:var
movn x6, #:tprel_g1:var
@@ -377,53 +217,29 @@
movn w8, #:tprel_g1:var
// CHECK: movz x5, #:tprel_g1:var // encoding: [0x05'A',A,0xa0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1
-// CHECK-NEXT: movn x6, #:tprel_g1:var // encoding: [0x06'A',A,0xa0'A',0x92'A']
+// CHECK: movn x6, #:tprel_g1:var // encoding: [0x06'A',A,0xa0'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1
-// CHECK-NEXT: movz w7, #:tprel_g1:var // encoding: [0x07'A',A,0xa0'A',0x12'A']
+// CHECK: movz w7, #:tprel_g1:var // encoding: [0x07'A',A,0xa0'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1
-// CHECK-NEXT: movn w8, #:tprel_g1:var // encoding: [0x08'A',A,0xa0'A',0x12'A']
+// CHECK: movn w8, #:tprel_g1:var // encoding: [0x08'A',A,0xa0'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_a64_movw_tprel_g1
-// CHECK-ELF: # Relocation 39
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000009c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000221)
-// CHECK-ELF: # Relocation 40
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000221)
-// CHECK-ELF: # Relocation 41
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000221)
-// CHECK-ELF: # Relocation 42
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000a8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000221)
-
-// CHECK-ELF-NAMES: 156 R_AARCH64_TLSLE_MOVW_TPREL_G1
-// CHECK-ELF-NAMES: 160 R_AARCH64_TLSLE_MOVW_TPREL_G1
-// CHECK-ELF-NAMES: 164 R_AARCH64_TLSLE_MOVW_TPREL_G1
-// CHECK-ELF-NAMES: 168 R_AARCH64_TLSLE_MOVW_TPREL_G1
+// CHECK-ELF-NEXT: 0x9C R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xA0 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xA4 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xA8 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]]
+
movk x9, #:tprel_g1_nc:var
movk w10, #:tprel_g1_nc:var
// CHECK: movk x9, #:tprel_g1_nc:var // encoding: [0x09'A',A,0xa0'A',0xf2'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_a64_movw_tprel_g1_nc
-// CHECK-NEXT: movk w10, #:tprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A']
+// CHECK: movk w10, #:tprel_g1_nc:var // encoding: [0x0a'A',A,0xa0'A',0x72'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_a64_movw_tprel_g1_nc
-// CHECK-ELF: # Relocation 43
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000ac)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000222)
-// CHECK-ELF: # Relocation 44
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000222)
+// CHECK-ELF-NEXT: 0xAC R_AARCH64_TLSLE_MOVW_TPREL_G1_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0xB0 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 172 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
-// CHECK-ELF-NAMES: 176 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
movz x11, #:tprel_g0:var
movn x12, #:tprel_g0:var
@@ -431,187 +247,104 @@
movn w14, #:tprel_g0:var
// CHECK: movz x11, #:tprel_g0:var // encoding: [0x0b'A',A,0x80'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0
-// CHECK-NEXT: movn x12, #:tprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A']
+// CHECK: movn x12, #:tprel_g0:var // encoding: [0x0c'A',A,0x80'A',0x92'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0
-// CHECK-NEXT: movz w13, #:tprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A']
+// CHECK: movz w13, #:tprel_g0:var // encoding: [0x0d'A',A,0x80'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0
-// CHECK-NEXT: movn w14, #:tprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A']
+// CHECK: movn w14, #:tprel_g0:var // encoding: [0x0e'A',A,0x80'A',0x12'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_a64_movw_tprel_g0
-// CHECK-ELF: # Relocation 45
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000223)
-// CHECK-ELF: # Relocation 46
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000b8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000223)
-// CHECK-ELF: # Relocation 47
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000bc)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000223)
-// CHECK-ELF: # Relocation 48
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000223)
-
-// CHECK-ELF-NAMES: 180 R_AARCH64_TLSLE_MOVW_TPREL_G0
-// CHECK-ELF-NAMES: 184 R_AARCH64_TLSLE_MOVW_TPREL_G0
-// CHECK-ELF-NAMES: 188 R_AARCH64_TLSLE_MOVW_TPREL_G0
-// CHECK-ELF-NAMES: 192 R_AARCH64_TLSLE_MOVW_TPREL_G0
+// CHECK-ELF-NEXT: 0xB4 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xB8 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xBC R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xC0 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]]
+
movk x15, #:tprel_g0_nc:var
movk w16, #:tprel_g0_nc:var
// CHECK: movk x15, #:tprel_g0_nc:var // encoding: [0x0f'A',A,0x80'A',0xf2'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_a64_movw_tprel_g0_nc
-// CHECK-NEXT: movk w16, #:tprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A']
+// CHECK: movk w16, #:tprel_g0_nc:var // encoding: [0x10'A',A,0x80'A',0x72'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_a64_movw_tprel_g0_nc
-// CHECK-ELF: # Relocation 49
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000224)
-// CHECK-ELF: # Relocation 50
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000c8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000224)
+// CHECK-ELF-NEXT: 0xC4 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0xC8 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 196 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
-// CHECK-ELF-NAMES: 200 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
add x17, x18, #:tprel_hi12:var, lsl #12
add w19, w20, #:tprel_hi12:var, lsl #12
// CHECK: add x17, x18, #:tprel_hi12:var, lsl #12 // encoding: [0x51'A',0x02'A',0x40'A',0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_a64_add_tprel_hi12
-// CHECK-NEXT: add w19, w20, #:tprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A']
+// CHECK: add w19, w20, #:tprel_hi12:var, lsl #12 // encoding: [0x93'A',0x02'A',0x40'A',0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_a64_add_tprel_hi12
-// CHECK-ELF: # Relocation 51
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000cc)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000225)
-// CHECK-ELF: # Relocation 52
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000225)
+// CHECK-ELF-NEXT: 0xCC R_AARCH64_TLSLE_ADD_TPREL_HI12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xD0 R_AARCH64_TLSLE_ADD_TPREL_HI12 [[VARSYM]]
-// CHECK-ELF-NAMES: 204 R_AARCH64_TLSLE_ADD_TPREL_HI12
-// CHECK-ELF-NAMES: 208 R_AARCH64_TLSLE_ADD_TPREL_HI12
add x21, x22, #:tprel_lo12:var
add w23, w24, #:tprel_lo12:var
// CHECK: add x21, x22, #:tprel_lo12:var // encoding: [0xd5'A',0x02'A',A,0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_add_tprel_lo12
-// CHECK-NEXT: add w23, w24, #:tprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A']
+// CHECK: add w23, w24, #:tprel_lo12:var // encoding: [0x17'A',0x03'A',A,0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_add_tprel_lo12
-// CHECK-ELF: # Relocation 53
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000226)
-// CHECK-ELF: # Relocation 54
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000d8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000226)
+// CHECK-ELF-NEXT: 0xD4 R_AARCH64_TLSLE_ADD_TPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xD8 R_AARCH64_TLSLE_ADD_TPREL_LO12 [[VARSYM]]
-// CHECK-ELF-NAMES: 212 R_AARCH64_TLSLE_ADD_TPREL_LO12
-// CHECK-ELF-NAMES: 216 R_AARCH64_TLSLE_ADD_TPREL_LO12
add x25, x26, #:tprel_lo12_nc:var
add w27, w28, #:tprel_lo12_nc:var
// CHECK: add x25, x26, #:tprel_lo12_nc:var // encoding: [0x59'A',0x03'A',A,0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_add_tprel_lo12_nc
-// CHECK-NEXT: add w27, w28, #:tprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A']
+// CHECK: add w27, w28, #:tprel_lo12_nc:var // encoding: [0x9b'A',0x03'A',A,0x11'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_add_tprel_lo12_nc
-// CHECK-ELF: # Relocation 55
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000dc)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000227)
-// CHECK-ELF: # Relocation 56
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000227)
-
+// CHECK-ELF-NEXT: 0xDC R_AARCH64_TLSLE_ADD_TPREL_LO12_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0xE0 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 220 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
-// CHECK-ELF-NAMES: 224 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
ldrb w29, [x30, #:tprel_lo12:var]
ldrsb x29, [x28, #:tprel_lo12_nc:var]
// CHECK: ldrb w29, [x30, #:tprel_lo12:var] // encoding: [0xdd'A',0x03'A',0x40'A',0x39'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst8_tprel_lo12
-// CHECK-NEXT: ldrsb x29, [x28, #:tprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A']
+// CHECK: ldrsb x29, [x28, #:tprel_lo12_nc:var] // encoding: [0x9d'A',0x03'A',0x80'A',0x39'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst8_tprel_lo12_nc
-// CHECK-ELF: # Relocation 57
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000228)
-// CHECK-ELF: # Relocation 58
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000e8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000229)
+// CHECK-ELF-NEXT: 0xE4 R_AARCH64_TLSLE_LDST8_TPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xE8 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 228 R_AARCH64_TLSLE_LDST8_TPREL_LO12
-// CHECK-ELF-NAMES: 232 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
strh w27, [x26, #:tprel_lo12:var]
ldrsh x25, [x24, #:tprel_lo12_nc:var]
// CHECK: strh w27, [x26, #:tprel_lo12:var] // encoding: [0x5b'A',0x03'A',A,0x79'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst16_tprel_lo12
-// CHECK-NEXT: ldrsh x25, [x24, #:tprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A']
+// CHECK: ldrsh x25, [x24, #:tprel_lo12_nc:var] // encoding: [0x19'A',0x03'A',0x80'A',0x79'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst16_tprel_lo12_n
-// CHECK-ELF: # Relocation 59
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000ec)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022a)
-// CHECK-ELF: # Relocation 60
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f0)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022b)
+// CHECK-ELF-NEXT: 0xEC R_AARCH64_TLSLE_LDST16_TPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xF0 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC [[VARSYM]]
-// CHECK-ELF-NAMES: 236 R_AARCH64_TLSLE_LDST16_TPREL_LO12
-// CHECK-ELF-NAMES: 240 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
ldr w23, [x22, #:tprel_lo12:var]
ldrsw x21, [x20, #:tprel_lo12_nc:var]
// CHECK: ldr w23, [x22, #:tprel_lo12:var] // encoding: [0xd7'A',0x02'A',0x40'A',0xb9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst32_tprel_lo12
-// CHECK-NEXT: ldrsw x21, [x20, #:tprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A']
+// CHECK: ldrsw x21, [x20, #:tprel_lo12_nc:var] // encoding: [0x95'A',0x02'A',0x80'A',0xb9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst32_tprel_lo12_n
-// CHECK-ELF: # Relocation 61
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f4)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022c)
-// CHECK-ELF: # Relocation 62
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000f8)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022d)
-
-// CHECK-ELF-NAMES: 244 R_AARCH64_TLSLE_LDST32_TPREL_LO12
-// CHECK-ELF-NAMES: 248 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
+// CHECK-ELF-NEXT: 0xF4 R_AARCH64_TLSLE_LDST32_TPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0xF8 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC [[VARSYM]]
ldr x19, [x18, #:tprel_lo12:var]
str x17, [x16, #:tprel_lo12_nc:var]
// CHECK: ldr x19, [x18, #:tprel_lo12:var] // encoding: [0x53'A',0x02'A',0x40'A',0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_a64_ldst64_tprel_lo12
-// CHECK-NEXT: str x17, [x16, #:tprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A']
+// CHECK: str x17, [x16, #:tprel_lo12_nc:var] // encoding: [0x11'A',0x02'A',A,0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_a64_ldst64_tprel_lo12_nc
-// CHECK-ELF: # Relocation 63
-// CHECK-ELF-NEXT: (('r_offset', 0x00000000000000fc)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022e)
-// CHECK-ELF: # Relocation 64
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000100)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x0000022f)
-
-// CHECK-ELF-NAMES: 252 R_AARCH64_TLSLE_LDST64_TPREL_LO12
-// CHECK-ELF-NAMES: 256 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
+// CHECK-ELF-NEXT: 0xFC R_AARCH64_TLSLE_LDST64_TPREL_LO12 [[VARSYM]]
+// CHECK-ELF-NEXT: 0x100 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC [[VARSYM]]
// TLS descriptor forms
adrp x8, :tlsdesc:var
@@ -622,41 +355,27 @@
// CHECK: adrp x8, :tlsdesc:var // encoding: [0x08'A',A,A,0x90'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc:var, kind: fixup_a64_tlsdesc_adr_page
-// CHECK-NEXT: ldr x7, [x6, #:tlsdesc_lo12:var] // encoding: [0xc7'A',A,0x40'A',0xf9'A']
+// CHECK: ldr x7, [x6, #:tlsdesc_lo12:var] // encoding: [0xc7'A',A,0x40'A',0xf9'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_a64_tlsdesc_ld64_lo12_nc
-// CHECK-NEXT: add x5, x4, #:tlsdesc_lo12:var // encoding: [0x85'A',A,A,0x91'A']
+// CHECK: add x5, x4, #:tlsdesc_lo12:var // encoding: [0x85'A',A,A,0x91'A']
// CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_a64_tlsdesc_add_lo12_nc
-// CHECK-NEXT: .tlsdesccall var // encoding: []
+// CHECK: .tlsdesccall var // encoding: []
// CHECK-NEXT: // fixup A - offset: 0, value: :tlsdesc:var, kind: fixup_a64_tlsdesc_call
// CHECK: blr x3 // encoding: [0x60,0x00,0x3f,0xd6]
-// CHECK-ELF: # Relocation 65
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000104)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000232)
-// CHECK-ELF: # Relocation 66
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000108)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000233)
-// CHECK-ELF: # Relocation 67
-// CHECK-ELF-NEXT: (('r_offset', 0x000000000000010c)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000234)
-// CHECK-ELF: # Relocation 68
-// CHECK-ELF-NEXT: (('r_offset', 0x0000000000000110)
-// CHECK-ELF-NEXT: ('r_sym', [[VARSYM]])
-// CHECK-ELF-NEXT: ('r_type', 0x00000239)
-
-// CHECK-ELF-NAMES: 260 R_AARCH64_TLSDESC_ADR_PAGE
-// CHECK-ELF-NAMES: 264 R_AARCH64_TLSDESC_LD64_LO12_NC
-// CHECK-ELF-NAMES: 268 R_AARCH64_TLSDESC_ADD_LO12_NC
-// CHECK-ELF-NAMES: 272 R_AARCH64_TLSDESC_CALL
+// CHECK-ELF-NEXT: 0x104 R_AARCH64_TLSDESC_ADR_PAGE [[VARSYM]]
+// CHECK-ELF-NEXT: 0x108 R_AARCH64_TLSDESC_LD64_LO12_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x10C R_AARCH64_TLSDESC_ADD_LO12_NC [[VARSYM]]
+// CHECK-ELF-NEXT: 0x110 R_AARCH64_TLSDESC_CALL [[VARSYM]]
// Make sure symbol 5 has type STT_TLS:
-// CHECK-ELF: # Symbol 5
-// CHECK-ELF-NEXT: (('st_name', 0x00000006) # 'var'
-// CHECK-ELF-NEXT: ('st_bind', 0x1)
-// CHECK-ELF-NEXT: ('st_type', 0x6)
+// CHECK-ELF: Symbols [
+// CHECK-ELF: Symbol {
+// CHECK-ELF: Name: var (6)
+// CHECK-ELF-NEXT: Value:
+// CHECK-ELF-NEXT: Size:
+// CHECK-ELF-NEXT: Binding: Global
+// CHECK-ELF-NEXT: Type: TLS
diff --git a/test/MC/AArch64/trace-regs-diagnostics.s b/test/MC/AArch64/trace-regs-diagnostics.s
new file mode 100644
index 0000000..82ec7c0
--- /dev/null
+++ b/test/MC/AArch64/trace-regs-diagnostics.s
@@ -0,0 +1,156 @@
+// RUN: llvm-mc -triple aarch64-none-linux-gnu < %s 2>&1 | FileCheck %s
+ // Write-only
+ mrs x12, trcoslar
+ mrs x10, trclar
+// CHECK: error: expected readable system register
+// CHECK-NEXT: mrs x12, trcoslar
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected readable system register
+// CHECK-NEXT: mrs x10, trclar
+// CHECK-NEXT: ^
+
+ // Read-only
+ msr trcstatr, x0
+ msr trcidr8, x13
+ msr trcidr9, x25
+ msr trcidr10, x2
+ msr trcidr11, x19
+ msr trcidr12, x15
+ msr trcidr13, x24
+ msr trcidr0, x20
+ msr trcidr1, x5
+ msr trcidr2, x18
+ msr trcidr3, x10
+ msr trcidr4, x1
+ msr trcidr5, x10
+ msr trcidr6, x4
+ msr trcidr7, x0
+ msr trcoslsr, x23
+ msr trcpdsr, x21
+ msr trcdevaff0, x4
+ msr trcdevaff1, x17
+ msr trclsr, x18
+ msr trcauthstatus, x10
+ msr trcdevarch, x8
+ msr trcdevid, x11
+ msr trcdevtype, x1
+ msr trcpidr4, x2
+ msr trcpidr5, x7
+ msr trcpidr6, x17
+ msr trcpidr7, x5
+ msr trcpidr0, x0
+ msr trcpidr1, x16
+ msr trcpidr2, x29
+ msr trcpidr3, x1
+ msr trccidr0, x27
+ msr trccidr1, x1
+ msr trccidr2, x24
+ msr trccidr3, x8
+// CHECK: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcstatr, x0
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr8, x13
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr9, x25
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr10, x2
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr11, x19
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr12, x15
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr13, x24
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr0, x20
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr1, x5
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr2, x18
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr3, x10
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr4, x1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr5, x10
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr6, x4
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcidr7, x0
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcoslsr, x23
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpdsr, x21
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcdevaff0, x4
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcdevaff1, x17
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trclsr, x18
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcauthstatus, x10
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcdevarch, x8
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcdevid, x11
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcdevtype, x1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr4, x2
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr5, x7
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr6, x17
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr7, x5
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr0, x0
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr1, x16
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr2, x29
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trcpidr3, x1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trccidr0, x27
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trccidr1, x1
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trccidr2, x24
+// CHECK-NEXT: ^
+// CHECK-NEXT: error: expected writable system register or pstate
+// CHECK-NEXT: msr trccidr3, x8
+// CHECK-NEXT: ^
diff --git a/test/MC/AArch64/trace-regs.s b/test/MC/AArch64/trace-regs.s
new file mode 100644
index 0000000..f9ab4c9
--- /dev/null
+++ b/test/MC/AArch64/trace-regs.s
@@ -0,0 +1,766 @@
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s
+ mrs x8, trcstatr
+ mrs x9, trcidr8
+ mrs x11, trcidr9
+ mrs x25, trcidr10
+ mrs x7, trcidr11
+ mrs x7, trcidr12
+ mrs x6, trcidr13
+ mrs x27, trcidr0
+ mrs x29, trcidr1
+ mrs x4, trcidr2
+ mrs x8, trcidr3
+ mrs x15, trcidr4
+ mrs x20, trcidr5
+ mrs x6, trcidr6
+ mrs x6, trcidr7
+ mrs x24, trcoslsr
+ mrs x18, trcpdsr
+ mrs x28, trcdevaff0
+ mrs x5, trcdevaff1
+ mrs x5, trclsr
+ mrs x11, trcauthstatus
+ mrs x13, trcdevarch
+ mrs x18, trcdevid
+ mrs x22, trcdevtype
+ mrs x14, trcpidr4
+ mrs x5, trcpidr5
+ mrs x5, trcpidr6
+ mrs x9, trcpidr7
+ mrs x15, trcpidr0
+ mrs x6, trcpidr1
+ mrs x11, trcpidr2
+ mrs x20, trcpidr3
+ mrs x17, trccidr0
+ mrs x2, trccidr1
+ mrs x20, trccidr2
+ mrs x4, trccidr3
+ mrs x11, trcprgctlr
+ mrs x23, trcprocselr
+ mrs x13, trcconfigr
+ mrs x23, trcauxctlr
+ mrs x9, trceventctl0r
+ mrs x16, trceventctl1r
+ mrs x4, trcstallctlr
+ mrs x14, trctsctlr
+ mrs x24, trcsyncpr
+ mrs x28, trcccctlr
+ mrs x15, trcbbctlr
+ mrs x1, trctraceidr
+ mrs x20, trcqctlr
+ mrs x2, trcvictlr
+ mrs x12, trcviiectlr
+ mrs x16, trcvissctlr
+ mrs x8, trcvipcssctlr
+ mrs x27, trcvdctlr
+ mrs x9, trcvdsacctlr
+ mrs x0, trcvdarcctlr
+ mrs x13, trcseqevr0
+ mrs x11, trcseqevr1
+ mrs x26, trcseqevr2
+ mrs x14, trcseqrstevr
+ mrs x4, trcseqstr
+ mrs x17, trcextinselr
+ mrs x21, trccntrldvr0
+ mrs x10, trccntrldvr1
+ mrs x20, trccntrldvr2
+ mrs x5, trccntrldvr3
+ mrs x17, trccntctlr0
+ mrs x1, trccntctlr1
+ mrs x17, trccntctlr2
+ mrs x6, trccntctlr3
+ mrs x28, trccntvr0
+ mrs x23, trccntvr1
+ mrs x9, trccntvr2
+ mrs x6, trccntvr3
+ mrs x24, trcimspec0
+ mrs x24, trcimspec1
+ mrs x15, trcimspec2
+ mrs x10, trcimspec3
+ mrs x29, trcimspec4
+ mrs x18, trcimspec5
+ mrs x29, trcimspec6
+ mrs x2, trcimspec7
+ mrs x8, trcrsctlr2
+ mrs x0, trcrsctlr3
+ mrs x12, trcrsctlr4
+ mrs x26, trcrsctlr5
+ mrs x29, trcrsctlr6
+ mrs x17, trcrsctlr7
+ mrs x0, trcrsctlr8
+ mrs x1, trcrsctlr9
+ mrs x17, trcrsctlr10
+ mrs x21, trcrsctlr11
+ mrs x1, trcrsctlr12
+ mrs x8, trcrsctlr13
+ mrs x24, trcrsctlr14
+ mrs x0, trcrsctlr15
+ mrs x2, trcrsctlr16
+ mrs x29, trcrsctlr17
+ mrs x22, trcrsctlr18
+ mrs x6, trcrsctlr19
+ mrs x26, trcrsctlr20
+ mrs x26, trcrsctlr21
+ mrs x4, trcrsctlr22
+ mrs x12, trcrsctlr23
+ mrs x1, trcrsctlr24
+ mrs x0, trcrsctlr25
+ mrs x17, trcrsctlr26
+ mrs x8, trcrsctlr27
+ mrs x10, trcrsctlr28
+ mrs x25, trcrsctlr29
+ mrs x12, trcrsctlr30
+ mrs x11, trcrsctlr31
+ mrs x18, trcssccr0
+ mrs x12, trcssccr1
+ mrs x3, trcssccr2
+ mrs x2, trcssccr3
+ mrs x21, trcssccr4
+ mrs x10, trcssccr5
+ mrs x22, trcssccr6
+ mrs x23, trcssccr7
+ mrs x23, trcsscsr0
+ mrs x19, trcsscsr1
+ mrs x25, trcsscsr2
+ mrs x17, trcsscsr3
+ mrs x19, trcsscsr4
+ mrs x11, trcsscsr5
+ mrs x5, trcsscsr6
+ mrs x9, trcsscsr7
+ mrs x1, trcsspcicr0
+ mrs x12, trcsspcicr1
+ mrs x21, trcsspcicr2
+ mrs x11, trcsspcicr3
+ mrs x3, trcsspcicr4
+ mrs x9, trcsspcicr5
+ mrs x5, trcsspcicr6
+ mrs x2, trcsspcicr7
+ mrs x26, trcpdcr
+ mrs x8, trcacvr0
+ mrs x15, trcacvr1
+ mrs x19, trcacvr2
+ mrs x8, trcacvr3
+ mrs x28, trcacvr4
+ mrs x3, trcacvr5
+ mrs x25, trcacvr6
+ mrs x24, trcacvr7
+ mrs x6, trcacvr8
+ mrs x3, trcacvr9
+ mrs x24, trcacvr10
+ mrs x3, trcacvr11
+ mrs x12, trcacvr12
+ mrs x9, trcacvr13
+ mrs x14, trcacvr14
+ mrs x3, trcacvr15
+ mrs x21, trcacatr0
+ mrs x26, trcacatr1
+ mrs x8, trcacatr2
+ mrs x22, trcacatr3
+ mrs x6, trcacatr4
+ mrs x29, trcacatr5
+ mrs x5, trcacatr6
+ mrs x18, trcacatr7
+ mrs x2, trcacatr8
+ mrs x19, trcacatr9
+ mrs x13, trcacatr10
+ mrs x25, trcacatr11
+ mrs x18, trcacatr12
+ mrs x29, trcacatr13
+ mrs x9, trcacatr14
+ mrs x18, trcacatr15
+ mrs x29, trcdvcvr0
+ mrs x15, trcdvcvr1
+ mrs x15, trcdvcvr2
+ mrs x15, trcdvcvr3
+ mrs x19, trcdvcvr4
+ mrs x22, trcdvcvr5
+ mrs x27, trcdvcvr6
+ mrs x1, trcdvcvr7
+ mrs x29, trcdvcmr0
+ mrs x9, trcdvcmr1
+ mrs x1, trcdvcmr2
+ mrs x2, trcdvcmr3
+ mrs x5, trcdvcmr4
+ mrs x21, trcdvcmr5
+ mrs x5, trcdvcmr6
+ mrs x1, trcdvcmr7
+ mrs x21, trccidcvr0
+ mrs x24, trccidcvr1
+ mrs x24, trccidcvr2
+ mrs x12, trccidcvr3
+ mrs x10, trccidcvr4
+ mrs x9, trccidcvr5
+ mrs x6, trccidcvr6
+ mrs x20, trccidcvr7
+ mrs x20, trcvmidcvr0
+ mrs x20, trcvmidcvr1
+ mrs x26, trcvmidcvr2
+ mrs x1, trcvmidcvr3
+ mrs x14, trcvmidcvr4
+ mrs x27, trcvmidcvr5
+ mrs x29, trcvmidcvr6
+ mrs x17, trcvmidcvr7
+ mrs x10, trccidcctlr0
+ mrs x4, trccidcctlr1
+ mrs x9, trcvmidcctlr0
+ mrs x11, trcvmidcctlr1
+ mrs x22, trcitctrl
+ mrs x23, trcclaimset
+ mrs x14, trcclaimclr
+// CHECK: mrs x8, trcstatr // encoding: [0x08,0x03,0x31,0xd5]
+// CHECK: mrs x9, trcidr8 // encoding: [0xc9,0x00,0x31,0xd5]
+// CHECK: mrs x11, trcidr9 // encoding: [0xcb,0x01,0x31,0xd5]
+// CHECK: mrs x25, trcidr10 // encoding: [0xd9,0x02,0x31,0xd5]
+// CHECK: mrs x7, trcidr11 // encoding: [0xc7,0x03,0x31,0xd5]
+// CHECK: mrs x7, trcidr12 // encoding: [0xc7,0x04,0x31,0xd5]
+// CHECK: mrs x6, trcidr13 // encoding: [0xc6,0x05,0x31,0xd5]
+// CHECK: mrs x27, trcidr0 // encoding: [0xfb,0x08,0x31,0xd5]
+// CHECK: mrs x29, trcidr1 // encoding: [0xfd,0x09,0x31,0xd5]
+// CHECK: mrs x4, trcidr2 // encoding: [0xe4,0x0a,0x31,0xd5]
+// CHECK: mrs x8, trcidr3 // encoding: [0xe8,0x0b,0x31,0xd5]
+// CHECK: mrs x15, trcidr4 // encoding: [0xef,0x0c,0x31,0xd5]
+// CHECK: mrs x20, trcidr5 // encoding: [0xf4,0x0d,0x31,0xd5]
+// CHECK: mrs x6, trcidr6 // encoding: [0xe6,0x0e,0x31,0xd5]
+// CHECK: mrs x6, trcidr7 // encoding: [0xe6,0x0f,0x31,0xd5]
+// CHECK: mrs x24, trcoslsr // encoding: [0x98,0x11,0x31,0xd5]
+// CHECK: mrs x18, trcpdsr // encoding: [0x92,0x15,0x31,0xd5]
+// CHECK: mrs x28, trcdevaff0 // encoding: [0xdc,0x7a,0x31,0xd5]
+// CHECK: mrs x5, trcdevaff1 // encoding: [0xc5,0x7b,0x31,0xd5]
+// CHECK: mrs x5, trclsr // encoding: [0xc5,0x7d,0x31,0xd5]
+// CHECK: mrs x11, trcauthstatus // encoding: [0xcb,0x7e,0x31,0xd5]
+// CHECK: mrs x13, trcdevarch // encoding: [0xcd,0x7f,0x31,0xd5]
+// CHECK: mrs x18, trcdevid // encoding: [0xf2,0x72,0x31,0xd5]
+// CHECK: mrs x22, trcdevtype // encoding: [0xf6,0x73,0x31,0xd5]
+// CHECK: mrs x14, trcpidr4 // encoding: [0xee,0x74,0x31,0xd5]
+// CHECK: mrs x5, trcpidr5 // encoding: [0xe5,0x75,0x31,0xd5]
+// CHECK: mrs x5, trcpidr6 // encoding: [0xe5,0x76,0x31,0xd5]
+// CHECK: mrs x9, trcpidr7 // encoding: [0xe9,0x77,0x31,0xd5]
+// CHECK: mrs x15, trcpidr0 // encoding: [0xef,0x78,0x31,0xd5]
+// CHECK: mrs x6, trcpidr1 // encoding: [0xe6,0x79,0x31,0xd5]
+// CHECK: mrs x11, trcpidr2 // encoding: [0xeb,0x7a,0x31,0xd5]
+// CHECK: mrs x20, trcpidr3 // encoding: [0xf4,0x7b,0x31,0xd5]
+// CHECK: mrs x17, trccidr0 // encoding: [0xf1,0x7c,0x31,0xd5]
+// CHECK: mrs x2, trccidr1 // encoding: [0xe2,0x7d,0x31,0xd5]
+// CHECK: mrs x20, trccidr2 // encoding: [0xf4,0x7e,0x31,0xd5]
+// CHECK: mrs x4, trccidr3 // encoding: [0xe4,0x7f,0x31,0xd5]
+// CHECK: mrs x11, trcprgctlr // encoding: [0x0b,0x01,0x31,0xd5]
+// CHECK: mrs x23, trcprocselr // encoding: [0x17,0x02,0x31,0xd5]
+// CHECK: mrs x13, trcconfigr // encoding: [0x0d,0x04,0x31,0xd5]
+// CHECK: mrs x23, trcauxctlr // encoding: [0x17,0x06,0x31,0xd5]
+// CHECK: mrs x9, trceventctl0r // encoding: [0x09,0x08,0x31,0xd5]
+// CHECK: mrs x16, trceventctl1r // encoding: [0x10,0x09,0x31,0xd5]
+// CHECK: mrs x4, trcstallctlr // encoding: [0x04,0x0b,0x31,0xd5]
+// CHECK: mrs x14, trctsctlr // encoding: [0x0e,0x0c,0x31,0xd5]
+// CHECK: mrs x24, trcsyncpr // encoding: [0x18,0x0d,0x31,0xd5]
+// CHECK: mrs x28, trcccctlr // encoding: [0x1c,0x0e,0x31,0xd5]
+// CHECK: mrs x15, trcbbctlr // encoding: [0x0f,0x0f,0x31,0xd5]
+// CHECK: mrs x1, trctraceidr // encoding: [0x21,0x00,0x31,0xd5]
+// CHECK: mrs x20, trcqctlr // encoding: [0x34,0x01,0x31,0xd5]
+// CHECK: mrs x2, trcvictlr // encoding: [0x42,0x00,0x31,0xd5]
+// CHECK: mrs x12, trcviiectlr // encoding: [0x4c,0x01,0x31,0xd5]
+// CHECK: mrs x16, trcvissctlr // encoding: [0x50,0x02,0x31,0xd5]
+// CHECK: mrs x8, trcvipcssctlr // encoding: [0x48,0x03,0x31,0xd5]
+// CHECK: mrs x27, trcvdctlr // encoding: [0x5b,0x08,0x31,0xd5]
+// CHECK: mrs x9, trcvdsacctlr // encoding: [0x49,0x09,0x31,0xd5]
+// CHECK: mrs x0, trcvdarcctlr // encoding: [0x40,0x0a,0x31,0xd5]
+// CHECK: mrs x13, trcseqevr0 // encoding: [0x8d,0x00,0x31,0xd5]
+// CHECK: mrs x11, trcseqevr1 // encoding: [0x8b,0x01,0x31,0xd5]
+// CHECK: mrs x26, trcseqevr2 // encoding: [0x9a,0x02,0x31,0xd5]
+// CHECK: mrs x14, trcseqrstevr // encoding: [0x8e,0x06,0x31,0xd5]
+// CHECK: mrs x4, trcseqstr // encoding: [0x84,0x07,0x31,0xd5]
+// CHECK: mrs x17, trcextinselr // encoding: [0x91,0x08,0x31,0xd5]
+// CHECK: mrs x21, trccntrldvr0 // encoding: [0xb5,0x00,0x31,0xd5]
+// CHECK: mrs x10, trccntrldvr1 // encoding: [0xaa,0x01,0x31,0xd5]
+// CHECK: mrs x20, trccntrldvr2 // encoding: [0xb4,0x02,0x31,0xd5]
+// CHECK: mrs x5, trccntrldvr3 // encoding: [0xa5,0x03,0x31,0xd5]
+// CHECK: mrs x17, trccntctlr0 // encoding: [0xb1,0x04,0x31,0xd5]
+// CHECK: mrs x1, trccntctlr1 // encoding: [0xa1,0x05,0x31,0xd5]
+// CHECK: mrs x17, trccntctlr2 // encoding: [0xb1,0x06,0x31,0xd5]
+// CHECK: mrs x6, trccntctlr3 // encoding: [0xa6,0x07,0x31,0xd5]
+// CHECK: mrs x28, trccntvr0 // encoding: [0xbc,0x08,0x31,0xd5]
+// CHECK: mrs x23, trccntvr1 // encoding: [0xb7,0x09,0x31,0xd5]
+// CHECK: mrs x9, trccntvr2 // encoding: [0xa9,0x0a,0x31,0xd5]
+// CHECK: mrs x6, trccntvr3 // encoding: [0xa6,0x0b,0x31,0xd5]
+// CHECK: mrs x24, trcimspec0 // encoding: [0xf8,0x00,0x31,0xd5]
+// CHECK: mrs x24, trcimspec1 // encoding: [0xf8,0x01,0x31,0xd5]
+// CHECK: mrs x15, trcimspec2 // encoding: [0xef,0x02,0x31,0xd5]
+// CHECK: mrs x10, trcimspec3 // encoding: [0xea,0x03,0x31,0xd5]
+// CHECK: mrs x29, trcimspec4 // encoding: [0xfd,0x04,0x31,0xd5]
+// CHECK: mrs x18, trcimspec5 // encoding: [0xf2,0x05,0x31,0xd5]
+// CHECK: mrs x29, trcimspec6 // encoding: [0xfd,0x06,0x31,0xd5]
+// CHECK: mrs x2, trcimspec7 // encoding: [0xe2,0x07,0x31,0xd5]
+// CHECK: mrs x8, trcrsctlr2 // encoding: [0x08,0x12,0x31,0xd5]
+// CHECK: mrs x0, trcrsctlr3 // encoding: [0x00,0x13,0x31,0xd5]
+// CHECK: mrs x12, trcrsctlr4 // encoding: [0x0c,0x14,0x31,0xd5]
+// CHECK: mrs x26, trcrsctlr5 // encoding: [0x1a,0x15,0x31,0xd5]
+// CHECK: mrs x29, trcrsctlr6 // encoding: [0x1d,0x16,0x31,0xd5]
+// CHECK: mrs x17, trcrsctlr7 // encoding: [0x11,0x17,0x31,0xd5]
+// CHECK: mrs x0, trcrsctlr8 // encoding: [0x00,0x18,0x31,0xd5]
+// CHECK: mrs x1, trcrsctlr9 // encoding: [0x01,0x19,0x31,0xd5]
+// CHECK: mrs x17, trcrsctlr10 // encoding: [0x11,0x1a,0x31,0xd5]
+// CHECK: mrs x21, trcrsctlr11 // encoding: [0x15,0x1b,0x31,0xd5]
+// CHECK: mrs x1, trcrsctlr12 // encoding: [0x01,0x1c,0x31,0xd5]
+// CHECK: mrs x8, trcrsctlr13 // encoding: [0x08,0x1d,0x31,0xd5]
+// CHECK: mrs x24, trcrsctlr14 // encoding: [0x18,0x1e,0x31,0xd5]
+// CHECK: mrs x0, trcrsctlr15 // encoding: [0x00,0x1f,0x31,0xd5]
+// CHECK: mrs x2, trcrsctlr16 // encoding: [0x22,0x10,0x31,0xd5]
+// CHECK: mrs x29, trcrsctlr17 // encoding: [0x3d,0x11,0x31,0xd5]
+// CHECK: mrs x22, trcrsctlr18 // encoding: [0x36,0x12,0x31,0xd5]
+// CHECK: mrs x6, trcrsctlr19 // encoding: [0x26,0x13,0x31,0xd5]
+// CHECK: mrs x26, trcrsctlr20 // encoding: [0x3a,0x14,0x31,0xd5]
+// CHECK: mrs x26, trcrsctlr21 // encoding: [0x3a,0x15,0x31,0xd5]
+// CHECK: mrs x4, trcrsctlr22 // encoding: [0x24,0x16,0x31,0xd5]
+// CHECK: mrs x12, trcrsctlr23 // encoding: [0x2c,0x17,0x31,0xd5]
+// CHECK: mrs x1, trcrsctlr24 // encoding: [0x21,0x18,0x31,0xd5]
+// CHECK: mrs x0, trcrsctlr25 // encoding: [0x20,0x19,0x31,0xd5]
+// CHECK: mrs x17, trcrsctlr26 // encoding: [0x31,0x1a,0x31,0xd5]
+// CHECK: mrs x8, trcrsctlr27 // encoding: [0x28,0x1b,0x31,0xd5]
+// CHECK: mrs x10, trcrsctlr28 // encoding: [0x2a,0x1c,0x31,0xd5]
+// CHECK: mrs x25, trcrsctlr29 // encoding: [0x39,0x1d,0x31,0xd5]
+// CHECK: mrs x12, trcrsctlr30 // encoding: [0x2c,0x1e,0x31,0xd5]
+// CHECK: mrs x11, trcrsctlr31 // encoding: [0x2b,0x1f,0x31,0xd5]
+// CHECK: mrs x18, trcssccr0 // encoding: [0x52,0x10,0x31,0xd5]
+// CHECK: mrs x12, trcssccr1 // encoding: [0x4c,0x11,0x31,0xd5]
+// CHECK: mrs x3, trcssccr2 // encoding: [0x43,0x12,0x31,0xd5]
+// CHECK: mrs x2, trcssccr3 // encoding: [0x42,0x13,0x31,0xd5]
+// CHECK: mrs x21, trcssccr4 // encoding: [0x55,0x14,0x31,0xd5]
+// CHECK: mrs x10, trcssccr5 // encoding: [0x4a,0x15,0x31,0xd5]
+// CHECK: mrs x22, trcssccr6 // encoding: [0x56,0x16,0x31,0xd5]
+// CHECK: mrs x23, trcssccr7 // encoding: [0x57,0x17,0x31,0xd5]
+// CHECK: mrs x23, trcsscsr0 // encoding: [0x57,0x18,0x31,0xd5]
+// CHECK: mrs x19, trcsscsr1 // encoding: [0x53,0x19,0x31,0xd5]
+// CHECK: mrs x25, trcsscsr2 // encoding: [0x59,0x1a,0x31,0xd5]
+// CHECK: mrs x17, trcsscsr3 // encoding: [0x51,0x1b,0x31,0xd5]
+// CHECK: mrs x19, trcsscsr4 // encoding: [0x53,0x1c,0x31,0xd5]
+// CHECK: mrs x11, trcsscsr5 // encoding: [0x4b,0x1d,0x31,0xd5]
+// CHECK: mrs x5, trcsscsr6 // encoding: [0x45,0x1e,0x31,0xd5]
+// CHECK: mrs x9, trcsscsr7 // encoding: [0x49,0x1f,0x31,0xd5]
+// CHECK: mrs x1, trcsspcicr0 // encoding: [0x61,0x10,0x31,0xd5]
+// CHECK: mrs x12, trcsspcicr1 // encoding: [0x6c,0x11,0x31,0xd5]
+// CHECK: mrs x21, trcsspcicr2 // encoding: [0x75,0x12,0x31,0xd5]
+// CHECK: mrs x11, trcsspcicr3 // encoding: [0x6b,0x13,0x31,0xd5]
+// CHECK: mrs x3, trcsspcicr4 // encoding: [0x63,0x14,0x31,0xd5]
+// CHECK: mrs x9, trcsspcicr5 // encoding: [0x69,0x15,0x31,0xd5]
+// CHECK: mrs x5, trcsspcicr6 // encoding: [0x65,0x16,0x31,0xd5]
+// CHECK: mrs x2, trcsspcicr7 // encoding: [0x62,0x17,0x31,0xd5]
+// CHECK: mrs x26, trcpdcr // encoding: [0x9a,0x14,0x31,0xd5]
+// CHECK: mrs x8, trcacvr0 // encoding: [0x08,0x20,0x31,0xd5]
+// CHECK: mrs x15, trcacvr1 // encoding: [0x0f,0x22,0x31,0xd5]
+// CHECK: mrs x19, trcacvr2 // encoding: [0x13,0x24,0x31,0xd5]
+// CHECK: mrs x8, trcacvr3 // encoding: [0x08,0x26,0x31,0xd5]
+// CHECK: mrs x28, trcacvr4 // encoding: [0x1c,0x28,0x31,0xd5]
+// CHECK: mrs x3, trcacvr5 // encoding: [0x03,0x2a,0x31,0xd5]
+// CHECK: mrs x25, trcacvr6 // encoding: [0x19,0x2c,0x31,0xd5]
+// CHECK: mrs x24, trcacvr7 // encoding: [0x18,0x2e,0x31,0xd5]
+// CHECK: mrs x6, trcacvr8 // encoding: [0x26,0x20,0x31,0xd5]
+// CHECK: mrs x3, trcacvr9 // encoding: [0x23,0x22,0x31,0xd5]
+// CHECK: mrs x24, trcacvr10 // encoding: [0x38,0x24,0x31,0xd5]
+// CHECK: mrs x3, trcacvr11 // encoding: [0x23,0x26,0x31,0xd5]
+// CHECK: mrs x12, trcacvr12 // encoding: [0x2c,0x28,0x31,0xd5]
+// CHECK: mrs x9, trcacvr13 // encoding: [0x29,0x2a,0x31,0xd5]
+// CHECK: mrs x14, trcacvr14 // encoding: [0x2e,0x2c,0x31,0xd5]
+// CHECK: mrs x3, trcacvr15 // encoding: [0x23,0x2e,0x31,0xd5]
+// CHECK: mrs x21, trcacatr0 // encoding: [0x55,0x20,0x31,0xd5]
+// CHECK: mrs x26, trcacatr1 // encoding: [0x5a,0x22,0x31,0xd5]
+// CHECK: mrs x8, trcacatr2 // encoding: [0x48,0x24,0x31,0xd5]
+// CHECK: mrs x22, trcacatr3 // encoding: [0x56,0x26,0x31,0xd5]
+// CHECK: mrs x6, trcacatr4 // encoding: [0x46,0x28,0x31,0xd5]
+// CHECK: mrs x29, trcacatr5 // encoding: [0x5d,0x2a,0x31,0xd5]
+// CHECK: mrs x5, trcacatr6 // encoding: [0x45,0x2c,0x31,0xd5]
+// CHECK: mrs x18, trcacatr7 // encoding: [0x52,0x2e,0x31,0xd5]
+// CHECK: mrs x2, trcacatr8 // encoding: [0x62,0x20,0x31,0xd5]
+// CHECK: mrs x19, trcacatr9 // encoding: [0x73,0x22,0x31,0xd5]
+// CHECK: mrs x13, trcacatr10 // encoding: [0x6d,0x24,0x31,0xd5]
+// CHECK: mrs x25, trcacatr11 // encoding: [0x79,0x26,0x31,0xd5]
+// CHECK: mrs x18, trcacatr12 // encoding: [0x72,0x28,0x31,0xd5]
+// CHECK: mrs x29, trcacatr13 // encoding: [0x7d,0x2a,0x31,0xd5]
+// CHECK: mrs x9, trcacatr14 // encoding: [0x69,0x2c,0x31,0xd5]
+// CHECK: mrs x18, trcacatr15 // encoding: [0x72,0x2e,0x31,0xd5]
+// CHECK: mrs x29, trcdvcvr0 // encoding: [0x9d,0x20,0x31,0xd5]
+// CHECK: mrs x15, trcdvcvr1 // encoding: [0x8f,0x24,0x31,0xd5]
+// CHECK: mrs x15, trcdvcvr2 // encoding: [0x8f,0x28,0x31,0xd5]
+// CHECK: mrs x15, trcdvcvr3 // encoding: [0x8f,0x2c,0x31,0xd5]
+// CHECK: mrs x19, trcdvcvr4 // encoding: [0xb3,0x20,0x31,0xd5]
+// CHECK: mrs x22, trcdvcvr5 // encoding: [0xb6,0x24,0x31,0xd5]
+// CHECK: mrs x27, trcdvcvr6 // encoding: [0xbb,0x28,0x31,0xd5]
+// CHECK: mrs x1, trcdvcvr7 // encoding: [0xa1,0x2c,0x31,0xd5]
+// CHECK: mrs x29, trcdvcmr0 // encoding: [0xdd,0x20,0x31,0xd5]
+// CHECK: mrs x9, trcdvcmr1 // encoding: [0xc9,0x24,0x31,0xd5]
+// CHECK: mrs x1, trcdvcmr2 // encoding: [0xc1,0x28,0x31,0xd5]
+// CHECK: mrs x2, trcdvcmr3 // encoding: [0xc2,0x2c,0x31,0xd5]
+// CHECK: mrs x5, trcdvcmr4 // encoding: [0xe5,0x20,0x31,0xd5]
+// CHECK: mrs x21, trcdvcmr5 // encoding: [0xf5,0x24,0x31,0xd5]
+// CHECK: mrs x5, trcdvcmr6 // encoding: [0xe5,0x28,0x31,0xd5]
+// CHECK: mrs x1, trcdvcmr7 // encoding: [0xe1,0x2c,0x31,0xd5]
+// CHECK: mrs x21, trccidcvr0 // encoding: [0x15,0x30,0x31,0xd5]
+// CHECK: mrs x24, trccidcvr1 // encoding: [0x18,0x32,0x31,0xd5]
+// CHECK: mrs x24, trccidcvr2 // encoding: [0x18,0x34,0x31,0xd5]
+// CHECK: mrs x12, trccidcvr3 // encoding: [0x0c,0x36,0x31,0xd5]
+// CHECK: mrs x10, trccidcvr4 // encoding: [0x0a,0x38,0x31,0xd5]
+// CHECK: mrs x9, trccidcvr5 // encoding: [0x09,0x3a,0x31,0xd5]
+// CHECK: mrs x6, trccidcvr6 // encoding: [0x06,0x3c,0x31,0xd5]
+// CHECK: mrs x20, trccidcvr7 // encoding: [0x14,0x3e,0x31,0xd5]
+// CHECK: mrs x20, trcvmidcvr0 // encoding: [0x34,0x30,0x31,0xd5]
+// CHECK: mrs x20, trcvmidcvr1 // encoding: [0x34,0x32,0x31,0xd5]
+// CHECK: mrs x26, trcvmidcvr2 // encoding: [0x3a,0x34,0x31,0xd5]
+// CHECK: mrs x1, trcvmidcvr3 // encoding: [0x21,0x36,0x31,0xd5]
+// CHECK: mrs x14, trcvmidcvr4 // encoding: [0x2e,0x38,0x31,0xd5]
+// CHECK: mrs x27, trcvmidcvr5 // encoding: [0x3b,0x3a,0x31,0xd5]
+// CHECK: mrs x29, trcvmidcvr6 // encoding: [0x3d,0x3c,0x31,0xd5]
+// CHECK: mrs x17, trcvmidcvr7 // encoding: [0x31,0x3e,0x31,0xd5]
+// CHECK: mrs x10, trccidcctlr0 // encoding: [0x4a,0x30,0x31,0xd5]
+// CHECK: mrs x4, trccidcctlr1 // encoding: [0x44,0x31,0x31,0xd5]
+// CHECK: mrs x9, trcvmidcctlr0 // encoding: [0x49,0x32,0x31,0xd5]
+// CHECK: mrs x11, trcvmidcctlr1 // encoding: [0x4b,0x33,0x31,0xd5]
+// CHECK: mrs x22, trcitctrl // encoding: [0x96,0x70,0x31,0xd5]
+// CHECK: mrs x23, trcclaimset // encoding: [0xd7,0x78,0x31,0xd5]
+// CHECK: mrs x14, trcclaimclr // encoding: [0xce,0x79,0x31,0xd5]
+
+ msr trcoslar, x28
+ msr trclar, x14
+ msr trcprgctlr, x10
+ msr trcprocselr, x27
+ msr trcconfigr, x24
+ msr trcauxctlr, x8
+ msr trceventctl0r, x16
+ msr trceventctl1r, x27
+ msr trcstallctlr, x26
+ msr trctsctlr, x0
+ msr trcsyncpr, x14
+ msr trcccctlr, x8
+ msr trcbbctlr, x6
+ msr trctraceidr, x23
+ msr trcqctlr, x5
+ msr trcvictlr, x0
+ msr trcviiectlr, x0
+ msr trcvissctlr, x1
+ msr trcvipcssctlr, x0
+ msr trcvdctlr, x7
+ msr trcvdsacctlr, x18
+ msr trcvdarcctlr, x24
+ msr trcseqevr0, x28
+ msr trcseqevr1, x21
+ msr trcseqevr2, x16
+ msr trcseqrstevr, x16
+ msr trcseqstr, x25
+ msr trcextinselr, x29
+ msr trccntrldvr0, x20
+ msr trccntrldvr1, x20
+ msr trccntrldvr2, x22
+ msr trccntrldvr3, x12
+ msr trccntctlr0, x20
+ msr trccntctlr1, x4
+ msr trccntctlr2, x8
+ msr trccntctlr3, x16
+ msr trccntvr0, x5
+ msr trccntvr1, x27
+ msr trccntvr2, x21
+ msr trccntvr3, x8
+ msr trcimspec0, x6
+ msr trcimspec1, x27
+ msr trcimspec2, x23
+ msr trcimspec3, x15
+ msr trcimspec4, x13
+ msr trcimspec5, x25
+ msr trcimspec6, x19
+ msr trcimspec7, x27
+ msr trcrsctlr2, x4
+ msr trcrsctlr3, x0
+ msr trcrsctlr4, x21
+ msr trcrsctlr5, x8
+ msr trcrsctlr6, x20
+ msr trcrsctlr7, x11
+ msr trcrsctlr8, x18
+ msr trcrsctlr9, x24
+ msr trcrsctlr10, x15
+ msr trcrsctlr11, x21
+ msr trcrsctlr12, x4
+ msr trcrsctlr13, x28
+ msr trcrsctlr14, x3
+ msr trcrsctlr15, x20
+ msr trcrsctlr16, x12
+ msr trcrsctlr17, x17
+ msr trcrsctlr18, x10
+ msr trcrsctlr19, x11
+ msr trcrsctlr20, x3
+ msr trcrsctlr21, x18
+ msr trcrsctlr22, x26
+ msr trcrsctlr23, x5
+ msr trcrsctlr24, x25
+ msr trcrsctlr25, x5
+ msr trcrsctlr26, x4
+ msr trcrsctlr27, x20
+ msr trcrsctlr28, x5
+ msr trcrsctlr29, x10
+ msr trcrsctlr30, x24
+ msr trcrsctlr31, x20
+ msr trcssccr0, x23
+ msr trcssccr1, x27
+ msr trcssccr2, x27
+ msr trcssccr3, x6
+ msr trcssccr4, x3
+ msr trcssccr5, x12
+ msr trcssccr6, x7
+ msr trcssccr7, x6
+ msr trcsscsr0, x20
+ msr trcsscsr1, x17
+ msr trcsscsr2, x11
+ msr trcsscsr3, x4
+ msr trcsscsr4, x14
+ msr trcsscsr5, x22
+ msr trcsscsr6, x3
+ msr trcsscsr7, x11
+ msr trcsspcicr0, x2
+ msr trcsspcicr1, x3
+ msr trcsspcicr2, x5
+ msr trcsspcicr3, x7
+ msr trcsspcicr4, x11
+ msr trcsspcicr5, x13
+ msr trcsspcicr6, x17
+ msr trcsspcicr7, x23
+ msr trcpdcr, x3
+ msr trcacvr0, x6
+ msr trcacvr1, x20
+ msr trcacvr2, x25
+ msr trcacvr3, x1
+ msr trcacvr4, x28
+ msr trcacvr5, x15
+ msr trcacvr6, x25
+ msr trcacvr7, x12
+ msr trcacvr8, x5
+ msr trcacvr9, x25
+ msr trcacvr10, x13
+ msr trcacvr11, x10
+ msr trcacvr12, x19
+ msr trcacvr13, x10
+ msr trcacvr14, x19
+ msr trcacvr15, x2
+ msr trcacatr0, x15
+ msr trcacatr1, x13
+ msr trcacatr2, x8
+ msr trcacatr3, x1
+ msr trcacatr4, x11
+ msr trcacatr5, x8
+ msr trcacatr6, x24
+ msr trcacatr7, x6
+ msr trcacatr8, x23
+ msr trcacatr9, x5
+ msr trcacatr10, x11
+ msr trcacatr11, x11
+ msr trcacatr12, x3
+ msr trcacatr13, x28
+ msr trcacatr14, x25
+ msr trcacatr15, x4
+ msr trcdvcvr0, x6
+ msr trcdvcvr1, x3
+ msr trcdvcvr2, x5
+ msr trcdvcvr3, x11
+ msr trcdvcvr4, x9
+ msr trcdvcvr5, x14
+ msr trcdvcvr6, x10
+ msr trcdvcvr7, x12
+ msr trcdvcmr0, x8
+ msr trcdvcmr1, x8
+ msr trcdvcmr2, x22
+ msr trcdvcmr3, x22
+ msr trcdvcmr4, x5
+ msr trcdvcmr5, x16
+ msr trcdvcmr6, x27
+ msr trcdvcmr7, x21
+ msr trccidcvr0, x8
+ msr trccidcvr1, x6
+ msr trccidcvr2, x9
+ msr trccidcvr3, x8
+ msr trccidcvr4, x3
+ msr trccidcvr5, x21
+ msr trccidcvr6, x12
+ msr trccidcvr7, x7
+ msr trcvmidcvr0, x4
+ msr trcvmidcvr1, x3
+ msr trcvmidcvr2, x9
+ msr trcvmidcvr3, x17
+ msr trcvmidcvr4, x14
+ msr trcvmidcvr5, x12
+ msr trcvmidcvr6, x10
+ msr trcvmidcvr7, x3
+ msr trccidcctlr0, x14
+ msr trccidcctlr1, x22
+ msr trcvmidcctlr0, x8
+ msr trcvmidcctlr1, x15
+ msr trcitctrl, x1
+ msr trcclaimset, x7
+ msr trcclaimclr, x29
+// CHECK: msr trcoslar, x28 // encoding: [0x9c,0x10,0x11,0xd5]
+// CHECK: msr trclar, x14 // encoding: [0xce,0x7c,0x11,0xd5]
+// CHECK: msr trcprgctlr, x10 // encoding: [0x0a,0x01,0x11,0xd5]
+// CHECK: msr trcprocselr, x27 // encoding: [0x1b,0x02,0x11,0xd5]
+// CHECK: msr trcconfigr, x24 // encoding: [0x18,0x04,0x11,0xd5]
+// CHECK: msr trcauxctlr, x8 // encoding: [0x08,0x06,0x11,0xd5]
+// CHECK: msr trceventctl0r, x16 // encoding: [0x10,0x08,0x11,0xd5]
+// CHECK: msr trceventctl1r, x27 // encoding: [0x1b,0x09,0x11,0xd5]
+// CHECK: msr trcstallctlr, x26 // encoding: [0x1a,0x0b,0x11,0xd5]
+// CHECK: msr trctsctlr, x0 // encoding: [0x00,0x0c,0x11,0xd5]
+// CHECK: msr trcsyncpr, x14 // encoding: [0x0e,0x0d,0x11,0xd5]
+// CHECK: msr trcccctlr, x8 // encoding: [0x08,0x0e,0x11,0xd5]
+// CHECK: msr trcbbctlr, x6 // encoding: [0x06,0x0f,0x11,0xd5]
+// CHECK: msr trctraceidr, x23 // encoding: [0x37,0x00,0x11,0xd5]
+// CHECK: msr trcqctlr, x5 // encoding: [0x25,0x01,0x11,0xd5]
+// CHECK: msr trcvictlr, x0 // encoding: [0x40,0x00,0x11,0xd5]
+// CHECK: msr trcviiectlr, x0 // encoding: [0x40,0x01,0x11,0xd5]
+// CHECK: msr trcvissctlr, x1 // encoding: [0x41,0x02,0x11,0xd5]
+// CHECK: msr trcvipcssctlr, x0 // encoding: [0x40,0x03,0x11,0xd5]
+// CHECK: msr trcvdctlr, x7 // encoding: [0x47,0x08,0x11,0xd5]
+// CHECK: msr trcvdsacctlr, x18 // encoding: [0x52,0x09,0x11,0xd5]
+// CHECK: msr trcvdarcctlr, x24 // encoding: [0x58,0x0a,0x11,0xd5]
+// CHECK: msr trcseqevr0, x28 // encoding: [0x9c,0x00,0x11,0xd5]
+// CHECK: msr trcseqevr1, x21 // encoding: [0x95,0x01,0x11,0xd5]
+// CHECK: msr trcseqevr2, x16 // encoding: [0x90,0x02,0x11,0xd5]
+// CHECK: msr trcseqrstevr, x16 // encoding: [0x90,0x06,0x11,0xd5]
+// CHECK: msr trcseqstr, x25 // encoding: [0x99,0x07,0x11,0xd5]
+// CHECK: msr trcextinselr, x29 // encoding: [0x9d,0x08,0x11,0xd5]
+// CHECK: msr trccntrldvr0, x20 // encoding: [0xb4,0x00,0x11,0xd5]
+// CHECK: msr trccntrldvr1, x20 // encoding: [0xb4,0x01,0x11,0xd5]
+// CHECK: msr trccntrldvr2, x22 // encoding: [0xb6,0x02,0x11,0xd5]
+// CHECK: msr trccntrldvr3, x12 // encoding: [0xac,0x03,0x11,0xd5]
+// CHECK: msr trccntctlr0, x20 // encoding: [0xb4,0x04,0x11,0xd5]
+// CHECK: msr trccntctlr1, x4 // encoding: [0xa4,0x05,0x11,0xd5]
+// CHECK: msr trccntctlr2, x8 // encoding: [0xa8,0x06,0x11,0xd5]
+// CHECK: msr trccntctlr3, x16 // encoding: [0xb0,0x07,0x11,0xd5]
+// CHECK: msr trccntvr0, x5 // encoding: [0xa5,0x08,0x11,0xd5]
+// CHECK: msr trccntvr1, x27 // encoding: [0xbb,0x09,0x11,0xd5]
+// CHECK: msr trccntvr2, x21 // encoding: [0xb5,0x0a,0x11,0xd5]
+// CHECK: msr trccntvr3, x8 // encoding: [0xa8,0x0b,0x11,0xd5]
+// CHECK: msr trcimspec0, x6 // encoding: [0xe6,0x00,0x11,0xd5]
+// CHECK: msr trcimspec1, x27 // encoding: [0xfb,0x01,0x11,0xd5]
+// CHECK: msr trcimspec2, x23 // encoding: [0xf7,0x02,0x11,0xd5]
+// CHECK: msr trcimspec3, x15 // encoding: [0xef,0x03,0x11,0xd5]
+// CHECK: msr trcimspec4, x13 // encoding: [0xed,0x04,0x11,0xd5]
+// CHECK: msr trcimspec5, x25 // encoding: [0xf9,0x05,0x11,0xd5]
+// CHECK: msr trcimspec6, x19 // encoding: [0xf3,0x06,0x11,0xd5]
+// CHECK: msr trcimspec7, x27 // encoding: [0xfb,0x07,0x11,0xd5]
+// CHECK: msr trcrsctlr2, x4 // encoding: [0x04,0x12,0x11,0xd5]
+// CHECK: msr trcrsctlr3, x0 // encoding: [0x00,0x13,0x11,0xd5]
+// CHECK: msr trcrsctlr4, x21 // encoding: [0x15,0x14,0x11,0xd5]
+// CHECK: msr trcrsctlr5, x8 // encoding: [0x08,0x15,0x11,0xd5]
+// CHECK: msr trcrsctlr6, x20 // encoding: [0x14,0x16,0x11,0xd5]
+// CHECK: msr trcrsctlr7, x11 // encoding: [0x0b,0x17,0x11,0xd5]
+// CHECK: msr trcrsctlr8, x18 // encoding: [0x12,0x18,0x11,0xd5]
+// CHECK: msr trcrsctlr9, x24 // encoding: [0x18,0x19,0x11,0xd5]
+// CHECK: msr trcrsctlr10, x15 // encoding: [0x0f,0x1a,0x11,0xd5]
+// CHECK: msr trcrsctlr11, x21 // encoding: [0x15,0x1b,0x11,0xd5]
+// CHECK: msr trcrsctlr12, x4 // encoding: [0x04,0x1c,0x11,0xd5]
+// CHECK: msr trcrsctlr13, x28 // encoding: [0x1c,0x1d,0x11,0xd5]
+// CHECK: msr trcrsctlr14, x3 // encoding: [0x03,0x1e,0x11,0xd5]
+// CHECK: msr trcrsctlr15, x20 // encoding: [0x14,0x1f,0x11,0xd5]
+// CHECK: msr trcrsctlr16, x12 // encoding: [0x2c,0x10,0x11,0xd5]
+// CHECK: msr trcrsctlr17, x17 // encoding: [0x31,0x11,0x11,0xd5]
+// CHECK: msr trcrsctlr18, x10 // encoding: [0x2a,0x12,0x11,0xd5]
+// CHECK: msr trcrsctlr19, x11 // encoding: [0x2b,0x13,0x11,0xd5]
+// CHECK: msr trcrsctlr20, x3 // encoding: [0x23,0x14,0x11,0xd5]
+// CHECK: msr trcrsctlr21, x18 // encoding: [0x32,0x15,0x11,0xd5]
+// CHECK: msr trcrsctlr22, x26 // encoding: [0x3a,0x16,0x11,0xd5]
+// CHECK: msr trcrsctlr23, x5 // encoding: [0x25,0x17,0x11,0xd5]
+// CHECK: msr trcrsctlr24, x25 // encoding: [0x39,0x18,0x11,0xd5]
+// CHECK: msr trcrsctlr25, x5 // encoding: [0x25,0x19,0x11,0xd5]
+// CHECK: msr trcrsctlr26, x4 // encoding: [0x24,0x1a,0x11,0xd5]
+// CHECK: msr trcrsctlr27, x20 // encoding: [0x34,0x1b,0x11,0xd5]
+// CHECK: msr trcrsctlr28, x5 // encoding: [0x25,0x1c,0x11,0xd5]
+// CHECK: msr trcrsctlr29, x10 // encoding: [0x2a,0x1d,0x11,0xd5]
+// CHECK: msr trcrsctlr30, x24 // encoding: [0x38,0x1e,0x11,0xd5]
+// CHECK: msr trcrsctlr31, x20 // encoding: [0x34,0x1f,0x11,0xd5]
+// CHECK: msr trcssccr0, x23 // encoding: [0x57,0x10,0x11,0xd5]
+// CHECK: msr trcssccr1, x27 // encoding: [0x5b,0x11,0x11,0xd5]
+// CHECK: msr trcssccr2, x27 // encoding: [0x5b,0x12,0x11,0xd5]
+// CHECK: msr trcssccr3, x6 // encoding: [0x46,0x13,0x11,0xd5]
+// CHECK: msr trcssccr4, x3 // encoding: [0x43,0x14,0x11,0xd5]
+// CHECK: msr trcssccr5, x12 // encoding: [0x4c,0x15,0x11,0xd5]
+// CHECK: msr trcssccr6, x7 // encoding: [0x47,0x16,0x11,0xd5]
+// CHECK: msr trcssccr7, x6 // encoding: [0x46,0x17,0x11,0xd5]
+// CHECK: msr trcsscsr0, x20 // encoding: [0x54,0x18,0x11,0xd5]
+// CHECK: msr trcsscsr1, x17 // encoding: [0x51,0x19,0x11,0xd5]
+// CHECK: msr trcsscsr2, x11 // encoding: [0x4b,0x1a,0x11,0xd5]
+// CHECK: msr trcsscsr3, x4 // encoding: [0x44,0x1b,0x11,0xd5]
+// CHECK: msr trcsscsr4, x14 // encoding: [0x4e,0x1c,0x11,0xd5]
+// CHECK: msr trcsscsr5, x22 // encoding: [0x56,0x1d,0x11,0xd5]
+// CHECK: msr trcsscsr6, x3 // encoding: [0x43,0x1e,0x11,0xd5]
+// CHECK: msr trcsscsr7, x11 // encoding: [0x4b,0x1f,0x11,0xd5]
+// CHECK: msr trcsspcicr0, x2 // encoding: [0x62,0x10,0x11,0xd5]
+// CHECK: msr trcsspcicr1, x3 // encoding: [0x63,0x11,0x11,0xd5]
+// CHECK: msr trcsspcicr2, x5 // encoding: [0x65,0x12,0x11,0xd5]
+// CHECK: msr trcsspcicr3, x7 // encoding: [0x67,0x13,0x11,0xd5]
+// CHECK: msr trcsspcicr4, x11 // encoding: [0x6b,0x14,0x11,0xd5]
+// CHECK: msr trcsspcicr5, x13 // encoding: [0x6d,0x15,0x11,0xd5]
+// CHECK: msr trcsspcicr6, x17 // encoding: [0x71,0x16,0x11,0xd5]
+// CHECK: msr trcsspcicr7, x23 // encoding: [0x77,0x17,0x11,0xd5]
+// CHECK: msr trcpdcr, x3 // encoding: [0x83,0x14,0x11,0xd5]
+// CHECK: msr trcacvr0, x6 // encoding: [0x06,0x20,0x11,0xd5]
+// CHECK: msr trcacvr1, x20 // encoding: [0x14,0x22,0x11,0xd5]
+// CHECK: msr trcacvr2, x25 // encoding: [0x19,0x24,0x11,0xd5]
+// CHECK: msr trcacvr3, x1 // encoding: [0x01,0x26,0x11,0xd5]
+// CHECK: msr trcacvr4, x28 // encoding: [0x1c,0x28,0x11,0xd5]
+// CHECK: msr trcacvr5, x15 // encoding: [0x0f,0x2a,0x11,0xd5]
+// CHECK: msr trcacvr6, x25 // encoding: [0x19,0x2c,0x11,0xd5]
+// CHECK: msr trcacvr7, x12 // encoding: [0x0c,0x2e,0x11,0xd5]
+// CHECK: msr trcacvr8, x5 // encoding: [0x25,0x20,0x11,0xd5]
+// CHECK: msr trcacvr9, x25 // encoding: [0x39,0x22,0x11,0xd5]
+// CHECK: msr trcacvr10, x13 // encoding: [0x2d,0x24,0x11,0xd5]
+// CHECK: msr trcacvr11, x10 // encoding: [0x2a,0x26,0x11,0xd5]
+// CHECK: msr trcacvr12, x19 // encoding: [0x33,0x28,0x11,0xd5]
+// CHECK: msr trcacvr13, x10 // encoding: [0x2a,0x2a,0x11,0xd5]
+// CHECK: msr trcacvr14, x19 // encoding: [0x33,0x2c,0x11,0xd5]
+// CHECK: msr trcacvr15, x2 // encoding: [0x22,0x2e,0x11,0xd5]
+// CHECK: msr trcacatr0, x15 // encoding: [0x4f,0x20,0x11,0xd5]
+// CHECK: msr trcacatr1, x13 // encoding: [0x4d,0x22,0x11,0xd5]
+// CHECK: msr trcacatr2, x8 // encoding: [0x48,0x24,0x11,0xd5]
+// CHECK: msr trcacatr3, x1 // encoding: [0x41,0x26,0x11,0xd5]
+// CHECK: msr trcacatr4, x11 // encoding: [0x4b,0x28,0x11,0xd5]
+// CHECK: msr trcacatr5, x8 // encoding: [0x48,0x2a,0x11,0xd5]
+// CHECK: msr trcacatr6, x24 // encoding: [0x58,0x2c,0x11,0xd5]
+// CHECK: msr trcacatr7, x6 // encoding: [0x46,0x2e,0x11,0xd5]
+// CHECK: msr trcacatr8, x23 // encoding: [0x77,0x20,0x11,0xd5]
+// CHECK: msr trcacatr9, x5 // encoding: [0x65,0x22,0x11,0xd5]
+// CHECK: msr trcacatr10, x11 // encoding: [0x6b,0x24,0x11,0xd5]
+// CHECK: msr trcacatr11, x11 // encoding: [0x6b,0x26,0x11,0xd5]
+// CHECK: msr trcacatr12, x3 // encoding: [0x63,0x28,0x11,0xd5]
+// CHECK: msr trcacatr13, x28 // encoding: [0x7c,0x2a,0x11,0xd5]
+// CHECK: msr trcacatr14, x25 // encoding: [0x79,0x2c,0x11,0xd5]
+// CHECK: msr trcacatr15, x4 // encoding: [0x64,0x2e,0x11,0xd5]
+// CHECK: msr trcdvcvr0, x6 // encoding: [0x86,0x20,0x11,0xd5]
+// CHECK: msr trcdvcvr1, x3 // encoding: [0x83,0x24,0x11,0xd5]
+// CHECK: msr trcdvcvr2, x5 // encoding: [0x85,0x28,0x11,0xd5]
+// CHECK: msr trcdvcvr3, x11 // encoding: [0x8b,0x2c,0x11,0xd5]
+// CHECK: msr trcdvcvr4, x9 // encoding: [0xa9,0x20,0x11,0xd5]
+// CHECK: msr trcdvcvr5, x14 // encoding: [0xae,0x24,0x11,0xd5]
+// CHECK: msr trcdvcvr6, x10 // encoding: [0xaa,0x28,0x11,0xd5]
+// CHECK: msr trcdvcvr7, x12 // encoding: [0xac,0x2c,0x11,0xd5]
+// CHECK: msr trcdvcmr0, x8 // encoding: [0xc8,0x20,0x11,0xd5]
+// CHECK: msr trcdvcmr1, x8 // encoding: [0xc8,0x24,0x11,0xd5]
+// CHECK: msr trcdvcmr2, x22 // encoding: [0xd6,0x28,0x11,0xd5]
+// CHECK: msr trcdvcmr3, x22 // encoding: [0xd6,0x2c,0x11,0xd5]
+// CHECK: msr trcdvcmr4, x5 // encoding: [0xe5,0x20,0x11,0xd5]
+// CHECK: msr trcdvcmr5, x16 // encoding: [0xf0,0x24,0x11,0xd5]
+// CHECK: msr trcdvcmr6, x27 // encoding: [0xfb,0x28,0x11,0xd5]
+// CHECK: msr trcdvcmr7, x21 // encoding: [0xf5,0x2c,0x11,0xd5]
+// CHECK: msr trccidcvr0, x8 // encoding: [0x08,0x30,0x11,0xd5]
+// CHECK: msr trccidcvr1, x6 // encoding: [0x06,0x32,0x11,0xd5]
+// CHECK: msr trccidcvr2, x9 // encoding: [0x09,0x34,0x11,0xd5]
+// CHECK: msr trccidcvr3, x8 // encoding: [0x08,0x36,0x11,0xd5]
+// CHECK: msr trccidcvr4, x3 // encoding: [0x03,0x38,0x11,0xd5]
+// CHECK: msr trccidcvr5, x21 // encoding: [0x15,0x3a,0x11,0xd5]
+// CHECK: msr trccidcvr6, x12 // encoding: [0x0c,0x3c,0x11,0xd5]
+// CHECK: msr trccidcvr7, x7 // encoding: [0x07,0x3e,0x11,0xd5]
+// CHECK: msr trcvmidcvr0, x4 // encoding: [0x24,0x30,0x11,0xd5]
+// CHECK: msr trcvmidcvr1, x3 // encoding: [0x23,0x32,0x11,0xd5]
+// CHECK: msr trcvmidcvr2, x9 // encoding: [0x29,0x34,0x11,0xd5]
+// CHECK: msr trcvmidcvr3, x17 // encoding: [0x31,0x36,0x11,0xd5]
+// CHECK: msr trcvmidcvr4, x14 // encoding: [0x2e,0x38,0x11,0xd5]
+// CHECK: msr trcvmidcvr5, x12 // encoding: [0x2c,0x3a,0x11,0xd5]
+// CHECK: msr trcvmidcvr6, x10 // encoding: [0x2a,0x3c,0x11,0xd5]
+// CHECK: msr trcvmidcvr7, x3 // encoding: [0x23,0x3e,0x11,0xd5]
+// CHECK: msr trccidcctlr0, x14 // encoding: [0x4e,0x30,0x11,0xd5]
+// CHECK: msr trccidcctlr1, x22 // encoding: [0x56,0x31,0x11,0xd5]
+// CHECK: msr trcvmidcctlr0, x8 // encoding: [0x48,0x32,0x11,0xd5]
+// CHECK: msr trcvmidcctlr1, x15 // encoding: [0x4f,0x33,0x11,0xd5]
+// CHECK: msr trcitctrl, x1 // encoding: [0x81,0x70,0x11,0xd5]
+// CHECK: msr trcclaimset, x7 // encoding: [0xc7,0x78,0x11,0xd5]
+// CHECK: msr trcclaimclr, x29 // encoding: [0xdd,0x79,0x11,0xd5]
diff --git a/test/MC/ARM/2013-03-18-Br-to-label-named-like-reg.s b/test/MC/ARM/2013-03-18-Br-to-label-named-like-reg.s
new file mode 100644
index 0000000..172abcf
--- /dev/null
+++ b/test/MC/ARM/2013-03-18-Br-to-label-named-like-reg.s
@@ -0,0 +1,5 @@
+@ RUN: llvm-mc -arch arm %s
+@ CHECK: test:
+@ CHECK: br r1
+test:
+ bl r1
diff --git a/test/MC/ARM/arm-thumb-trustzone.s b/test/MC/ARM/arm-thumb-trustzone.s
new file mode 100644
index 0000000..a080b3e
--- /dev/null
+++ b/test/MC/ARM/arm-thumb-trustzone.s
@@ -0,0 +1,25 @@
+@ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding -mattr=-trustzone < %s | FileCheck %s -check-prefix=NOTZ
+@ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding -mattr=trustzone < %s | FileCheck %s -check-prefix=TZ
+
+ .syntax unified
+ .globl _func
+
+@ Check that the assembler processes SMC instructions when TrustZone support is
+@ active and that it rejects them when this feature is not enabled
+
+_func:
+@ CHECK: _func
+
+
+@------------------------------------------------------------------------------
+@ SMC
+@------------------------------------------------------------------------------
+ smc #0xf
+ ite eq
+ smceq #0
+
+@ NOTZ-NOT: smc #15
+@ NOTZ-NOT: smceq #0
+@ TZ: smc #15 @ encoding: [0xff,0xf7,0x00,0x80]
+@ TZ: ite eq @ encoding: [0x0c,0xbf]
+@ TZ: smceq #0 @ encoding: [0xf0,0xf7,0x00,0x80]
diff --git a/test/MC/ARM/arm-trustzone.s b/test/MC/ARM/arm-trustzone.s
new file mode 100644
index 0000000..69157f6
--- /dev/null
+++ b/test/MC/ARM/arm-trustzone.s
@@ -0,0 +1,24 @@
+@ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -show-encoding -mattr=-trustzone < %s | FileCheck %s -check-prefix=NOTZ
+@ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -show-encoding -mattr=trustzone < %s | FileCheck %s -check-prefix=TZ
+
+ .syntax unified
+ .globl _func
+
+@ Check that the assembler processes SMC instructions when TrustZone support is
+@ active and that it rejects them when this feature is not enabled
+
+_func:
+@ CHECK: _func
+
+
+@------------------------------------------------------------------------------
+@ SMC
+@------------------------------------------------------------------------------
+ smc #0xf
+ smceq #0
+
+@ NOTZ-NOT: smc #15
+@ NOTZ-NOT: smceq #0
+@ TZ: smc #15 @ encoding: [0x7f,0x00,0x60,0xe1]
+@ TZ: smceq #0 @ encoding: [0x70,0x00,0x60,0x01]
+
diff --git a/test/MC/ARM/basic-arm-instructions.s b/test/MC/ARM/basic-arm-instructions.s
index 560a0d6..71b5b5d 100644
--- a/test/MC/ARM/basic-arm-instructions.s
+++ b/test/MC/ARM/basic-arm-instructions.s
@@ -1791,15 +1791,6 @@ Lforward:
@ CHECK: shsub8gt r4, r8, r2 @ encoding: [0xf2,0x4f,0x38,0xc6]
@------------------------------------------------------------------------------
-@ SMC
-@------------------------------------------------------------------------------
- smc #0xf
- smceq #0
-
-@ CHECK: smc #15 @ encoding: [0x7f,0x00,0x60,0xe1]
-@ CHECK: smceq #0 @ encoding: [0x70,0x00,0x60,0x01]
-
-@------------------------------------------------------------------------------
@ SMLABB/SMLABT/SMLATB/SMLATT
@------------------------------------------------------------------------------
smlabb r3, r1, r9, r0
@@ -2318,7 +2309,7 @@ Lforward:
strpl r3, [r10, #0]!
@ CHECK: strpl r3, [r10, #-0]! @ encoding: [0x00,0x30,0x2a,0x55]
-@ CHECK: strpl r3, [r10]! @ encoding: [0x00,0x30,0xaa,0x55]
+@ CHECK: strpl r3, [r10, #0]! @ encoding: [0x00,0x30,0xaa,0x55]
@------------------------------------------------------------------------------
@ SUB
@@ -2879,7 +2870,6 @@ Lforward:
wfilt
yield
yieldne
- hint #5
hint #4
hint #3
hint #2
@@ -2892,7 +2882,6 @@ Lforward:
@ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
@ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
@ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]
-@ CHECK: hint #5 @ encoding: [0x05,0xf0,0x20,0xe3]
@ CHECK: sev @ encoding: [0x04,0xf0,0x20,0xe3]
@ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
@ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s
index 9278a2a..8127feb 100644
--- a/test/MC/ARM/basic-thumb2-instructions.s
+++ b/test/MC/ARM/basic-thumb2-instructions.s
@@ -3486,8 +3486,6 @@ _func:
wfelt
wfige
yieldlt
- hint #5
- hint.w #5
hint.w #4
hint #3
hint #2
@@ -3501,8 +3499,6 @@ _func:
@ CHECK: wfelt @ encoding: [0x20,0xbf]
@ CHECK: wfige @ encoding: [0x30,0xbf]
@ CHECK: yieldlt @ encoding: [0x10,0xbf]
-@ CHECK: hint #5 @ encoding: [0xaf,0xf3,0x05,0x80]
-@ CHECK: hint #5 @ encoding: [0xaf,0xf3,0x05,0x80]
@ CHECK: sev.w @ encoding: [0xaf,0xf3,0x04,0x80]
@ CHECK: wfi.w @ encoding: [0xaf,0xf3,0x03,0x80]
@ CHECK: wfe.w @ encoding: [0xaf,0xf3,0x02,0x80]
diff --git a/test/MC/ARM/cxx-global-constructor.ll b/test/MC/ARM/cxx-global-constructor.ll
index e06d2c7..4afd1e1 100644
--- a/test/MC/ARM/cxx-global-constructor.ll
+++ b/test/MC/ARM/cxx-global-constructor.ll
@@ -1,5 +1,5 @@
; RUN: llc %s -mtriple=armv7-linux-gnueabi -relocation-model=pic \
-; RUN: -filetype=obj -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: -filetype=obj -o - | llvm-readobj -r | FileCheck %s
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @f }]
@@ -9,4 +9,5 @@ define void @f() {
}
; Check for a relocation of type R_ARM_TARGET1.
-; CHECK: ('r_type', 0x26)
+; CHECK: Relocations [
+; CHECK: 0x{{[0-9,A-F]+}} R_ARM_TARGET1
diff --git a/test/MC/ARM/data-in-code.ll b/test/MC/ARM/data-in-code.ll
index c2feec5..e3325b6 100644
--- a/test/MC/ARM/data-in-code.ll
+++ b/test/MC/ARM/data-in-code.ll
@@ -1,8 +1,8 @@
;; RUN: llc -O0 -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
-;; RUN: elf-dump | FileCheck -check-prefix=ARM %s
+;; RUN: llvm-readobj -t | FileCheck -check-prefix=ARM %s
;; RUN: llc -O0 -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=TMB %s
+;; RUN: llvm-readobj -t | FileCheck -check-prefix=TMB %s
;; Ensure that if a jump table is generated that it has Mapping Symbols
;; marking the data-in-code region.
@@ -108,68 +108,68 @@ exit:
ret void
}
-;; ARM: # Symbol 2
-;; ARM-NEXT: $a
-;; ARM-NEXT: 'st_value', 0x00000000
-;; ARM-NEXT: 'st_size', 0x00000000
-;; ARM-NEXT: 'st_bind', 0x0
-;; ARM-NEXT: 'st_type', 0x0
-;; ARM-NEXT: 'st_other'
-;; ARM-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]]
-
-;; ARM: # Symbol 3
-;; ARM-NEXT: $a
-;; ARM-NEXT: 'st_value', 0x000000ac
-;; ARM-NEXT: 'st_size', 0x00000000
-;; ARM-NEXT: 'st_bind', 0x0
-;; ARM-NEXT: 'st_type', 0x0
-;; ARM-NEXT: 'st_other'
-;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]]
-
-;; ARM: # Symbol 4
-;; ARM-NEXT: $d
-;; ARM-NEXT: 'st_value', 0x00000000
-;; ARM-NEXT: 'st_size', 0x00000000
-;; ARM-NEXT: 'st_bind', 0x0
-;; ARM-NEXT: 'st_type', 0x0
-
-;; ARM: # Symbol 5
-;; ARM-NEXT: $d
-;; ARM-NEXT: 'st_value', 0x00000030
-;; ARM-NEXT: 'st_size', 0x00000000
-;; ARM-NEXT: 'st_bind', 0x0
-;; ARM-NEXT: 'st_type', 0x0
-;; ARM-NEXT: 'st_other'
-;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]]
+;; ARM: Symbol {
+;; ARM: Name: $a
+;; ARM-NEXT: Value: 0x0
+;; ARM-NEXT: Size: 0
+;; ARM-NEXT: Binding: Local
+;; ARM-NEXT: Type: None
+;; ARM-NEXT: Other:
+;; ARM-NEXT: Section: [[MIXED_SECT:[^ ]+]]
+
+;; ARM: Symbol {
+;; ARM: Name: $a
+;; ARM-NEXT: Value: 0xAC
+;; ARM-NEXT: Size: 0
+;; ARM-NEXT: Binding: Local
+;; ARM-NEXT: Type: None
+;; ARM-NEXT: Other:
+;; ARM-NEXT: Section: [[MIXED_SECT]]
+
+;; ARM: Symbol {
+;; ARM: Name: $d
+;; ARM-NEXT: Value: 0
+;; ARM-NEXT: Size: 0
+;; ARM-NEXT: Binding: Local
+;; ARM-NEXT: Type: None
+
+;; ARM: Symbol {
+;; ARM: Name: $d
+;; ARM-NEXT: Value: 0x30
+;; ARM-NEXT: Size: 0
+;; ARM-NEXT: Binding: Local
+;; ARM-NEXT: Type: None
+;; ARM-NEXT: Other:
+;; ARM-NEXT: Section: [[MIXED_SECT]]
;; ARM-NOT: ${{[atd]}}
-;; TMB: # Symbol 3
-;; TMB-NEXT: $d
-;; TMB-NEXT: 'st_value', 0x00000016
-;; TMB-NEXT: 'st_size', 0x00000000
-;; TMB-NEXT: 'st_bind', 0x0
-;; TMB-NEXT: 'st_type', 0x0
-;; TMB-NEXT: 'st_other'
-;; TMB-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]]
-
-;; TMB: # Symbol 4
-;; TMB-NEXT: $t
-;; TMB-NEXT: 'st_value', 0x00000000
-;; TMB-NEXT: 'st_size', 0x00000000
-;; TMB-NEXT: 'st_bind', 0x0
-;; TMB-NEXT: 'st_type', 0x0
-;; TMB-NEXT: 'st_other'
-;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]]
-
-;; TMB: # Symbol 5
-;; TMB-NEXT: $t
-;; TMB-NEXT: 'st_value', 0x00000036
-;; TMB-NEXT: 'st_size', 0x00000000
-;; TMB-NEXT: 'st_bind', 0x0
-;; TMB-NEXT: 'st_type', 0x0
-;; TMB-NEXT: 'st_other'
-;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]]
+;; TMB: Symbol {
+;; TMB: Name: $d.2
+;; TMB-NEXT: Value: 0x16
+;; TMB-NEXT: Size: 0
+;; TMB-NEXT: Binding: Local
+;; TMB-NEXT: Type: None
+;; TMB-NEXT: Other:
+;; TMB-NEXT: Section: [[MIXED_SECT:[^ ]+]]
+
+;; TMB: Symbol {
+;; TMB: Name: $t
+;; TMB-NEXT: Value: 0x0
+;; TMB-NEXT: Size: 0
+;; TMB-NEXT: Binding: Local
+;; TMB-NEXT: Type: None
+;; TMB-NEXT: Other:
+;; TMB-NEXT: Section: [[MIXED_SECT]]
+
+;; TMB: Symbol {
+;; TMB: Name: $t
+;; TMB-NEXT: Value: 0x36
+;; TMB-NEXT: Size: 0
+;; TMB-NEXT: Binding: Local
+;; TMB-NEXT: Type: None
+;; TMB-NEXT: Other:
+;; TMB-NEXT: Section: [[MIXED_SECT]]
;; TMB-NOT: ${{[atd]}}
diff --git a/test/MC/ARM/elf-eflags-eabi-cg.ll b/test/MC/ARM/elf-eflags-eabi-cg.ll
index 2e86a0f..0b9de7f 100644
--- a/test/MC/ARM/elf-eflags-eabi-cg.ll
+++ b/test/MC/ARM/elf-eflags-eabi-cg.ll
@@ -1,7 +1,7 @@
; Codegen version to check for ELF header flags.
;
; RUN: llc %s -mtriple=thumbv7-linux-gnueabi -relocation-model=pic \
-; RUN: -filetype=obj -o - | elf-dump --dump-section-data | \
+; RUN: -filetype=obj -o - | llvm-readobj -h | \
; RUN: FileCheck %s
define void @bar() nounwind {
@@ -10,4 +10,5 @@ entry:
}
; For now the only e_flag set is EF_ARM_EABI_VER5
-;CHECK: 'e_flags', 0x05000000
+; CHECK: ElfHeader {
+; CHECK: Flags [ (0x5000000)
diff --git a/test/MC/ARM/elf-eflags-eabi.s b/test/MC/ARM/elf-eflags-eabi.s
index ea89eac..fe0b6c0 100644
--- a/test/MC/ARM/elf-eflags-eabi.s
+++ b/test/MC/ARM/elf-eflags-eabi.s
@@ -1,5 +1,5 @@
@ RUN: llvm-mc %s -triple=armv7-linux-gnueabi -filetype=obj -o - | \
-@ RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s
+@ RUN: llvm-readobj -h | FileCheck -check-prefix=OBJ %s
.syntax unified
.text
.globl barf
@@ -10,4 +10,5 @@ barf: @ @barf
b foo
@@@ make sure the EF_ARM_EABIMASK comes out OK
-@OBJ: 'e_flags', 0x05000000
+@OBJ: ElfHeader {
+@OBJ: Flags [ (0x5000000)
diff --git a/test/MC/ARM/elf-movt.s b/test/MC/ARM/elf-movt.s
index 02bb5a6..74b3c9f 100644
--- a/test/MC/ARM/elf-movt.s
+++ b/test/MC/ARM/elf-movt.s
@@ -1,6 +1,6 @@
@ RUN: llvm-mc %s -triple=armv7-linux-gnueabi | FileCheck -check-prefix=ASM %s
@ RUN: llvm-mc %s -triple=armv7-linux-gnueabi -filetype=obj -o - | \
-@ RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s
+@ RUN: llvm-readobj -s -sd -sr | FileCheck -check-prefix=OBJ %s
.syntax unified
.text
.globl barf
@@ -15,25 +15,24 @@ barf: @ @barf
@ ASM-NEXT: movt r0, :upper16:(GOT-(.LPC0_2+8))
@@ make sure that the text section fixups are sane too
-@ OBJ: '.text'
-@ OBJ-NEXT: 'sh_type', 0x00000001
-@ OBJ-NEXT: 'sh_flags', 0x00000006
-@ OBJ-NEXT: 'sh_addr', 0x00000000
-@ OBJ-NEXT: 'sh_offset', 0x00000034
-@ OBJ-NEXT: 'sh_size', 0x00000008
-@ OBJ-NEXT: 'sh_link', 0x00000000
-@ OBJ-NEXT: 'sh_info', 0x00000000
-@ OBJ-NEXT: 'sh_addralign', 0x00000004
-@ OBJ-NEXT: 'sh_entsize', 0x00000000
-@ OBJ-NEXT: '_section_data', 'f00f0fe3 f40f4fe3'
-
-@ OBJ: Relocation 0
-@ OBJ-NEXT: 'r_offset', 0x00000000
-@ OBJ-NEXT: 'r_sym'
-@ OBJ-NEXT: 'r_type', 0x2d
-
-@ OBJ: Relocation 1
-@ OBJ-NEXT: 'r_offset', 0x00000004
-@ OBJ-NEXT: 'r_sym'
-@ OBJ-NEXT: 'r_type', 0x2e
-
+@ OBJ: Section {
+@ OBJ: Name: .text
+@ OBJ-NEXT: Type: SHT_PROGBITS
+@ OBJ-NEXT: Flags [ (0x6)
+@ OBJ-NEXT: SHF_ALLOC
+@ OBJ-NEXT: SHF_EXECINSTR
+@ OBJ-NEXT: ]
+@ OBJ-NEXT: Address: 0x0
+@ OBJ-NEXT: Offset: 0x34
+@ OBJ-NEXT: Size: 8
+@ OBJ-NEXT: Link: 0
+@ OBJ-NEXT: Info: 0
+@ OBJ-NEXT: AddressAlignment: 4
+@ OBJ-NEXT: EntrySize: 0
+@ OBJ-NEXT: Relocations [
+@ OBJ-NEXT: 0x0 R_ARM_MOVW_PREL_NC
+@ OBJ-NEXT: 0x4 R_ARM_MOVT_PREL
+@ OBJ-NEXT: ]
+@ OBJ-NEXT: SectionData (
+@ OBJ-NEXT: 0000: F00F0FE3 F40F4FE3
+@ OBJ-NEXT: )
diff --git a/test/MC/ARM/elf-reloc-01.ll b/test/MC/ARM/elf-reloc-01.ll
index 3ebd7c6..9b5dbd9 100644
--- a/test/MC/ARM/elf-reloc-01.ll
+++ b/test/MC/ARM/elf-reloc-01.ll
@@ -1,7 +1,7 @@
;; RUN: llc -mtriple=armv7-linux-gnueabi -O3 \
;; RUN: -mcpu=cortex-a8 -mattr=-neon -mattr=+vfp2 -arm-reserve-r9 \
;; RUN: -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s
+;; RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
;; FIXME: This file needs to be in .s form!
;; The args to llc are there to constrain the codegen only.
@@ -60,11 +60,8 @@ bb3: ; preds = %bb, %entry
declare void @exit(i32) noreturn nounwind
-;; OBJ: Relocation 1
-;; OBJ-NEXT: 'r_offset',
-;; OBJ-NEXT: 'r_sym', 0x000007
-;; OBJ-NEXT: 'r_type', 0x2b
-
-;; OBJ: Symbol 7
-;; OBJ-NEXT: '_MergedGlobals'
-;; OBJ-NEXT: 'st_value', 0x00000010
+; OBJ: Relocations [
+; OBJ: Section (1) .text {
+; OBJ: 0x{{[0-9,A-F]+}} R_ARM_MOVW_ABS_NC _MergedGlobals
+; OBJ: }
+; OBJ: ]
diff --git a/test/MC/ARM/elf-reloc-02.ll b/test/MC/ARM/elf-reloc-02.ll
index 6b6b03c..f021764 100644
--- a/test/MC/ARM/elf-reloc-02.ll
+++ b/test/MC/ARM/elf-reloc-02.ll
@@ -1,7 +1,7 @@
;; RUN: llc -mtriple=armv7-linux-gnueabi -O3 \
;; RUN: -mcpu=cortex-a8 -mattr=-neon -mattr=+vfp2 -arm-reserve-r9 \
;; RUN: -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s
+;; RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
;; FIXME: This file needs to be in .s form!
;; The args to llc are there to constrain the codegen only.
@@ -41,10 +41,8 @@ declare i32 @write(...)
declare void @exit(i32) noreturn nounwind
-;; OBJ: Relocation 0
-;; OBJ-NEXT: 'r_offset',
-;; OBJ-NEXT: 'r_sym', 0x000005
-;; OBJ-NEXT: 'r_type', 0x2b
-
-;; OBJ: Symbol 5
-;; OBJ-NEXT: '.L.str'
+;; OBJ: Relocations [
+;; OBJ: Section (1) .text {
+;; OBJ-NEXT: 0x{{[0-9,A-F]+}} R_ARM_MOVW_ABS_NC .L.str
+;; OBJ: }
+;; OBJ: ]
diff --git a/test/MC/ARM/elf-reloc-03.ll b/test/MC/ARM/elf-reloc-03.ll
index 87f91c1..ac46e69 100644
--- a/test/MC/ARM/elf-reloc-03.ll
+++ b/test/MC/ARM/elf-reloc-03.ll
@@ -1,7 +1,7 @@
;; RUN: llc -mtriple=armv7-linux-gnueabi -O3 \
;; RUN: -mcpu=cortex-a8 -mattr=-neon -mattr=+vfp2 -arm-reserve-r9 \
;; RUN: -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s
+;; RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
;; FIXME: This file needs to be in .s form!
;; The args to llc are there to constrain the codegen only.
@@ -88,10 +88,8 @@ entry:
declare void @exit(i32) noreturn nounwind
-;; OBJ: Relocation 1
-;; OBJ-NEXT: 'r_offset',
-;; OBJ-NEXT: 'r_sym', 0x000010
-;; OBJ-NEXT: 'r_type', 0x2b
-
-;; OBJ: Symbol 16
-;; OBJ-NEXT: 'vtable'
+;; OBJ: Relocations [
+;; OBJ: Section (1) .text {
+;; OBJ: 0x{{[0-9,A-F]+}} R_ARM_MOVW_ABS_NC vtable
+;; OBJ: }
+;; OBJ: ]
diff --git a/test/MC/ARM/elf-reloc-condcall.s b/test/MC/ARM/elf-reloc-condcall.s
index 3fafb43..612942f 100644
--- a/test/MC/ARM/elf-reloc-condcall.s
+++ b/test/MC/ARM/elf-reloc-condcall.s
@@ -1,33 +1,18 @@
// RUN: llvm-mc -triple=armv7-linux-gnueabi -filetype=obj %s -o - | \
-// RUN: elf-dump | FileCheck -check-prefix=OBJ %s
+// RUN: llvm-readobj -r | FileCheck -check-prefix=OBJ %s
bleq some_label
bl some_label
blx some_label
beq some_label
b some_label
-// OBJ: .rel.text
-// OBJ: 'r_offset', 0x00000000
-// OBJ-NEXT: 'r_sym', 0x000005
-// OBJ-NEXT: 'r_type', 0x1d
-
-// OBJ: 'r_offset', 0x00000004
-// OBJ-NEXT: 'r_sym', 0x000005
-// OBJ-NEXT: 'r_type', 0x1c
-
-// OBJ: 'r_offset', 0x00000008
-// OBJ-NEXT: 'r_sym', 0x000005
-// OBJ-NEXT: 'r_type', 0x1c
-
-// OBJ: 'r_offset', 0x0000000c
-// OBJ-NEXT: 'r_sym', 0x000005
-// OBJ-NEXT: 'r_type', 0x1d
-
-// OBJ: 'r_offset', 0x00000010
-// OBJ-NEXT: 'r_sym', 0x000005
-// OBJ-NEXT: 'r_type', 0x1d
-
-// OBJ: .symtab
-// OBJ: Symbol 5
-// OBJ-NEXT: some_label
+// OBJ: Relocations [
+// OBJ-NEXT: Section (1) .text {
+// OBJ-NEXT: 0x0 R_ARM_JUMP24 some_label 0x0
+// OBJ-NEXT: 0x4 R_ARM_CALL some_label 0x0
+// OBJ-NEXT: 0x8 R_ARM_CALL some_label 0x0
+// OBJ-NEXT: 0xC R_ARM_JUMP24 some_label 0x0
+// OBJ-NEXT: 0x10 R_ARM_JUMP24 some_label 0x0
+// OBJ-NEXT: }
+// OBJ-NEXT: ]
diff --git a/test/MC/ARM/elf-thumbfunc-reloc.ll b/test/MC/ARM/elf-thumbfunc-reloc.ll
index b2f253d..e7d2c34 100644
--- a/test/MC/ARM/elf-thumbfunc-reloc.ll
+++ b/test/MC/ARM/elf-thumbfunc-reloc.ll
@@ -1,5 +1,5 @@
; RUN: llc %s -mtriple=thumbv7-linux-gnueabi -relocation-model=pic \
-; RUN: -filetype=obj -o - | elf-dump --dump-section-data | \
+; RUN: -filetype=obj -o - | llvm-readobj -s -sd -r -t | \
; RUN: FileCheck %s
; FIXME: This file needs to be in .s form!
@@ -22,16 +22,20 @@ entry:
; make sure that bl 0 <foo> (fff7feff) is correctly encoded
-; CHECK: '_section_data', '704700bf 2de90048 fff7feff bde80088'
-
-; Offset Info Type Sym.Value Sym. Name
-; 00000008 0000070a R_ARM_THM_CALL 00000001 foo
-; CHECK: Relocation 0
-; CHECK-NEXT: 'r_offset', 0x00000008
-; CHECK-NEXT: 'r_sym', 0x000009
-; CHECK-NEXT: 'r_type', 0x0a
+; CHECK: Sections [
+; CHECK: SectionData (
+; CHECK: 0000: 704700BF 2DE90048 FFF7FEFF BDE80088
+; CHECK: )
+; CHECK: ]
+
+; CHECK: Relocations [
+; CHECK-NEXT: Section (1) .text {
+; CHECK-NEXT: 0x8 R_ARM_THM_CALL foo 0x0
+; CHECK-NEXT: }
+; CHECK-NEXT: ]
; make sure foo is thumb function: bit 0 = 1
-; CHECK: Symbol 9
-; CHECK-NEXT: 'foo'
-; CHECK-NEXT: 'st_value', 0x00000001
+; CHECK: Symbols [
+; CHECK: Symbol {
+; CHECK: Name: foo
+; CHECK-NEXT: Value: 0x1
diff --git a/test/MC/ARM/elf-thumbfunc-reloc.s b/test/MC/ARM/elf-thumbfunc-reloc.s
index 4a311dd..87a26d8 100644
--- a/test/MC/ARM/elf-thumbfunc-reloc.s
+++ b/test/MC/ARM/elf-thumbfunc-reloc.s
@@ -1,6 +1,6 @@
@@ test st_value bit 0 of thumb function
@ RUN: llvm-mc %s -triple=arm-freebsd-eabi -filetype=obj -o - | \
-@ RUN: elf-dump | FileCheck %s
+@ RUN: llvm-readobj -r | FileCheck %s
.syntax unified
@@ -17,7 +17,8 @@ f:
pop {r7, pc}
@@ make sure an R_ARM_THM_CALL relocation is generated for the call to g
-@CHECK: ('_relocations', [
-@CHECK: (('r_offset', 0x00000004)
-@CHECK-NEXT: ('r_sym', 0x{{[0-9a-fA-F]+}})
-@CHECK-NEXT: ('r_type', 0x0a)
+@CHECK: Relocations [
+@CHECK-NEXT: Section (1) .text {
+@CHECK-NEXT: 0x4 R_ARM_THM_CALL g 0x0
+@CHECK-NEXT: }
+@CHECK-NEXT: ]
diff --git a/test/MC/ARM/elf-thumbfunc.s b/test/MC/ARM/elf-thumbfunc.s
index 91b2eee..26f5f0b 100644
--- a/test/MC/ARM/elf-thumbfunc.s
+++ b/test/MC/ARM/elf-thumbfunc.s
@@ -1,6 +1,6 @@
@@ test st_value bit 0 of thumb function
@ RUN: llvm-mc %s -triple=thumbv7-linux-gnueabi -filetype=obj -o - | \
-@ RUN: elf-dump | FileCheck %s
+@ RUN: llvm-readobj -t | FileCheck %s
.syntax unified
.text
.globl foo
@@ -12,9 +12,9 @@ foo:
bx lr
@@ make sure foo is thumb function: bit 0 = 1 (st_value)
-@CHECK: Symbol 5
-@CHECK-NEXT: 'st_name', 0x00000001
-@CHECK-NEXT: 'st_value', 0x00000001
-@CHECK-NEXT: 'st_size', 0x00000000
-@CHECK-NEXT: 'st_bind', 0x1
-@CHECK-NEXT: 'st_type', 0x2
+@CHECK: Symbol {
+@CHECK: Name: foo
+@CHECK-NEXT: Value: 0x1
+@CHECK-NEXT: Size: 0
+@CHECK-NEXT: Binding: Global
+@CHECK-NEXT: Type: Function
diff --git a/test/MC/ARM/invalid-hint-arm.s b/test/MC/ARM/invalid-hint-arm.s
new file mode 100644
index 0000000..e0cd97a
--- /dev/null
+++ b/test/MC/ARM/invalid-hint-arm.s
@@ -0,0 +1,7 @@
+@ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 < %s 2>&1 | FileCheck %s
+
+hint #5
+hint #100
+
+@ CHECK: error: immediate operand must be in the range [0,4]
+@ CHECK: error: immediate operand must be in the range [0,4]
diff --git a/test/MC/ARM/invalid-hint-thumb.s b/test/MC/ARM/invalid-hint-thumb.s
new file mode 100644
index 0000000..fd0a761
--- /dev/null
+++ b/test/MC/ARM/invalid-hint-thumb.s
@@ -0,0 +1,9 @@
+@ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 < %s 2>&1 | FileCheck %s
+
+hint #5
+hint.w #5
+hint #100
+
+@ CHECK: error: immediate operand must be in the range [0,4]
+@ CHECK: error: immediate operand must be in the range [0,4]
+@ CHECK: error: immediate operand must be in the range [0,4]
diff --git a/test/MC/ARM/neon-cmp-encoding.s b/test/MC/ARM/neon-cmp-encoding.s
index b3aedb8..cffbeab 100644
--- a/test/MC/ARM/neon-cmp-encoding.s
+++ b/test/MC/ARM/neon-cmp-encoding.s
@@ -174,3 +174,24 @@
@ CHECK: vcge.u16 q8, q9, q8 @ encoding: [0xf0,0x03,0x52,0xf3]
@ CHECK: vcge.u32 q8, q9, q8 @ encoding: [0xf0,0x03,0x62,0xf3]
@ CHECK: vcge.f32 q8, q9, q8 @ encoding: [0xe0,0x0e,0x42,0xf3]
+
+
+@ VACLT is an alias for VACGT w/ the source operands reversed.
+@ VACLE is an alias for VACGE w/ the source operands reversed.
+ vaclt.f32 q9, q11, q12
+ vaclt.f32 d9, d11, d12
+ vaclt.f32 q11, q12
+ vaclt.f32 d11, d12
+ vacle.f32 q9, q11, q12
+ vacle.f32 d9, d11, d12
+ vacle.f32 q11, q12
+ vacle.f32 d11, d12
+
+@ CHECK: vacgt.f32 q9, q12, q11 @ encoding: [0xf6,0x2e,0x68,0xf3]
+@ CHECK: vacgt.f32 d9, d12, d11 @ encoding: [0x1b,0x9e,0x2c,0xf3]
+@ CHECK: vacgt.f32 q11, q12, q11 @ encoding: [0xf6,0x6e,0x68,0xf3]
+@ CHECK: vacgt.f32 d11, d12, d11 @ encoding: [0x1b,0xbe,0x2c,0xf3]
+@ CHECK: vacge.f32 q9, q12, q11 @ encoding: [0xf6,0x2e,0x48,0xf3]
+@ CHECK: vacge.f32 d9, d12, d11 @ encoding: [0x1b,0x9e,0x0c,0xf3]
+@ CHECK: vacge.f32 q11, q12, q11 @ encoding: [0xf6,0x6e,0x48,0xf3]
+@ CHECK: vacge.f32 d11, d12, d11 @ encoding: [0x1b,0xbe,0x0c,0xf3]
diff --git a/test/MC/ARM/xscale-attributes.ll b/test/MC/ARM/xscale-attributes.ll
index 3ccf02b..d1e9931 100644
--- a/test/MC/ARM/xscale-attributes.ll
+++ b/test/MC/ARM/xscale-attributes.ll
@@ -2,7 +2,7 @@
; RUN: FileCheck -check-prefix=ASM %s
; RUN: llc %s -mtriple=thumbv5-linux-gnueabi -filetype=obj \
-; RUN: -mcpu=xscale -o - | elf-dump --dump-section-data | \
+; RUN: -mcpu=xscale -o - | llvm-readobj -s -sd | \
; RUN: FileCheck -check-prefix=OBJ %s
; FIXME: The OBJ test should be a .s to .o test and the ASM test should
@@ -17,15 +17,22 @@ entry:
; ASM-NEXT: .eabi_attribute 8, 1
; ASM-NEXT: .eabi_attribute 9, 1
-; OBJ: Section 4
-; OBJ-NEXT: 'sh_name', 0x0000000c
-; OBJ-NEXT: 'sh_type', 0x70000003
-; OBJ-NEXT: 'sh_flags', 0x00000000
-; OBJ-NEXT: 'sh_addr', 0x00000000
-; OBJ-NEXT: 'sh_offset', 0x00000038
-; OBJ-NEXT: 'sh_size', 0x00000020
-; OBJ-NEXT: 'sh_link', 0x00000000
-; OBJ-NEXT: 'sh_info', 0x00000000
-; OBJ-NEXT: 'sh_addralign', 0x00000001
-; OBJ-NEXT: 'sh_entsize', 0x00000000
-; OBJ-NEXT: '_section_data', '411f0000 00616561 62690001 15000000 06050801 09011401 15011703 18011901'
+; OBJ: Sections [
+; OBJ: Section {
+; OBJ: Index: 4
+; OBJ-NEXT: Name: .ARM.attributes (12)
+; OBJ-NEXT: Type: SHT_ARM_ATTRIBUTES
+; OBJ-NEXT: Flags [ (0x0)
+; OBJ-NEXT: ]
+; OBJ-NEXT: Address: 0x0
+; OBJ-NEXT: Offset: 0x38
+; OBJ-NEXT: Size: 32
+; OBJ-NEXT: Link: 0
+; OBJ-NEXT: Info: 0
+; OBJ-NEXT: AddressAlignment: 1
+; OBJ-NEXT: EntrySize: 0
+; OBJ-NEXT: SectionData (
+; OBJ-NEXT: 0000: 411F0000 00616561 62690001 15000000
+; OBJ-NEXT: 0010: 06050801 09011401 15011703 18011901
+; OBJ-NEXT: )
+; OBJ-NEXT: }
diff --git a/test/MC/AsmParser/section.s b/test/MC/AsmParser/section.s
index 5abacc7..0c3828d 100644
--- a/test/MC/AsmParser/section.s
+++ b/test/MC/AsmParser/section.s
@@ -1,5 +1,5 @@
# RUN: llvm-mc -triple i386-pc-linux-gnu -filetype=obj -o %t %s
-# RUN: elf-dump --dump-section-data < %t | FileCheck %s
+# RUN: llvm-readobj -s -sd < %t | FileCheck %s
.section test1
.byte 1
.section test2
@@ -45,63 +45,85 @@
.previous
.byte 1
.previous
-# CHECK: (('sh_name', 0x00000044) # 'test1'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK-NEXT: ('sh_flags', 0x00000000)
-# CHECK-NEXT: ('sh_addr', 0x00000000)
-# CHECK-NEXT: ('sh_offset', 0x00000034)
-# CHECK-NEXT: ('sh_size', 0x00000007)
-# CHECK-NEXT: ('sh_link', 0x00000000)
-# CHECK-NEXT: ('sh_info', 0x00000000)
-# CHECK-NEXT: ('sh_addralign', 0x00000001)
-# CHECK-NEXT: ('sh_entsize', 0x00000000)
-# CHECK-NEXT: ('_section_data', '01010101 010101')
-# CHECK-NEXT: ),
-# CHECK: (('sh_name', 0x0000003e) # 'test2'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK-NEXT: ('sh_flags', 0x00000000)
-# CHECK-NEXT: ('sh_addr', 0x00000000)
-# CHECK-NEXT: ('sh_offset', 0x0000003b)
-# CHECK-NEXT: ('sh_size', 0x00000006)
-# CHECK-NEXT: ('sh_link', 0x00000000)
-# CHECK-NEXT: ('sh_info', 0x00000000)
-# CHECK-NEXT: ('sh_addralign', 0x00000001)
-# CHECK-NEXT: ('sh_entsize', 0x00000000)
-# CHECK-NEXT: ('_section_data', '02020202 0202')
-# CHECK-NEXT: ),
-# CHECK: (('sh_name', 0x00000038) # 'test3'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK-NEXT: ('sh_flags', 0x00000000)
-# CHECK-NEXT: ('sh_addr', 0x00000000)
-# CHECK-NEXT: ('sh_offset', 0x00000041)
-# CHECK-NEXT: ('sh_size', 0x00000005)
-# CHECK-NEXT: ('sh_link', 0x00000000)
-# CHECK-NEXT: ('sh_info', 0x00000000)
-# CHECK-NEXT: ('sh_addralign', 0x00000001)
-# CHECK-NEXT: ('sh_entsize', 0x00000000)
-# CHECK-NEXT: ('_section_data', '03030303 03')
-# CHECK-NEXT: ),
-# CHECK: (('sh_name', 0x00000032) # 'test4'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK-NEXT: ('sh_flags', 0x00000000)
-# CHECK-NEXT: ('sh_addr', 0x00000000)
-# CHECK-NEXT: ('sh_offset', 0x00000046)
-# CHECK-NEXT: ('sh_size', 0x00000003)
-# CHECK-NEXT: ('sh_link', 0x00000000)
-# CHECK-NEXT: ('sh_info', 0x00000000)
-# CHECK-NEXT: ('sh_addralign', 0x00000001)
-# CHECK-NEXT: ('sh_entsize', 0x00000000)
-# CHECK-NEXT: ('_section_data', '040404')
-# CHECK-NEXT: ),
-# CHECK: (('sh_name', 0x0000002c) # 'test5'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK-NEXT: ('sh_flags', 0x00000000)
-# CHECK-NEXT: ('sh_addr', 0x00000000)
-# CHECK-NEXT: ('sh_offset', 0x00000049)
-# CHECK-NEXT: ('sh_size', 0x00000001)
-# CHECK-NEXT: ('sh_link', 0x00000000)
-# CHECK-NEXT: ('sh_info', 0x00000000)
-# CHECK-NEXT: ('sh_addralign', 0x00000001)
-# CHECK-NEXT: ('sh_entsize', 0x00000000)
-# CHECK-NEXT: ('_section_data', '05')
-# CHECK-NEXT: ),
+
+# CHECK: Sections [
+# CHECK: Section {
+# CHECK: Name: test1 (68)
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x34
+# CHECK-NEXT: Size: 7
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 1
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 01010101 010101
+# CHECK-NEXT: )
+# CHECK-NEXT: }
+# CHECK: Section {
+# CHECK: Name: test2 (62)
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x3B
+# CHECK-NEXT: Size: 6
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 1
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 02020202 0202
+# CHECK-NEXT: )
+# CHECK-NEXT: }
+# CHECK: Section {
+# CHECK: Name: test3 (56)
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x41
+# CHECK-NEXT: Size: 5
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 1
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 03030303 03
+# CHECK-NEXT: )
+# CHECK-NEXT: }
+# CHECK: Section {
+# CHECK: Name: test4 (50)
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x46
+# CHECK-NEXT: Size: 3
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 1
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 040404
+# CHECK-NEXT: )
+# CHECK-NEXT: }
+# CHECK: Section {
+# CHECK: Name: test5 (44)
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x49
+# CHECK-NEXT: Size: 1
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 1
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 05
+# CHECK-NEXT: )
+# CHECK-NEXT: }
diff --git a/test/MC/AsmParser/section_names.s b/test/MC/AsmParser/section_names.s
index 332cdbe..3883e15 100644
--- a/test/MC/AsmParser/section_names.s
+++ b/test/MC/AsmParser/section_names.s
@@ -1,5 +1,5 @@
# RUN: llvm-mc -triple i386-pc-linux-gnu -filetype=obj -o %t %s
-# RUN: elf-dump --dump-section-data < %t | FileCheck %s
+# RUN: llvm-readobj -s < %t | FileCheck %s
.section .nobits
.byte 1
.section .nobits2
@@ -30,33 +30,33 @@
.byte 1
.section .notefoo
.byte 1
-# CHECK: (('sh_name', 0x00000{{...}}) # '.nobits'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.nobits2'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.nobitsfoo'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.init_array'
-# CHECK-NEXT: ('sh_type', 0x0000000e)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.init_array2'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.init_arrayfoo'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_array'
-# CHECK-NEXT: ('sh_type', 0x0000000f)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_array2'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_arrayfoo'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_array'
-# CHECK-NEXT: ('sh_type', 0x00000010)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_array2'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_arrayfoo'
-# CHECK-NEXT: ('sh_type', 0x00000001)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.note'
-# CHECK-NEXT: ('sh_type', 0x00000007)
-# CHECK: (('sh_name', 0x00000{{...}}) # '.note2'
-# CHECK-NEXT: ('sh_type', 0x00000007)
-#CHECK: (('sh_name', 0x00000{{...}}) # '.notefoo'
-# CHECK-NEXT: ('sh_type', 0x00000007)
+# CHECK: Name: .nobits
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .nobits2
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .nobitsfoo
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .init_array
+# CHECK-NEXT: Type: SHT_INIT_ARRAY
+# CHECK: Name: .init_array2
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .init_arrayfoo
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .fini_array
+# CHECK-NEXT: Type: SHT_FINI_ARRAY
+# CHECK: Name: .fini_array2
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .fini_arrayfoo
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .preinit_array
+# CHECK-NEXT: Type: SHT_PREINIT_ARRAY
+# CHECK: Name: .preinit_array2
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .preinit_arrayfoo
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK: Name: .note
+# CHECK-NEXT: Type: SHT_NOTE
+# CHECK: Name: .note2
+# CHECK-NEXT: Type: SHT_NOTE
+# CHECK: Name: .notefoo
+# CHECK-NEXT: Type: SHT_NOTE
diff --git a/test/MC/COFF/align-nops.s b/test/MC/COFF/align-nops.s
index 2971ec6..02b4884 100644
--- a/test/MC/COFF/align-nops.s
+++ b/test/MC/COFF/align-nops.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s -o - | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -s -sd | FileCheck %s
// Test that we get optimal nops in text
.text
@@ -15,36 +15,40 @@ f0:
.long 0
.align 8
-//CHECK: Name = .text
-//CHECK-NEXT: VirtualSize
-//CHECK-NEXT: VirtualAddress
-//CHECK-NEXT: SizeOfRawData = 16
-//CHECK-NEXT: PointerToRawData
-//CHECK-NEXT: PointerToRelocations
-//CHECK-NEXT: PointerToLineNumbers
-//CHECK-NEXT: NumberOfRelocations
-//CHECK-NEXT: NumberOfLineNumbers
-//CHECK-NEXT: Charateristics = 0x60400020
-//CHECK-NEXT: IMAGE_SCN_CNT_CODE
+//CHECK: Name: .text
+//CHECK-NEXT: VirtualSize
+//CHECK-NEXT: VirtualAddress
+//CHECK-NEXT: RawDataSize: 16
+//CHECK-NEXT: PointerToRawData
+//CHECK-NEXT: PointerToRelocations
+//CHECK-NEXT: PointerToLineNumbers
+//CHECK-NEXT: RelocationCount
+//CHECK-NEXT: LineNumberCount
+//CHECK-NEXT: Characteristics [ (0x60400020)
//CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
+//CHECK-NEXT: IMAGE_SCN_CNT_CODE
//CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE
//CHECK-NEXT: IMAGE_SCN_MEM_READ
-//CHECK-NEXT: SectionData =
-//CHECK-NEXT: 00 00 00 00 0F 1F 40 00 - 00 00 00 00 0F 1F 40 00
+//CHECK-NEXT: ]
+//CHECK-NEXT: SectionData (
+//CHECK-NEXT: 0000: 00000000 0F1F4000 00000000 0F1F4000
+//CHECK-NEXT: )
-//CHECK: Name = .data
-//CHECK-NEXT: VirtualSize
-//CHECK-NEXT: VirtualAddress
-//CHECK-NEXT: SizeOfRawData = 16
-//CHECK-NEXT: PointerToRawData
-//CHECK-NEXT: PointerToRelocations
-//CHECK-NEXT: PointerToLineNumbers
-//CHECK-NEXT: NumberOfRelocations
-//CHECK-NEXT: NumberOfLineNumbers
-//CHECK-NEXT: Charateristics = 0xC0400040
-//CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
-//CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
-//CHECK-NEXT: IMAGE_SCN_MEM_READ
-//CHECK-NEXT: IMAGE_SCN_MEM_WRITE
-//CHECK-NEXT: SectionData =
-//CHECK-NEXT: 00 00 00 00 90 90 90 90 - 00 00 00 00 00 00 00 00
+//CHECK: Name: .data
+//CHECK-NEXT: VirtualSize:
+//CHECK-NEXT: VirtualAddress:
+//CHECK-NEXT: RawDataSize: 16
+//CHECK-NEXT: PointerToRawData:
+//CHECK-NEXT: PointerToRelocations:
+//CHECK-NEXT: PointerToLineNumbers:
+//CHECK-NEXT: RelocationCount:
+//CHECK-NEXT: LineNumberCount:
+//CHECK-NEXT: Characteristics [ (0xC0400040)
+//CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
+//CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
+//CHECK-NEXT: IMAGE_SCN_MEM_READ
+//CHECK-NEXT: IMAGE_SCN_MEM_WRITE
+//CHECK-NEXT: ]
+//CHECK-NEXT: SectionData (
+//CHECK-NEXT: 0000: 00000000 90909090 00000000 00000000
+//CHECK-NEXT: )
diff --git a/test/MC/COFF/basic-coff-64.s b/test/MC/COFF/basic-coff-64.s
new file mode 100644
index 0000000..89d1745
--- /dev/null
+++ b/test/MC/COFF/basic-coff-64.s
@@ -0,0 +1,137 @@
+// This test checks that the COFF object emitter works for the most basic
+// programs.
+
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
+
+.def _main;
+ .scl 2;
+ .type 32;
+ .endef
+ .text
+ .globl _main
+ .align 16, 0x90
+_main: # @main
+# BB#0: # %entry
+ subl $4, %esp
+ movl $.L_.str, (%esp)
+ call _printf
+ xorl %eax, %eax
+ addl $4, %esp
+ ret
+
+ .data
+.L_.str: # @.str
+ .asciz "Hello World"
+
+// CHECK: ImageFileHeader {
+// CHECK: Machine: IMAGE_FILE_MACHINE_AMD64
+// CHECK: SectionCount: 2
+// CHECK: TimeDateStamp: {{[0-9]+}}
+// CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}}
+// CHECK: SymbolCount: 6
+// CHECK: OptionalHeaderSize: 0
+// CHECK: Characteristics [ (0x0)
+// CHECK: ]
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Number: [[TextNum:[0-9]+]]
+// CHECK: Name: .text
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: [[TextSize:[0-9]+]]
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x{{[0-9A-F]+}}
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 2
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0x60500020)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_CODE
+// CHECK: IMAGE_SCN_MEM_EXECUTE
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_AMD64_ADDR32 .data
+// CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_AMD64_REL32 _printf
+// CHECK: ]
+// CHECK: }
+// CHECK: Section {
+// CHECK: Number: [[DataNum:[0-9]+]]
+// CHECK: Name: .data
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: [[DataSize:[0-9]+]]
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x0
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0xC0300040)
+// CHECK: IMAGE_SCN_ALIGN_4BYTES
+// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: IMAGE_SCN_MEM_WRITE
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 48656C6C 6F20576F 726C6400 |Hello World.|
+// CHECK: )
+// CHECK: }
+// CHECK: ]
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Name: .text
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: [[TextSize]]
+// CHECK: RelocationCount: 2
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: [[TextNum]]
+// CHECK: Selection: 0x0
+// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: .data
+// CHECK: Value: 0
+// CHECK: Section: .data
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: [[DataSize]]
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: [[DataNum]]
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
+// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _main
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Function
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _printf
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: ]
diff --git a/test/MC/COFF/basic-coff.s b/test/MC/COFF/basic-coff.s
index 23156b8..9b29970 100644
--- a/test/MC/COFF/basic-coff.s
+++ b/test/MC/COFF/basic-coff.s
@@ -1,8 +1,7 @@
// This test checks that the COFF object emitter works for the most basic
// programs.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
-// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
.def _main;
.scl 2;
@@ -15,119 +14,124 @@ _main: # @main
# BB#0: # %entry
subl $4, %esp
movl $L_.str, (%esp)
- calll _printf
+ call _printf
xorl %eax, %eax
addl $4, %esp
ret
.data
L_.str: # @.str
- .asciz "Hello World"
+ .asciz "Hello World"
-// CHECK: {
-// CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C)
-// CHECK: NumberOfSections = 2
-// CHECK: TimeDateStamp = {{[0-9]+}}
-// CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}}
-// CHECK: NumberOfSymbols = 6
-// CHECK: SizeOfOptionalHeader = 0
-// CHECK: Characteristics = 0x0
-// CHECK: Sections = [
-// CHECK: 1 = {
-// CHECK: Name = .text
-// CHECK: VirtualSize = 0
-// CHECK: VirtualAddress = 0
-// CHECK: SizeOfRawData = {{[0-9]+}}
-// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
-// CHECK: PointerToRelocations = 0x{{[0-9A-F]+}}
-// CHECK: PointerToLineNumbers = 0x0
-// CHECK: NumberOfRelocations = 2
-// CHECK: NumberOfLineNumbers = 0
-// CHECK: Charateristics = 0x60500020
-// CHECK: IMAGE_SCN_CNT_CODE
-// CHECK: IMAGE_SCN_ALIGN_16BYTES
-// CHECK: IMAGE_SCN_MEM_EXECUTE
-// CHECK: IMAGE_SCN_MEM_READ
-// CHECK: SectionData =
-// CHECK: Relocations = [
-// CHECK: 0 = {
-// CHECK: VirtualAddress = 0x{{[0-9A-F]+}}
-// CHECK: SymbolTableIndex = 2
-// CHECK: Type = IMAGE_REL_I386_DIR32 (6)
-// CHECK: SymbolName = .data
-// CHECK: }
-// CHECK: 1 = {
-// CHECK: VirtualAddress = 0x{{[0-9A-F]+}}
-// CHECK: SymbolTableIndex = 5
-// CHECK: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK: SymbolName = _printf
-// CHECK: }
-// CHECK: ]
-// CHECK: }
-// CHECK: 2 = {
-// CHECK: Name = .data
-// CHECK: VirtualSize = 0
-// CHECK: VirtualAddress = 0
-// CHECK: SizeOfRawData = {{[0-9]+}}
-// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
-// CHECK: PointerToRelocations = 0x0
-// CHECK: PointerToLineNumbers = 0x0
-// CHECK: NumberOfRelocations = 0
-// CHECK: NumberOfLineNumbers = 0
-// CHECK: Charateristics = 0xC0300040
-// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
-// CHECK: IMAGE_SCN_ALIGN_4BYTES
-// CHECK: IMAGE_SCN_MEM_READ
-// CHECK: IMAGE_SCN_MEM_WRITE
-// CHECK: SectionData =
-// CHECK: 48 65 6C 6C 6F 20 57 6F - 72 6C 64 00 |Hello World.|
-// CHECK: Relocations = None
-// CHECK: }
+// CHECK: ImageFileHeader {
+// CHECK: Machine: IMAGE_FILE_MACHINE_I386
+// CHECK: SectionCount: 2
+// CHECK: TimeDateStamp: {{[0-9]+}}
+// CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}}
+// CHECK: SymbolCount: 6
+// CHECK: OptionalHeaderSize: 0
+// CHECK: Characteristics [ (0x0)
// CHECK: ]
-// CHECK: Symbols = [
-// CHECK: 0 = {
-// CHECK: Name = .text
-// CHECK: Value = 0
-// CHECK: SectionNumber = 1
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
-// CHECK: NumberOfAuxSymbols = 1
-// CHECK: AuxillaryData =
-// CHECK: 15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|
-// CHECK: 00 00 |..|
-// CHECK: }
-// CHECK: 2 = {
-// CHECK: Name = .data
-// CHECK: Value = 0
-// CHECK: SectionNumber = 2
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
-// CHECK: NumberOfAuxSymbols = 1
-// CHECK: AuxillaryData =
-// CHECK: 0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|
-// CHECK: 00 00 |..|
-// CHECK: }
-// CHECK: 4 = {
-// CHECK: Name = _main
-// CHECK: Value = 0
-// CHECK: SectionNumber = 1
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_FUNCTION (2)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK: NumberOfAuxSymbols = 0
-// CHECK: AuxillaryData =
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Number: [[TextNum:[0-9]+]]
+// CHECK: Name: .text
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x{{[0-9A-F]+}}
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 2
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0x60500020)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_CODE
+// CHECK: IMAGE_SCN_MEM_EXECUTE
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_I386_DIR32 .data
+// CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_I386_REL32 _printf
+// CHECK: ]
+// CHECK: }
+// CHECK: Section {
+// CHECK: Number: [[DataNum:[0-9]+]]
+// CHECK: Name: .data
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x0
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0xC0300040)
+// CHECK: IMAGE_SCN_ALIGN_4BYTES
+// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: IMAGE_SCN_MEM_WRITE
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 48656C6C 6F20576F 726C6400 |Hello World.|
+// CHECK: )
+// CHECK: }
+// CHECK: ]
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Name: .text
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 21
+// CHECK: RelocationCount: 2
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 1
+// CHECK: Selection: 0x0
// CHECK: }
-// CHECK: 5 = {
-// CHECK: Name = _printf
-// CHECK: Value = 0
-// CHECK: SectionNumber = 0
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK: NumberOfAuxSymbols = 0
-// CHECK: AuxillaryData =
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: .data
+// CHECK: Value: 0
+// CHECK: Section: .data
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 12
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 2
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
// CHECK: }
-// CHECK: ]
-// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _main
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Function
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _printf
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: ]
diff --git a/test/MC/COFF/bss.s b/test/MC/COFF/bss.s
index 3bed13d..86294c1 100644
--- a/test/MC/COFF/bss.s
+++ b/test/MC/COFF/bss.s
@@ -1,7 +1,7 @@
// The purpose of this test is to verify that bss sections are emited correctly.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -s | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s | FileCheck %s
.bss
.globl _g0
@@ -9,7 +9,7 @@
_g0:
.long 0
-// CHECK: Name = .bss
-// CHECK-NEXT: VirtualSize = 0
-// CHECK-NEXT: VirtualAddress = 0
-// CHECK-NEXT: SizeOfRawData = 4
+// CHECK: Name: .bss
+// CHECK-NEXT: VirtualSize: 0
+// CHECK-NEXT: VirtualAddress: 0
+// CHECK-NEXT: RawDataSize: 4
diff --git a/test/MC/COFF/diff.s b/test/MC/COFF/diff.s
index aa683f2..820272a 100644
--- a/test/MC/COFF/diff.s
+++ b/test/MC/COFF/diff.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-mingw32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-mingw32 %s | llvm-readobj -s -sr -sd | FileCheck %s
.def _foobar;
.scl 2;
@@ -21,26 +21,12 @@ _rust_crate:
.long _foobar-_rust_crate
.long _foobar-_rust_crate
-// CHECK: Name = .data
-// CHECK: SectionData =
-// CHECK-NEXT: 00 00 00 00 00 00 00 00 - 1C 00 00 00 20 00 00 00 |............ ...|
-// CHECK: Relocations = [
-// CHECK-NEXT: 0 = {
-// CHECK-NEXT: VirtualAddress = 0x4
-// CHECK-NEXT: SymbolTableIndex =
-// CHECK-NEXT: Type = IMAGE_REL_I386_DIR32 (6)
-// CHECK-NEXT: SymbolName = _foobar
-// CHECK-NEXT: }
-// CHECK-NEXT: 1 = {
-// CHECK-NEXT: VirtualAddress = 0x8
-// CHECK-NEXT: SymbolTableIndex = 0
-// CHECK-NEXT: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK-NEXT: SymbolName = .text
-// CHECK-NEXT: }
-// CHECK-NEXT: 2 = {
-// CHECK-NEXT: VirtualAddress = 0xC
-// CHECK-NEXT: SymbolTableIndex = 0
-// CHECK-NEXT: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK-NEXT: SymbolName = .text
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
+// CHECK: Name: .data
+// CHECK: Relocations [
+// CHECK-NEXT: 0x4 IMAGE_REL_I386_DIR32 _foobar
+// CHECK-NEXT: 0x8 IMAGE_REL_I386_REL32 .text
+// CHECK-NEXT: 0xC IMAGE_REL_I386_REL32 .text
+// CHECK-NEXT: ]
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 00000000 00000000 1C000000 20000000
+// CHECK-NEXT: )
diff --git a/test/MC/COFF/linker-options.ll b/test/MC/COFF/linker-options.ll
new file mode 100755
index 0000000..de11941
--- /dev/null
+++ b/test/MC/COFF/linker-options.ll
@@ -0,0 +1,21 @@
+; RUN: llc -O0 -mtriple=i386-pc-win32 -filetype=asm -o - %s | FileCheck %s
+
+!0 = metadata !{ i32 6, metadata !"Linker Options",
+ metadata !{
+ metadata !{ metadata !"/DEFAULTLIB:msvcrt.lib" },
+ metadata !{ metadata !"/DEFAULTLIB:msvcrt.lib",
+ metadata !"/DEFAULTLIB:secur32.lib" },
+ metadata !{ metadata !"/with spaces" } } }
+
+!llvm.module.flags = !{ !0 }
+
+define dllexport void @foo() {
+ ret void
+}
+
+; CHECK: .section .drectve,"r"
+; CHECK: .ascii " /DEFAULTLIB:msvcrt.lib"
+; CHECK: .ascii " /DEFAULTLIB:msvcrt.lib"
+; CHECK: .ascii " /DEFAULTLIB:secur32.lib"
+; CHECK: .ascii " \"/with spaces\""
+; CHECK: .ascii " /EXPORT:_foo"
diff --git a/test/MC/COFF/module-asm.ll b/test/MC/COFF/module-asm.ll
index 9c6d00d..bf14dc6 100644
--- a/test/MC/COFF/module-asm.ll
+++ b/test/MC/COFF/module-asm.ll
@@ -1,26 +1,28 @@
; The purpose of this test is to verify that various module level assembly
; constructs work.
-; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o - | coff-dump.py | FileCheck %s
-; RUN: llc -filetype=obj -mtriple x86_64-pc-win32 %s -o - | coff-dump.py | FileCheck %s
+; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o - | llvm-readobj -s -sd | FileCheck %s
+; RUN: llc -filetype=obj -mtriple x86_64-pc-win32 %s -o - | llvm-readobj -s -sd | FileCheck %s
module asm ".text"
module asm "_foo:"
module asm " ret"
-; CHECK: Name = .text
-; CHECK-NEXT: VirtualSize = 0
-; CHECK-NEXT: VirtualAddress = 0
-; CHECK-NEXT: SizeOfRawData = {{[0-9]+}}
-; CHECK-NEXT: PointerToRawData = 0x{{[0-9A-F]+}}
-; CHECK-NEXT: PointerToRelocations = 0x{{[0-9A-F]+}}
-; CHECK-NEXT: PointerToLineNumbers = 0x0
-; CHECK-NEXT: NumberOfRelocations = 0
-; CHECK-NEXT: NumberOfLineNumbers = 0
-; CHECK-NEXT: Charateristics = 0x60300020
-; CHECK-NEXT: IMAGE_SCN_CNT_CODE
+; CHECK: Name: .text
+; CHECK-NEXT: VirtualSize: 0
+; CHECK-NEXT: VirtualAddress: 0
+; CHECK-NEXT: RawDataSize: {{[0-9]+}}
+; CHECK-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+; CHECK-NEXT: PointerToRelocations: 0x{{[0-9A-F]+}}
+; CHECK-NEXT: PointerToLineNumbers: 0x0
+; CHECK-NEXT: RelocationCount: 0
+; CHECK-NEXT: LineNumberCount: 0
+; CHECK-NEXT: Characteristics [ (0x60300020)
; CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
+; CHECK-NEXT: IMAGE_SCN_CNT_CODE
; CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE
; CHECK-NEXT: IMAGE_SCN_MEM_READ
-; CHECK-NEXT: SectionData =
-; CHECK-NEXT: C3
+; CHECK-NEXT: ]
+; CHECK-NEXT: SectionData (
+; CHECK-NEXT: 0000: C3
+; CHECK-NEXT: )
diff --git a/test/MC/COFF/relocation-imgrel.s b/test/MC/COFF/relocation-imgrel.s
new file mode 100644
index 0000000..ccd19ee
--- /dev/null
+++ b/test/MC/COFF/relocation-imgrel.s
@@ -0,0 +1,29 @@
+// COFF Image-relative relocations
+//
+// Test that we produce image-relative relocations (IMAGE_REL_I386_DIR32NB
+// and IMAGE_REL_AMD64_ADDR32NB) when accessing foo@imgrel.
+
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -r | FileCheck --check-prefix=W32 %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -r | FileCheck --check-prefix=W64 %s
+
+.data
+foo:
+ .long 1
+
+.text
+ mov foo@IMGREL(%ebx, %ecx, 4), %eax
+ mov foo@imgrel(%ebx, %ecx, 4), %eax
+
+// W32: Relocations [
+// W32-NEXT: Section (1) .text {
+// W32-NEXT: 0x3 IMAGE_REL_I386_DIR32NB foo
+// W32-NEXT: 0xA IMAGE_REL_I386_DIR32NB foo
+// W32-NEXT: }
+// W32-NEXT: ]
+
+// W64: Relocations [
+// W64-NEXT: Section (1) .text {
+// W64-NEXT: 0x4 IMAGE_REL_AMD64_ADDR32NB foo
+// W64-NEXT: 0xC IMAGE_REL_AMD64_ADDR32NB foo
+// W64-NEXT: }
+// W64-NEXT: ]
diff --git a/test/MC/COFF/secrel-variant.s b/test/MC/COFF/secrel-variant.s
new file mode 100644
index 0000000..1061bd4
--- /dev/null
+++ b/test/MC/COFF/secrel-variant.s
@@ -0,0 +1,19 @@
+// COFF section-relative relocations
+
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -r | FileCheck %s
+
+.data
+values:
+ .long 1
+ .long 0
+
+.text
+ movq values@SECREL32(%rax), %rcx
+ movq values@SECREL32+8(%rax), %rax
+
+// CHECK: Relocations [
+// CHECK-NEXT: Section (1) .text {
+// CHECK-NEXT: 0x3 IMAGE_REL_AMD64_SECREL values
+// CHECK-NEXT: 0xA IMAGE_REL_AMD64_SECREL values
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/COFF/secrel32.s b/test/MC/COFF/secrel32.s
index ce148db..deadfe0 100644
--- a/test/MC/COFF/secrel32.s
+++ b/test/MC/COFF/secrel32.s
@@ -1,14 +1,10 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -s -sr | FileCheck %s
// check that we produce the correct relocation for .secrel32
Lfoo:
.secrel32 Lfoo
-// CHECK: Relocations = [
-// CHECK-NEXT: 0 = {
-// CHECK-NEXT: VirtualAddress = 0x0
-// CHECK-NEXT: SymbolTableIndex = 0
-// CHECK-NEXT: Type = IMAGE_REL_I386_SECREL (11)
-// CHECK-NEXT: SymbolName = .text
-// CHECK-NEXT: }
+// CHECK: Relocations [
+// CHECK-NEXT: 0x0 IMAGE_REL_I386_SECREL .text
+// CHECK-NEXT: ]
diff --git a/test/MC/COFF/seh-section.s b/test/MC/COFF/seh-section.s
index 802cba5..7f05cc3 100644
--- a/test/MC/COFF/seh-section.s
+++ b/test/MC/COFF/seh-section.s
@@ -1,24 +1,26 @@
// This test ensures that, if the section containing a function has a suffix
// (e.g. .text$foo), its unwind info section also has a suffix (.xdata$foo).
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s -sd | FileCheck %s
// XFAIL: *
-// CHECK: Name = .xdata$foo
+// CHECK: Name: .xdata$foo
// CHECK-NEXT: VirtualSize
// CHECK-NEXT: VirtualAddress
-// CHECK-NEXT: SizeOfRawData = 8
+// CHECK-NEXT: RawDataSize: 8
// CHECK-NEXT: PointerToRawData
// CHECK-NEXT: PointerToRelocations
// CHECK-NEXT: PointerToLineNumbers
-// CHECK-NEXT: NumberOfRelocations = 0
-// CHECK-NEXT: NumberOfLineNumbers = 0
-// CHECK-NEXT: Charateristics
-// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK-NEXT: RelocationCount: 0
+// CHECK-NEXT: LineNumberCount: 0
+// CHECK-NEXT: Characteristics [
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
+// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
// CHECK-NEXT: IMAGE_SCN_MEM_READ
// CHECK-NEXT: IMAGE_SCN_MEM_WRITE
-// CHECK-NEXT: SectionData
-// CHECK-NEXT: 01 05 02 00 05 50 04 02
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 01050200 05500402
+// CHECK-NEXT: )
.section .text$foo,"x"
.globl foo
diff --git a/test/MC/COFF/seh.s b/test/MC/COFF/seh.s
index 3f72805..bef425e 100644
--- a/test/MC/COFF/seh.s
+++ b/test/MC/COFF/seh.s
@@ -1,24 +1,105 @@
// This test checks that the SEH directives emit the correct unwind data.
-// RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | coff-dump.py | FileCheck %s
-// CHECK: Name = .xdata
-// CHECK-NEXT: VirtualSize
-// CHECK-NEXT: VirtualAddress
-// CHECK-NEXT: SizeOfRawData = 52
-// CHECK-NEXT: PointerToRawData
-// CHECK-NEXT: PointerToRelocations
-// CHECK-NEXT: PointerToLineNumbers
-// CHECK-NEXT: NumberOfRelocations = 4
-// CHECK-NEXT: NumberOfLineNumbers = 0
-// CHECK-NEXT: Charateristics
-// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
-// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
-// CHECK-NEXT: IMAGE_SCN_MEM_READ
-// CHECK-NEXT: SectionData
-// CHECK-NEXT: 09 12 08 03 00 03 0F 30 - 0E 88 00 00 09 64 02 00
-// CHECK-NEXT: 04 22 00 1A 00 00 00 00 - 00 00 00 00 21 00 00 00
-// CHECK-NEXT: 00 00 00 00 1B 00 00 00 - 00 00 00 00 01 00 00 00
-// CHECK-NEXT: 00 00 00 00
+// TODO: Expected fail because SET_FPREG has a wrong offset.
+// XFAIL: *
+// RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -s -u | FileCheck %s
+
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK: RelocationCount: 0
+// CHECK: Characteristics [
+// CHECK-NEXT: ALIGN_4BYTES
+// CHECK-NEXT: CNT_CODE
+// CHECK-NEXT: MEM_EXECUTE
+// CHECK-NEXT: MEM_READ
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .xdata
+// CHECK: RawDataSize: 52
+// CHECK: RelocationCount: 4
+// CHECK: Characteristics [
+// CHECK-NEXT: ALIGN_4BYTES
+// CHECK-NEXT: CNT_INITIALIZED_DATA
+// CHECK-NEXT: MEM_READ
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .pdata
+// CHECK: RelocationCount: 9
+// CHECK: Characteristics [
+// CHECK-NEXT: ALIGN_4BYTES
+// CHECK-NEXT: CNT_INITIALIZED_DATA
+// CHECK-NEXT: MEM_READ
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+
+// CHECK: UnwindInformation [
+// CHECK-NEXT: RuntimeFunction {
+// CHECK-NEXT: StartAddress: [[CodeSect1:[^ ]+]] [[BeginDisp1:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: EndAddress: [[CodeSect1]] [[EndDisp1:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: UnwindInfoAddress:
+// CHECK-NEXT: UnwindInfo {
+// CHECK-NEXT: Version: 1
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ExceptionHandler
+// CHECK-NEXT: ]
+// CHECK-NEXT: PrologSize: 18
+// CHECK-NEXT: FrameRegister: RBX
+// CHECK-NEXT: FrameOffset: 0x0
+// CHECK-NEXT: UnwindCodeCount: 8
+// CHECK-NEXT: UnwindCodes [
+// CHECK-NEXT: 0x12: SET_FPREG reg=RBX, offset=0x0
+// CHECK-NEXT: 0x0F: PUSH_NONVOL reg=RBX
+// CHECK-NEXT: 0x0E: SAVE_XMM128 reg=XMM8, offset=0x0
+// CHECK-NEXT: 0x09: SAVE_NONVOL reg=RSI, offset=0x10
+// CHECK-NEXT: 0x04: ALLOC_SMALL size=24
+// CHECK-NEXT: 0x00: PUSH_MACHFRAME errcode=yes
+// CHECK-NEXT: ]
+// CHECK-NEXT: Handler: __C_specific_handler
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: RuntimeFunction {
+// CHECK-NEXT: StartAddress: [[CodeSect2:[^ ]+]] [[BeginDisp2:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: EndAddress: [[CodeSect2]] [[BeginDisp2:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: UnwindInfoAddress:
+// CHECK-NEXT: UnwindInfo {
+// CHECK-NEXT: Version: 1
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ChainInfo
+// CHECK-NEXT: ]
+// CHECK-NEXT: PrologSize: 0
+// CHECK-NEXT: FrameRegister: -
+// CHECK-NEXT: FrameOffset: -
+// CHECK-NEXT: UnwindCodeCount: 0
+// CHECK-NEXT: UnwindCodes [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Chained {
+// CHECK-NEXT: StartAddress: [[CodeSect1]] [[BeginDisp1]]
+// CHECK-NEXT: EndAddress: [[CodeSect1]] [[EndDisp1]]
+// CHECK-NEXT: UnwindInfoAddress:
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: RuntimeFunction {
+// CHECK-NEXT: StartAddress: [[CodeSect3:[^ ]+]] [[BeginDisp3:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: EndAddress: [[CodeSect3]] [[BeginDisp3:(\+0x[A-F0-9]+)?]]
+// CHECK-NEXT: UnwindInfoAddress:
+// CHECK-NEXT: UnwindInfo {
+// CHECK-NEXT: Version: 1
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: PrologSize: 0
+// CHECK-NEXT: FrameRegister: -
+// CHECK-NEXT: FrameOffset: -
+// CHECK-NEXT: UnwindCodeCount: 0
+// CHECK-NEXT: UnwindCodes [
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
.text
.globl func
diff --git a/test/MC/COFF/simple-fixups.s b/test/MC/COFF/simple-fixups.s
index 4c9b4d4..2a74f21 100644
--- a/test/MC/COFF/simple-fixups.s
+++ b/test/MC/COFF/simple-fixups.s
@@ -1,8 +1,8 @@
// The purpose of this test is to verify that we do not produce unneeded
// relocations when symbols are in the same section and we know their offset.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
-// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -s | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s | FileCheck %s
.def _foo;
.scl 2;
@@ -41,10 +41,9 @@ _baz: # @baz
# BB#0: # %e
subl $4, %esp
Ltmp0:
- calll _baz
+ call _baz
addl $4, %esp
ret
-// CHECK: Sections = [
-// CHECK-NOT: NumberOfRelocations = {{[^0]}}
-// CHECK: Symbols = [
+// CHECK: Sections [
+// CHECK-NOT: RelocationCount: {{[^0]}}
diff --git a/test/MC/COFF/symbol-alias.s b/test/MC/COFF/symbol-alias.s
index 4b1772c..ccada37 100644
--- a/test/MC/COFF/symbol-alias.s
+++ b/test/MC/COFF/symbol-alias.s
@@ -1,9 +1,9 @@
// The purpose of this test is to verify that symbol aliases
-// (@foo = alias <type> @bar) generate the correct entries in the symbol table.
+// (@foo: alias <type> @bar) generate the correct entries in the symbol table.
// They should be identical except for the name.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -t | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -t | FileCheck %s
.def _foo;
.scl 2;
@@ -31,43 +31,43 @@ _bar_alias_alias = _bar_alias
.globl _bar_alias
_bar_alias = _bar
-// CHECK: Name = {{_?}}foo
-// CHECK-NEXT: Value = [[FOO_VALUE:.*$]]
-// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER:.*$]]
-// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE:.*$]]
-// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE:.*$]]
-// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS:.*$]]
-// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS:.*$]]
+// CHECK: Name: {{_?}}foo
+// CHECK-NEXT: Value: [[FOO_VALUE:.*$]]
+// CHECK-NEXT: Section: [[FOO_SECTION_NUMBER:.*$]]
+// CHECK-NEXT: BaseType: [[FOO_SIMPLE_TYPE:.*$]]
+// CHECK-NEXT: ComplexType: [[FOO_COMPLEX_TYPE:.*$]]
+// CHECK-NEXT: StorageClass: [[FOO_STORAGE_CLASS:.*$]]
+// CHECK-NEXT: AuxSymbolCount: [[FOO_NUMBER_OF_AUX_SYMBOLS:.*$]]
-// CHECK: Name = {{_?}}bar
-// CHECK-NEXT: Value = [[BAR_VALUE:.*$]]
-// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER:.*$]]
-// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE:.*$]]
-// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE:.*$]]
-// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS:.*$]]
-// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS:.*$]]
+// CHECK: Name: {{_?}}bar
+// CHECK-NEXT: Value: [[BAR_VALUE:.*$]]
+// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER:.*$]]
+// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE:.*$]]
+// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE:.*$]]
+// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS:.*$]]
+// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS:.*$]]
-// CHECK: Name = {{_?}}foo_alias
-// CHECK-NEXT: Value = [[FOO_VALUE]]
-// CHECK-NEXT: SectionNumber = [[FOO_SECTION_NUMBER]]
-// CHECK-NEXT: SimpleType = [[FOO_SIMPLE_TYPE]]
-// CHECK-NEXT: ComplexType = [[FOO_COMPLEX_TYPE]]
-// CHECK-NEXT: StorageClass = [[FOO_STORAGE_CLASS]]
-// CHECK-NEXT: NumberOfAuxSymbols = [[FOO_NUMBER_OF_AUX_SYMBOLS]]
+// CHECK: Name: {{_?}}foo_alias
+// CHECK-NEXT: Value: [[FOO_VALUE]]
+// CHECK-NEXT: Section: [[FOO_SECTION_NUMBER]]
+// CHECK-NEXT: BaseType: [[FOO_SIMPLE_TYPE]]
+// CHECK-NEXT: ComplexType: [[FOO_COMPLEX_TYPE]]
+// CHECK-NEXT: StorageClass: [[FOO_STORAGE_CLASS]]
+// CHECK-NEXT: AuxSymbolCount: [[FOO_NUMBER_OF_AUX_SYMBOLS]]
-// CHECK: Name = {{_?}}bar_alias_alias
-// CHECK-NEXT: Value = [[BAR_VALUE]]
-// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER]]
-// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE]]
-// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE]]
-// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS]]
-// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS]]
+// CHECK: Name: {{_?}}bar_alias_alias
+// CHECK-NEXT: Value: [[BAR_VALUE]]
+// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER]]
+// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE]]
+// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE]]
+// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS]]
+// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS]]
-// CHECK: Name = {{_?}}bar_alias
-// CHECK-NEXT: Value = [[BAR_VALUE]]
-// CHECK-NEXT: SectionNumber = [[BAR_SECTION_NUMBER]]
-// CHECK-NEXT: SimpleType = [[BAR_SIMPLE_TYPE]]
-// CHECK-NEXT: ComplexType = [[BAR_COMPLEX_TYPE]]
-// CHECK-NEXT: StorageClass = [[BAR_STORAGE_CLASS]]
-// CHECK-NEXT: NumberOfAuxSymbols = [[BAR_NUMBER_OF_AUX_SYMBOLS]]
+// CHECK: Name: {{_?}}bar_alias
+// CHECK-NEXT: Value: [[BAR_VALUE]]
+// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER]]
+// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE]]
+// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE]]
+// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS]]
+// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS]]
diff --git a/test/MC/COFF/symbol-fragment-offset-64.s b/test/MC/COFF/symbol-fragment-offset-64.s
new file mode 100644
index 0000000..b824470
--- /dev/null
+++ b/test/MC/COFF/symbol-fragment-offset-64.s
@@ -0,0 +1,168 @@
+// The purpose of this test is to see if the COFF object writer is emitting the
+// proper relocations for multiple pieces of data in a single data fragment.
+
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
+
+.def _main;
+ .scl 2;
+ .type 32;
+ .endef
+ .text
+ .globl _main
+ .align 16, 0x90
+_main: # @main
+# BB#0: # %entry
+ subl $4, %esp
+ movl $.L_.str0, (%esp)
+ callq _printf
+ movl $.L_.str1, (%esp)
+ callq _puts
+ movl $.L_.str2, (%esp)
+ callq _puts
+ xorl %eax, %eax
+ addl $4, %esp
+ ret
+
+ .data
+.L_.str0: # @.str0
+ .asciz "Hello "
+
+.L_.str1: # @.str1
+ .asciz "World!"
+
+ .align 16 # @.str2
+.L_.str2:
+ .asciz "I'm The Last Line."
+
+// CHECK: {
+// CHECK: Machine: IMAGE_FILE_MACHINE_AMD64
+// CHECK: SectionCount: 2
+// CHECK: TimeDateStamp: {{[0-9]+}}
+// CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}}
+// CHECK: SymbolCount: 7
+// CHECK: OptionalHeaderSize: 0
+// CHECK: Characteristics [ (0x0)
+// CHECK: ]
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Number: 1
+// CHECK: Name: .text
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x{{[0-9A-F]+}}
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 6
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0x60500020)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_CODE
+// CHECK: IMAGE_SCN_MEM_EXECUTE
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: 0x7 IMAGE_REL_AMD64_ADDR32 .data
+// CHECK: 0xC IMAGE_REL_AMD64_REL32 _printf
+// CHECK: 0x14 IMAGE_REL_AMD64_ADDR32 .data
+// CHECK: 0x19 IMAGE_REL_AMD64_REL32 _puts
+// CHECK: 0x21 IMAGE_REL_AMD64_ADDR32 .data
+// CHECK: 0x26 IMAGE_REL_AMD64_REL32 _puts
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 83EC0467 C7042400 000000E8 00000000
+// CHECK: 0010: 67C70424 07000000 E8000000 0067C704
+// CHECK: 0020: 24100000 00E80000 000031C0 83C404C3
+// CHECK: )
+// CHECK: }
+// CHECK: Section {
+// CHECK: Number: 2
+// CHECK: Name: .data
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x0
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0xC0500040)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: IMAGE_SCN_MEM_WRITE
+// CHECK: Relocations [
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 48656C6C 6F200057 6F726C64 21000000 |Hello .World!...|
+// CHECK: 0010: 49276D20 54686520 4C617374 204C696E |I'm The Last Lin|
+// CHECK: 0020: 652E00 |e..|
+// CHECK: )
+// CHECK: }
+// CHECK: ]
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Name: .text
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 48
+// CHECK: RelocationCount: 6
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 1
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
+// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: .data
+// CHECK: Value: 0
+// CHECK: Section: .data
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 35
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 2
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
+// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _main
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Function
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _printf
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _puts
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: ]
diff --git a/test/MC/COFF/symbol-fragment-offset.s b/test/MC/COFF/symbol-fragment-offset.s
index 1df8baa..71b1703 100644
--- a/test/MC/COFF/symbol-fragment-offset.s
+++ b/test/MC/COFF/symbol-fragment-offset.s
@@ -1,8 +1,7 @@
// The purpose of this test is to see if the COFF object writer is emitting the
// proper relocations for multiple pieces of data in a single data fragment.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
-// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
.def _main;
.scl 2;
@@ -36,152 +35,134 @@ L_.str2:
.asciz "I'm The Last Line."
// CHECK: {
-// CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C)
-// CHECK: NumberOfSections = 2
-// CHECK: TimeDateStamp = {{[0-9]+}}
-// CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}}
-// CHECK: NumberOfSymbols = 7
-// CHECK: SizeOfOptionalHeader = 0
-// CHECK: Characteristics = 0x0
-// CHECK: Sections = [
-// CHECK: 1 = {
-// CHECK: Name = .text
-// CHECK: VirtualSize = 0
-// CHECK: VirtualAddress = 0
-// CHECK: SizeOfRawData = {{[0-9]+}}
-// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
-// CHECK: PointerToRelocations = 0x{{[0-9A-F]+}}
-// CHECK: PointerToLineNumbers = 0x0
-// CHECK: NumberOfRelocations = 6
-// CHECK: NumberOfLineNumbers = 0
-// CHECK: Charateristics = 0x60500020
-// CHECK: IMAGE_SCN_CNT_CODE
-// CHECK: IMAGE_SCN_ALIGN_16BYTES
-// CHECK: IMAGE_SCN_MEM_EXECUTE
-// CHECK: IMAGE_SCN_MEM_READ
-// CHECK: SectionData =
-// CHECK: 83 EC 04 C7 04 24 00 00 - 00 00 E8 00 00 00 00 C7 |.....$..........|
-// CHECK: 04 24 07 00 00 00 E8 00 - 00 00 00 C7 04 24 10 00 |.$...........$..|
-// CHECK: 00 00 E8 00 00 00 00 31 - C0 83 C4 04 C3 |.......1.....|
-// CHECK: Relocations = [
-// CHECK: 0 = {
-// CHECK: VirtualAddress = 0x6
-// CHECK: SymbolTableIndex = 2
-// CHECK: Type = IMAGE_REL_I386_DIR32 (6)
-// CHECK: SymbolName = .data
-// CHECK: }
-// CHECK: 1 = {
-// CHECK: VirtualAddress = 0xB
-// CHECK: SymbolTableIndex = 5
-// CHECK: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK: SymbolName = _printf
-// CHECK: }
-// CHECK: 2 = {
-// CHECK: VirtualAddress = 0x12
-// CHECK: SymbolTableIndex = 2
-// CHECK: Type = IMAGE_REL_I386_DIR32 (6)
-// CHECK: SymbolName = .data
-// CHECK: }
-// CHECK: 3 = {
-// CHECK: VirtualAddress = 0x17
-// CHECK: SymbolTableIndex = 6
-// CHECK: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK: SymbolName = _puts
-// CHECK: }
-// CHECK: 4 = {
-// CHECK: VirtualAddress = 0x1E
-// CHECK: SymbolTableIndex = 2
-// CHECK: Type = IMAGE_REL_I386_DIR32 (6)
-// CHECK: SymbolName = .data
-// CHECK: }
-// CHECK: 5 = {
-// CHECK: VirtualAddress = 0x23
-// CHECK: SymbolTableIndex = 6
-// CHECK: Type = IMAGE_REL_I386_REL32 (20)
-// CHECK: SymbolName = _puts
-// CHECK: }
-// CHECK: ]
-// CHECK: }
-// CHECK: 2 = {
-// CHECK: Name = .data
-// CHECK: VirtualSize = 0
-// CHECK: VirtualAddress = 0
-// CHECK: SizeOfRawData = {{[0-9]+}}
-// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
-// CHECK: PointerToRelocations = 0x0
-// CHECK: PointerToLineNumbers = 0x0
-// CHECK: NumberOfRelocations = 0
-// CHECK: NumberOfLineNumbers = 0
-// CHECK: Charateristics = 0xC0500040
-// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
-// CHECK: IMAGE_SCN_ALIGN_16BYTES
-// CHECK: IMAGE_SCN_MEM_READ
-// CHECK: IMAGE_SCN_MEM_WRITE
-// CHECK: SectionData =
-// CHECK: 48 65 6C 6C 6F 20 00 57 - 6F 72 6C 64 21 00 00 00 |Hello .World!...|
-// CHECK: 49 27 6D 20 54 68 65 20 - 4C 61 73 74 20 4C 69 6E |I'm The Last Lin|
-// CHECK: 65 2E 00 |e..|
-// CHECK: Relocations = None
-// CHECK: }
+// CHECK: Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
+// CHECK: SectionCount: 2
+// CHECK: TimeDateStamp: {{[0-9]+}}
+// CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}}
+// CHECK: SymbolCount: 7
+// CHECK: OptionalHeaderSize: 0
+// CHECK: Characteristics [ (0x0)
// CHECK: ]
-// CHECK: Symbols = [
-// CHECK: 0 = {
-// CHECK: Name = .text
-// CHECK: Value = 0
-// CHECK: SectionNumber = 1
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
-// CHECK: NumberOfAuxSymbols = 1
-// CHECK: AuxillaryData =
-// CHECK: 2D 00 00 00 06 00 00 00 - 00 00 00 00 01 00 00 00 |-...............|
-// CHECK: 00 00 |..|
-
-// CHECK: }
-// CHECK: 2 = {
-// CHECK: Name = .data
-// CHECK: Value = 0
-// CHECK: SectionNumber = 2
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
-// CHECK: NumberOfAuxSymbols = 1
-// CHECK: AuxillaryData =
-// CHECK: 23 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |#...............|
-// CHECK: 00 00 |..|
-
-// CHECK: }
-// CHECK: 4 = {
-// CHECK: Name = _main
-// CHECK: Value = 0
-// CHECK: SectionNumber = 1
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_FUNCTION (2)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK: NumberOfAuxSymbols = 0
-// CHECK: AuxillaryData =
-
-// CHECK: 5 = {
-// CHECK: Name = _printf
-// CHECK: Value = 0
-// CHECK: SectionNumber = 0
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK: NumberOfAuxSymbols = 0
-// CHECK: AuxillaryData =
-
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Number: 1
+// CHECK: Name: .text
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x{{[0-9A-F]+}}
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 6
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0x60500020)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_CODE
+// CHECK: IMAGE_SCN_MEM_EXECUTE
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: ]
+// CHECK: Relocations [
+// CHECK: 0x6 IMAGE_REL_I386_DIR32 .data
+// CHECK: 0xB IMAGE_REL_I386_REL32 _printf
+// CHECK: 0x12 IMAGE_REL_I386_DIR32 .data
+// CHECK: 0x17 IMAGE_REL_I386_REL32 _puts
+// CHECK: 0x1E IMAGE_REL_I386_DIR32 .data
+// CHECK: 0x23 IMAGE_REL_I386_REL32 _puts
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 83EC04C7 04240000 0000E800 000000C7 |.....$..........|
+// CHECK: 0010: 04240700 0000E800 000000C7 04241000 |.$...........$..|
+// CHECK: 0020: 0000E800 00000031 C083C404 C3 |.......1.....|
+// CHECK: )
+// CHECK: }
+// CHECK: Section {
+// CHECK: Number: 2
+// CHECK: Name: .data
+// CHECK: VirtualSize: 0
+// CHECK: VirtualAddress: 0
+// CHECK: RawDataSize: {{[0-9]+}}
+// CHECK: PointerToRawData: 0x{{[0-9A-F]+}}
+// CHECK: PointerToRelocations: 0x0
+// CHECK: PointerToLineNumbers: 0x0
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Characteristics [ (0xC0500040)
+// CHECK: IMAGE_SCN_ALIGN_16BYTES
+// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
+// CHECK: IMAGE_SCN_MEM_READ
+// CHECK: IMAGE_SCN_MEM_WRITE
+// CHECK: Relocations [
+// CHECK: ]
+// CHECK: SectionData (
+// CHECK: 0000: 48656C6C 6F200057 6F726C64 21000000 |Hello .World!...|
+// CHECK: 0010: 49276D20 54686520 4C617374 204C696E |I'm The Last Lin|
+// CHECK: 0020: 652E00 |e..|
+// CHECK: )
+// CHECK: }
+// CHECK: ]
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Name: .text
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 45
+// CHECK: RelocationCount: 6
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 1
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
// CHECK: }
-// CHECK: 6 = {
-// CHECK: Name = _puts
-// CHECK: Value = 0
-// CHECK: SectionNumber = 0
-// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK: NumberOfAuxSymbols = 0
-// CHECK: AuxillaryData =
-
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: .data
+// CHECK: Value: 0
+// CHECK: Section: .data
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: Static
+// CHECK: AuxSymbolCount: 1
+// CHECK: AuxSectionDef {
+// CHECK: Length: 35
+// CHECK: RelocationCount: 0
+// CHECK: LineNumberCount: 0
+// CHECK: Checksum: 0x0
+// CHECK: Number: 2
+// CHECK: Selection: 0x0
+// CHECK: Unused: (00 00 00)
// CHECK: }
-// CHECK: ]
-// CHECK: }
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _main
+// CHECK: Value: 0
+// CHECK: Section: .text
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Function
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _printf
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: _puts
+// CHECK: Value: 0
+// CHECK: Section: (0)
+// CHECK: BaseType: Null
+// CHECK: ComplexType: Null
+// CHECK: StorageClass: External
+// CHECK: AuxSymbolCount: 0
+// CHECK: }
+// CHECK: ]
diff --git a/test/MC/COFF/weak-symbol-section-specification.ll b/test/MC/COFF/weak-symbol-section-specification.ll
index 5049372..4772c92 100644
--- a/test/MC/COFF/weak-symbol-section-specification.ll
+++ b/test/MC/COFF/weak-symbol-section-specification.ll
@@ -1,23 +1,25 @@
; The purpose of this test is to verify that weak linkage type is not ignored by backend,
; if section was specialized.
-; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o - | coff-dump.py | FileCheck %s
+; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o - | llvm-readobj -s -sd | FileCheck %s
@a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data"
-; CHECK: Name = .data$a
-; CHECK-NEXT: VirtualSize = 0
-; CHECK-NEXT: VirtualAddress = 0
-; CHECK-NEXT: SizeOfRawData = {{[0-9]+}}
-; CHECK-NEXT: PointerToRawData = 0x{{[0-9A-F]+}}
-; CHECK-NEXT: PointerToRelocations = 0x0
-; CHECK-NEXT: PointerToLineNumbers = 0x0
-; CHECK-NEXT: NumberOfRelocations = 0
-; CHECK-NEXT: NumberOfLineNumbers = 0
-; CHECK-NEXT: Charateristics = 0x40401040
+; CHECK: Name: .data$a
+; CHECK-NEXT: VirtualSize: 0
+; CHECK-NEXT: VirtualAddress: 0
+; CHECK-NEXT: RawDataSize: {{[0-9]+}}
+; CHECK-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+; CHECK-NEXT: PointerToRelocations: 0x0
+; CHECK-NEXT: PointerToLineNumbers: 0x0
+; CHECK-NEXT: RelocationCount: 0
+; CHECK-NEXT: LineNumberCount: 0
+; CHECK-NEXT: Characteristics [ (0x40401040)
+; CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
; CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
; CHECK-NEXT: IMAGE_SCN_LNK_COMDAT
-; CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
; CHECK-NEXT: IMAGE_SCN_MEM_READ
-; CHECK-NEXT: SectionData =
-; CHECK-NEXT: 00 00 00 00 00 00 00 00 - 00 00 00 00
+; CHECK-NEXT: ]
+; CHECK-NEXT: SectionData (
+; CHECK-NEXT: 0000: 00000000 00000000 00000000
+; CHECK-NEXT: )
diff --git a/test/MC/COFF/weak.s b/test/MC/COFF/weak.s
index 0f99313..b9df0f1 100644
--- a/test/MC/COFF/weak.s
+++ b/test/MC/COFF/weak.s
@@ -1,7 +1,8 @@
// This tests that default-null weak symbols (a GNU extension) are created
// properly via the .weak directive.
-// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 < %s | coff-dump.py | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -t | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -t | FileCheck %s
.def _main;
.scl 2;
@@ -17,7 +18,7 @@ _main: # @main
testl %eax, %eax
je LBB0_2
# BB#1: # %if.then
- calll _test_weak
+ call _test_weak
movl $1, %eax
addl $4, %esp
ret
@@ -28,24 +29,47 @@ LBB0_2: # %return
.weak _test_weak
-// CHECK: Symbols = [
-
-// CHECK: Name = _test_weak
-// CHECK-NEXT: Value = 0
-// CHECK-NEXT: SectionNumber = 0
-// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_WEAK_EXTERNAL (105)
-// CHECK-NEXT: NumberOfAuxSymbols = 1
-// CHECK-NEXT: AuxillaryData =
-// CHECK-NEXT: 05 00 00 00 02 00 00 00 - 00 00 00 00 00 00 00 00 |................|
-// CHECK-NEXT: 00 00 |..|
-
-// CHECK: Name = .weak._test_weak.default
-// CHECK-NEXT: Value = 0
-// CHECK-NEXT: SectionNumber = 65535
-// CHECK-NEXT: SimpleType = IMAGE_SYM_TYPE_NULL (0)
-// CHECK-NEXT: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
-// CHECK-NEXT: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
-// CHECK-NEXT: NumberOfAuxSymbols = 0
-// CHECK-NEXT: AuxillaryData =
+ .weak _test_weak_alias
+ _test_weak_alias=_main
+
+// CHECK: Symbols [
+
+// CHECK: Symbol {
+// CHECK: Name: _test_weak
+// CHECK-NEXT: Value: 0
+// CHECK-NEXT: Section: (0)
+// CHECK-NEXT: BaseType: Null
+// CHECK-NEXT: ComplexType: Null
+// CHECK-NEXT: StorageClass: WeakExternal
+// CHECK-NEXT: AuxSymbolCount: 1
+// CHECK-NEXT: AuxWeakExternal {
+// CHECK-NEXT: Linked: .weak._test_weak.default
+// CHECK-NEXT: Search: Library
+// CHECK-NEXT: Unused: (00 00 00 00 00 00 00 00 00 00)
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+// CHECK: Symbol {
+// CHECK: Name: .weak._test_weak.default
+// CHECK-NEXT: Value: 0
+// CHECK-NEXT: Section: (-1)
+// CHECK-NEXT: BaseType: Null
+// CHECK-NEXT: ComplexType: Null
+// CHECK-NEXT: StorageClass: External
+// CHECK-NEXT: AuxSymbolCount: 0
+// CHECK-NEXT: }
+
+// CHECK: Symbol {
+// CHECK: Name: _test_weak_alias
+// CHECK-NEXT: Value: 0
+// CHECK-NEXT: Section: (0)
+// CHECK-NEXT: BaseType: Null
+// CHECK-NEXT: ComplexType: Null
+// CHECK-NEXT: StorageClass: WeakExternal
+// CHECK-NEXT: AuxSymbolCount: 1
+// CHECK-NEXT: AuxWeakExternal {
+// CHECK-NEXT: Linked: _main
+// CHECK-NEXT: Search: Library
+// CHECK-NEXT: Unused: (00 00 00 00 00 00 00 00 00 00)
+// CHECK-NEXT: }
+// CHECK-NEXT: }
diff --git a/test/MC/Disassembler/AArch64/gicv3-regs.txt b/test/MC/Disassembler/AArch64/gicv3-regs.txt
new file mode 100644
index 0000000..4351f64
--- /dev/null
+++ b/test/MC/Disassembler/AArch64/gicv3-regs.txt
@@ -0,0 +1,222 @@
+# RUN: llvm-mc -triple aarch64-none-linux-gnu -disassemble < %s | FileCheck %s
+
+0x8 0xcc 0x38 0xd5
+# CHECK: mrs x8, icc_iar1_el1
+0x1a 0xc8 0x38 0xd5
+# CHECK: mrs x26, icc_iar0_el1
+0x42 0xcc 0x38 0xd5
+# CHECK: mrs x2, icc_hppir1_el1
+0x51 0xc8 0x38 0xd5
+# CHECK: mrs x17, icc_hppir0_el1
+0x7d 0xcb 0x38 0xd5
+# CHECK: mrs x29, icc_rpr_el1
+0x24 0xcb 0x3c 0xd5
+# CHECK: mrs x4, ich_vtr_el2
+0x78 0xcb 0x3c 0xd5
+# CHECK: mrs x24, ich_eisr_el2
+0xa9 0xcb 0x3c 0xd5
+# CHECK: mrs x9, ich_elsr_el2
+0x78 0xcc 0x38 0xd5
+# CHECK: mrs x24, icc_bpr1_el1
+0x6e 0xc8 0x38 0xd5
+# CHECK: mrs x14, icc_bpr0_el1
+0x13 0x46 0x38 0xd5
+# CHECK: mrs x19, icc_pmr_el1
+0x97 0xcc 0x38 0xd5
+# CHECK: mrs x23, icc_ctlr_el1
+0x94 0xcc 0x3e 0xd5
+# CHECK: mrs x20, icc_ctlr_el3
+0xbc 0xcc 0x38 0xd5
+# CHECK: mrs x28, icc_sre_el1
+0xb9 0xc9 0x3c 0xd5
+# CHECK: mrs x25, icc_sre_el2
+0xa8 0xcc 0x3e 0xd5
+# CHECK: mrs x8, icc_sre_el3
+0xd6 0xcc 0x38 0xd5
+# CHECK: mrs x22, icc_igrpen0_el1
+0xe5 0xcc 0x38 0xd5
+# CHECK: mrs x5, icc_igrpen1_el1
+0xe7 0xcc 0x3e 0xd5
+# CHECK: mrs x7, icc_igrpen1_el3
+0x16 0xcd 0x38 0xd5
+# CHECK: mrs x22, icc_seien_el1
+0x84 0xc8 0x38 0xd5
+# CHECK: mrs x4, icc_ap0r0_el1
+0xab 0xc8 0x38 0xd5
+# CHECK: mrs x11, icc_ap0r1_el1
+0xdb 0xc8 0x38 0xd5
+# CHECK: mrs x27, icc_ap0r2_el1
+0xf5 0xc8 0x38 0xd5
+# CHECK: mrs x21, icc_ap0r3_el1
+0x2 0xc9 0x38 0xd5
+# CHECK: mrs x2, icc_ap1r0_el1
+0x35 0xc9 0x38 0xd5
+# CHECK: mrs x21, icc_ap1r1_el1
+0x4a 0xc9 0x38 0xd5
+# CHECK: mrs x10, icc_ap1r2_el1
+0x7b 0xc9 0x38 0xd5
+# CHECK: mrs x27, icc_ap1r3_el1
+0x14 0xc8 0x3c 0xd5
+# CHECK: mrs x20, ich_ap0r0_el2
+0x35 0xc8 0x3c 0xd5
+# CHECK: mrs x21, ich_ap0r1_el2
+0x45 0xc8 0x3c 0xd5
+# CHECK: mrs x5, ich_ap0r2_el2
+0x64 0xc8 0x3c 0xd5
+# CHECK: mrs x4, ich_ap0r3_el2
+0xf 0xc9 0x3c 0xd5
+# CHECK: mrs x15, ich_ap1r0_el2
+0x2c 0xc9 0x3c 0xd5
+# CHECK: mrs x12, ich_ap1r1_el2
+0x5b 0xc9 0x3c 0xd5
+# CHECK: mrs x27, ich_ap1r2_el2
+0x74 0xc9 0x3c 0xd5
+# CHECK: mrs x20, ich_ap1r3_el2
+0xa 0xcb 0x3c 0xd5
+# CHECK: mrs x10, ich_hcr_el2
+0x5b 0xcb 0x3c 0xd5
+# CHECK: mrs x27, ich_misr_el2
+0xe6 0xcb 0x3c 0xd5
+# CHECK: mrs x6, ich_vmcr_el2
+0x93 0xc9 0x3c 0xd5
+# CHECK: mrs x19, ich_vseir_el2
+0x3 0xcc 0x3c 0xd5
+# CHECK: mrs x3, ich_lr0_el2
+0x21 0xcc 0x3c 0xd5
+# CHECK: mrs x1, ich_lr1_el2
+0x56 0xcc 0x3c 0xd5
+# CHECK: mrs x22, ich_lr2_el2
+0x75 0xcc 0x3c 0xd5
+# CHECK: mrs x21, ich_lr3_el2
+0x86 0xcc 0x3c 0xd5
+# CHECK: mrs x6, ich_lr4_el2
+0xaa 0xcc 0x3c 0xd5
+# CHECK: mrs x10, ich_lr5_el2
+0xcb 0xcc 0x3c 0xd5
+# CHECK: mrs x11, ich_lr6_el2
+0xec 0xcc 0x3c 0xd5
+# CHECK: mrs x12, ich_lr7_el2
+0x0 0xcd 0x3c 0xd5
+# CHECK: mrs x0, ich_lr8_el2
+0x35 0xcd 0x3c 0xd5
+# CHECK: mrs x21, ich_lr9_el2
+0x4d 0xcd 0x3c 0xd5
+# CHECK: mrs x13, ich_lr10_el2
+0x7a 0xcd 0x3c 0xd5
+# CHECK: mrs x26, ich_lr11_el2
+0x81 0xcd 0x3c 0xd5
+# CHECK: mrs x1, ich_lr12_el2
+0xa8 0xcd 0x3c 0xd5
+# CHECK: mrs x8, ich_lr13_el2
+0xc2 0xcd 0x3c 0xd5
+# CHECK: mrs x2, ich_lr14_el2
+0xe8 0xcd 0x3c 0xd5
+# CHECK: mrs x8, ich_lr15_el2
+0x3b 0xcc 0x18 0xd5
+# CHECK: msr icc_eoir1_el1, x27
+0x25 0xc8 0x18 0xd5
+# CHECK: msr icc_eoir0_el1, x5
+0x2d 0xcb 0x18 0xd5
+# CHECK: msr icc_dir_el1, x13
+0xb5 0xcb 0x18 0xd5
+# CHECK: msr icc_sgi1r_el1, x21
+0xd9 0xcb 0x18 0xd5
+# CHECK: msr icc_asgi1r_el1, x25
+0xfc 0xcb 0x18 0xd5
+# CHECK: msr icc_sgi0r_el1, x28
+0x67 0xcc 0x18 0xd5
+# CHECK: msr icc_bpr1_el1, x7
+0x69 0xc8 0x18 0xd5
+# CHECK: msr icc_bpr0_el1, x9
+0x1d 0x46 0x18 0xd5
+# CHECK: msr icc_pmr_el1, x29
+0x98 0xcc 0x18 0xd5
+# CHECK: msr icc_ctlr_el1, x24
+0x80 0xcc 0x1e 0xd5
+# CHECK: msr icc_ctlr_el3, x0
+0xa2 0xcc 0x18 0xd5
+# CHECK: msr icc_sre_el1, x2
+0xa5 0xc9 0x1c 0xd5
+# CHECK: msr icc_sre_el2, x5
+0xaa 0xcc 0x1e 0xd5
+# CHECK: msr icc_sre_el3, x10
+0xd6 0xcc 0x18 0xd5
+# CHECK: msr icc_igrpen0_el1, x22
+0xeb 0xcc 0x18 0xd5
+# CHECK: msr icc_igrpen1_el1, x11
+0xe8 0xcc 0x1e 0xd5
+# CHECK: msr icc_igrpen1_el3, x8
+0x4 0xcd 0x18 0xd5
+# CHECK: msr icc_seien_el1, x4
+0x9b 0xc8 0x18 0xd5
+# CHECK: msr icc_ap0r0_el1, x27
+0xa5 0xc8 0x18 0xd5
+# CHECK: msr icc_ap0r1_el1, x5
+0xd4 0xc8 0x18 0xd5
+# CHECK: msr icc_ap0r2_el1, x20
+0xe0 0xc8 0x18 0xd5
+# CHECK: msr icc_ap0r3_el1, x0
+0x2 0xc9 0x18 0xd5
+# CHECK: msr icc_ap1r0_el1, x2
+0x3d 0xc9 0x18 0xd5
+# CHECK: msr icc_ap1r1_el1, x29
+0x57 0xc9 0x18 0xd5
+# CHECK: msr icc_ap1r2_el1, x23
+0x6b 0xc9 0x18 0xd5
+# CHECK: msr icc_ap1r3_el1, x11
+0x2 0xc8 0x1c 0xd5
+# CHECK: msr ich_ap0r0_el2, x2
+0x3b 0xc8 0x1c 0xd5
+# CHECK: msr ich_ap0r1_el2, x27
+0x47 0xc8 0x1c 0xd5
+# CHECK: msr ich_ap0r2_el2, x7
+0x61 0xc8 0x1c 0xd5
+# CHECK: msr ich_ap0r3_el2, x1
+0x7 0xc9 0x1c 0xd5
+# CHECK: msr ich_ap1r0_el2, x7
+0x2c 0xc9 0x1c 0xd5
+# CHECK: msr ich_ap1r1_el2, x12
+0x4e 0xc9 0x1c 0xd5
+# CHECK: msr ich_ap1r2_el2, x14
+0x6d 0xc9 0x1c 0xd5
+# CHECK: msr ich_ap1r3_el2, x13
+0x1 0xcb 0x1c 0xd5
+# CHECK: msr ich_hcr_el2, x1
+0x4a 0xcb 0x1c 0xd5
+# CHECK: msr ich_misr_el2, x10
+0xf8 0xcb 0x1c 0xd5
+# CHECK: msr ich_vmcr_el2, x24
+0x9d 0xc9 0x1c 0xd5
+# CHECK: msr ich_vseir_el2, x29
+0x1a 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr0_el2, x26
+0x29 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr1_el2, x9
+0x52 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr2_el2, x18
+0x7a 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr3_el2, x26
+0x96 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr4_el2, x22
+0xba 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr5_el2, x26
+0xdb 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr6_el2, x27
+0xe8 0xcc 0x1c 0xd5
+# CHECK: msr ich_lr7_el2, x8
+0x11 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr8_el2, x17
+0x33 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr9_el2, x19
+0x51 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr10_el2, x17
+0x65 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr11_el2, x5
+0x9d 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr12_el2, x29
+0xa2 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr13_el2, x2
+0xcd 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr14_el2, x13
+0xfb 0xcd 0x1c 0xd5
+# CHECK: msr ich_lr15_el2, x27
diff --git a/test/MC/Disassembler/AArch64/trace-regs.txt b/test/MC/Disassembler/AArch64/trace-regs.txt
new file mode 100644
index 0000000..10c5937
--- /dev/null
+++ b/test/MC/Disassembler/AArch64/trace-regs.txt
@@ -0,0 +1,736 @@
+# RUN: llvm-mc -triple aarch64-none-linux-gnu -disassemble < %s | FileCheck %s
+
+0x8 0x3 0x31 0xd5
+# CHECK: mrs x8, trcstatr
+0xc9 0x0 0x31 0xd5
+# CHECK: mrs x9, trcidr8
+0xcb 0x1 0x31 0xd5
+# CHECK: mrs x11, trcidr9
+0xd9 0x2 0x31 0xd5
+# CHECK: mrs x25, trcidr10
+0xc7 0x3 0x31 0xd5
+# CHECK: mrs x7, trcidr11
+0xc7 0x4 0x31 0xd5
+# CHECK: mrs x7, trcidr12
+0xc6 0x5 0x31 0xd5
+# CHECK: mrs x6, trcidr13
+0xfb 0x8 0x31 0xd5
+# CHECK: mrs x27, trcidr0
+0xfd 0x9 0x31 0xd5
+# CHECK: mrs x29, trcidr1
+0xe4 0xa 0x31 0xd5
+# CHECK: mrs x4, trcidr2
+0xe8 0xb 0x31 0xd5
+# CHECK: mrs x8, trcidr3
+0xef 0xc 0x31 0xd5
+# CHECK: mrs x15, trcidr4
+0xf4 0xd 0x31 0xd5
+# CHECK: mrs x20, trcidr5
+0xe6 0xe 0x31 0xd5
+# CHECK: mrs x6, trcidr6
+0xe6 0xf 0x31 0xd5
+# CHECK: mrs x6, trcidr7
+0x98 0x11 0x31 0xd5
+# CHECK: mrs x24, trcoslsr
+0x92 0x15 0x31 0xd5
+# CHECK: mrs x18, trcpdsr
+0xdc 0x7a 0x31 0xd5
+# CHECK: mrs x28, trcdevaff0
+0xc5 0x7b 0x31 0xd5
+# CHECK: mrs x5, trcdevaff1
+0xc5 0x7d 0x31 0xd5
+# CHECK: mrs x5, trclsr
+0xcb 0x7e 0x31 0xd5
+# CHECK: mrs x11, trcauthstatus
+0xcd 0x7f 0x31 0xd5
+# CHECK: mrs x13, trcdevarch
+0xf2 0x72 0x31 0xd5
+# CHECK: mrs x18, trcdevid
+0xf6 0x73 0x31 0xd5
+# CHECK: mrs x22, trcdevtype
+0xee 0x74 0x31 0xd5
+# CHECK: mrs x14, trcpidr4
+0xe5 0x75 0x31 0xd5
+# CHECK: mrs x5, trcpidr5
+0xe5 0x76 0x31 0xd5
+# CHECK: mrs x5, trcpidr6
+0xe9 0x77 0x31 0xd5
+# CHECK: mrs x9, trcpidr7
+0xef 0x78 0x31 0xd5
+# CHECK: mrs x15, trcpidr0
+0xe6 0x79 0x31 0xd5
+# CHECK: mrs x6, trcpidr1
+0xeb 0x7a 0x31 0xd5
+# CHECK: mrs x11, trcpidr2
+0xf4 0x7b 0x31 0xd5
+# CHECK: mrs x20, trcpidr3
+0xf1 0x7c 0x31 0xd5
+# CHECK: mrs x17, trccidr0
+0xe2 0x7d 0x31 0xd5
+# CHECK: mrs x2, trccidr1
+0xf4 0x7e 0x31 0xd5
+# CHECK: mrs x20, trccidr2
+0xe4 0x7f 0x31 0xd5
+# CHECK: mrs x4, trccidr3
+0xb 0x1 0x31 0xd5
+# CHECK: mrs x11, trcprgctlr
+0x17 0x2 0x31 0xd5
+# CHECK: mrs x23, trcprocselr
+0xd 0x4 0x31 0xd5
+# CHECK: mrs x13, trcconfigr
+0x17 0x6 0x31 0xd5
+# CHECK: mrs x23, trcauxctlr
+0x9 0x8 0x31 0xd5
+# CHECK: mrs x9, trceventctl0r
+0x10 0x9 0x31 0xd5
+# CHECK: mrs x16, trceventctl1r
+0x4 0xb 0x31 0xd5
+# CHECK: mrs x4, trcstallctlr
+0xe 0xc 0x31 0xd5
+# CHECK: mrs x14, trctsctlr
+0x18 0xd 0x31 0xd5
+# CHECK: mrs x24, trcsyncpr
+0x1c 0xe 0x31 0xd5
+# CHECK: mrs x28, trcccctlr
+0xf 0xf 0x31 0xd5
+# CHECK: mrs x15, trcbbctlr
+0x21 0x0 0x31 0xd5
+# CHECK: mrs x1, trctraceidr
+0x34 0x1 0x31 0xd5
+# CHECK: mrs x20, trcqctlr
+0x42 0x0 0x31 0xd5
+# CHECK: mrs x2, trcvictlr
+0x4c 0x1 0x31 0xd5
+# CHECK: mrs x12, trcviiectlr
+0x50 0x2 0x31 0xd5
+# CHECK: mrs x16, trcvissctlr
+0x48 0x3 0x31 0xd5
+# CHECK: mrs x8, trcvipcssctlr
+0x5b 0x8 0x31 0xd5
+# CHECK: mrs x27, trcvdctlr
+0x49 0x9 0x31 0xd5
+# CHECK: mrs x9, trcvdsacctlr
+0x40 0xa 0x31 0xd5
+# CHECK: mrs x0, trcvdarcctlr
+0x8d 0x0 0x31 0xd5
+# CHECK: mrs x13, trcseqevr0
+0x8b 0x1 0x31 0xd5
+# CHECK: mrs x11, trcseqevr1
+0x9a 0x2 0x31 0xd5
+# CHECK: mrs x26, trcseqevr2
+0x8e 0x6 0x31 0xd5
+# CHECK: mrs x14, trcseqrstevr
+0x84 0x7 0x31 0xd5
+# CHECK: mrs x4, trcseqstr
+0x91 0x8 0x31 0xd5
+# CHECK: mrs x17, trcextinselr
+0xb5 0x0 0x31 0xd5
+# CHECK: mrs x21, trccntrldvr0
+0xaa 0x1 0x31 0xd5
+# CHECK: mrs x10, trccntrldvr1
+0xb4 0x2 0x31 0xd5
+# CHECK: mrs x20, trccntrldvr2
+0xa5 0x3 0x31 0xd5
+# CHECK: mrs x5, trccntrldvr3
+0xb1 0x4 0x31 0xd5
+# CHECK: mrs x17, trccntctlr0
+0xa1 0x5 0x31 0xd5
+# CHECK: mrs x1, trccntctlr1
+0xb1 0x6 0x31 0xd5
+# CHECK: mrs x17, trccntctlr2
+0xa6 0x7 0x31 0xd5
+# CHECK: mrs x6, trccntctlr3
+0xbc 0x8 0x31 0xd5
+# CHECK: mrs x28, trccntvr0
+0xb7 0x9 0x31 0xd5
+# CHECK: mrs x23, trccntvr1
+0xa9 0xa 0x31 0xd5
+# CHECK: mrs x9, trccntvr2
+0xa6 0xb 0x31 0xd5
+# CHECK: mrs x6, trccntvr3
+0xf8 0x0 0x31 0xd5
+# CHECK: mrs x24, trcimspec0
+0xf8 0x1 0x31 0xd5
+# CHECK: mrs x24, trcimspec1
+0xef 0x2 0x31 0xd5
+# CHECK: mrs x15, trcimspec2
+0xea 0x3 0x31 0xd5
+# CHECK: mrs x10, trcimspec3
+0xfd 0x4 0x31 0xd5
+# CHECK: mrs x29, trcimspec4
+0xf2 0x5 0x31 0xd5
+# CHECK: mrs x18, trcimspec5
+0xfd 0x6 0x31 0xd5
+# CHECK: mrs x29, trcimspec6
+0xe2 0x7 0x31 0xd5
+# CHECK: mrs x2, trcimspec7
+0x8 0x12 0x31 0xd5
+# CHECK: mrs x8, trcrsctlr2
+0x0 0x13 0x31 0xd5
+# CHECK: mrs x0, trcrsctlr3
+0xc 0x14 0x31 0xd5
+# CHECK: mrs x12, trcrsctlr4
+0x1a 0x15 0x31 0xd5
+# CHECK: mrs x26, trcrsctlr5
+0x1d 0x16 0x31 0xd5
+# CHECK: mrs x29, trcrsctlr6
+0x11 0x17 0x31 0xd5
+# CHECK: mrs x17, trcrsctlr7
+0x0 0x18 0x31 0xd5
+# CHECK: mrs x0, trcrsctlr8
+0x1 0x19 0x31 0xd5
+# CHECK: mrs x1, trcrsctlr9
+0x11 0x1a 0x31 0xd5
+# CHECK: mrs x17, trcrsctlr10
+0x15 0x1b 0x31 0xd5
+# CHECK: mrs x21, trcrsctlr11
+0x1 0x1c 0x31 0xd5
+# CHECK: mrs x1, trcrsctlr12
+0x8 0x1d 0x31 0xd5
+# CHECK: mrs x8, trcrsctlr13
+0x18 0x1e 0x31 0xd5
+# CHECK: mrs x24, trcrsctlr14
+0x0 0x1f 0x31 0xd5
+# CHECK: mrs x0, trcrsctlr15
+0x22 0x10 0x31 0xd5
+# CHECK: mrs x2, trcrsctlr16
+0x3d 0x11 0x31 0xd5
+# CHECK: mrs x29, trcrsctlr17
+0x36 0x12 0x31 0xd5
+# CHECK: mrs x22, trcrsctlr18
+0x26 0x13 0x31 0xd5
+# CHECK: mrs x6, trcrsctlr19
+0x3a 0x14 0x31 0xd5
+# CHECK: mrs x26, trcrsctlr20
+0x3a 0x15 0x31 0xd5
+# CHECK: mrs x26, trcrsctlr21
+0x24 0x16 0x31 0xd5
+# CHECK: mrs x4, trcrsctlr22
+0x2c 0x17 0x31 0xd5
+# CHECK: mrs x12, trcrsctlr23
+0x21 0x18 0x31 0xd5
+# CHECK: mrs x1, trcrsctlr24
+0x20 0x19 0x31 0xd5
+# CHECK: mrs x0, trcrsctlr25
+0x31 0x1a 0x31 0xd5
+# CHECK: mrs x17, trcrsctlr26
+0x28 0x1b 0x31 0xd5
+# CHECK: mrs x8, trcrsctlr27
+0x2a 0x1c 0x31 0xd5
+# CHECK: mrs x10, trcrsctlr28
+0x39 0x1d 0x31 0xd5
+# CHECK: mrs x25, trcrsctlr29
+0x2c 0x1e 0x31 0xd5
+# CHECK: mrs x12, trcrsctlr30
+0x2b 0x1f 0x31 0xd5
+# CHECK: mrs x11, trcrsctlr31
+0x52 0x10 0x31 0xd5
+# CHECK: mrs x18, trcssccr0
+0x4c 0x11 0x31 0xd5
+# CHECK: mrs x12, trcssccr1
+0x43 0x12 0x31 0xd5
+# CHECK: mrs x3, trcssccr2
+0x42 0x13 0x31 0xd5
+# CHECK: mrs x2, trcssccr3
+0x55 0x14 0x31 0xd5
+# CHECK: mrs x21, trcssccr4
+0x4a 0x15 0x31 0xd5
+# CHECK: mrs x10, trcssccr5
+0x56 0x16 0x31 0xd5
+# CHECK: mrs x22, trcssccr6
+0x57 0x17 0x31 0xd5
+# CHECK: mrs x23, trcssccr7
+0x57 0x18 0x31 0xd5
+# CHECK: mrs x23, trcsscsr0
+0x53 0x19 0x31 0xd5
+# CHECK: mrs x19, trcsscsr1
+0x59 0x1a 0x31 0xd5
+# CHECK: mrs x25, trcsscsr2
+0x51 0x1b 0x31 0xd5
+# CHECK: mrs x17, trcsscsr3
+0x53 0x1c 0x31 0xd5
+# CHECK: mrs x19, trcsscsr4
+0x4b 0x1d 0x31 0xd5
+# CHECK: mrs x11, trcsscsr5
+0x45 0x1e 0x31 0xd5
+# CHECK: mrs x5, trcsscsr6
+0x49 0x1f 0x31 0xd5
+# CHECK: mrs x9, trcsscsr7
+0x9a 0x14 0x31 0xd5
+# CHECK: mrs x26, trcpdcr
+0x8 0x20 0x31 0xd5
+# CHECK: mrs x8, trcacvr0
+0xf 0x22 0x31 0xd5
+# CHECK: mrs x15, trcacvr1
+0x13 0x24 0x31 0xd5
+# CHECK: mrs x19, trcacvr2
+0x8 0x26 0x31 0xd5
+# CHECK: mrs x8, trcacvr3
+0x1c 0x28 0x31 0xd5
+# CHECK: mrs x28, trcacvr4
+0x3 0x2a 0x31 0xd5
+# CHECK: mrs x3, trcacvr5
+0x19 0x2c 0x31 0xd5
+# CHECK: mrs x25, trcacvr6
+0x18 0x2e 0x31 0xd5
+# CHECK: mrs x24, trcacvr7
+0x26 0x20 0x31 0xd5
+# CHECK: mrs x6, trcacvr8
+0x23 0x22 0x31 0xd5
+# CHECK: mrs x3, trcacvr9
+0x38 0x24 0x31 0xd5
+# CHECK: mrs x24, trcacvr10
+0x23 0x26 0x31 0xd5
+# CHECK: mrs x3, trcacvr11
+0x2c 0x28 0x31 0xd5
+# CHECK: mrs x12, trcacvr12
+0x29 0x2a 0x31 0xd5
+# CHECK: mrs x9, trcacvr13
+0x2e 0x2c 0x31 0xd5
+# CHECK: mrs x14, trcacvr14
+0x23 0x2e 0x31 0xd5
+# CHECK: mrs x3, trcacvr15
+0x55 0x20 0x31 0xd5
+# CHECK: mrs x21, trcacatr0
+0x5a 0x22 0x31 0xd5
+# CHECK: mrs x26, trcacatr1
+0x48 0x24 0x31 0xd5
+# CHECK: mrs x8, trcacatr2
+0x56 0x26 0x31 0xd5
+# CHECK: mrs x22, trcacatr3
+0x46 0x28 0x31 0xd5
+# CHECK: mrs x6, trcacatr4
+0x5d 0x2a 0x31 0xd5
+# CHECK: mrs x29, trcacatr5
+0x45 0x2c 0x31 0xd5
+# CHECK: mrs x5, trcacatr6
+0x52 0x2e 0x31 0xd5
+# CHECK: mrs x18, trcacatr7
+0x62 0x20 0x31 0xd5
+# CHECK: mrs x2, trcacatr8
+0x73 0x22 0x31 0xd5
+# CHECK: mrs x19, trcacatr9
+0x6d 0x24 0x31 0xd5
+# CHECK: mrs x13, trcacatr10
+0x79 0x26 0x31 0xd5
+# CHECK: mrs x25, trcacatr11
+0x72 0x28 0x31 0xd5
+# CHECK: mrs x18, trcacatr12
+0x7d 0x2a 0x31 0xd5
+# CHECK: mrs x29, trcacatr13
+0x69 0x2c 0x31 0xd5
+# CHECK: mrs x9, trcacatr14
+0x72 0x2e 0x31 0xd5
+# CHECK: mrs x18, trcacatr15
+0x9d 0x20 0x31 0xd5
+# CHECK: mrs x29, trcdvcvr0
+0x8f 0x24 0x31 0xd5
+# CHECK: mrs x15, trcdvcvr1
+0x8f 0x28 0x31 0xd5
+# CHECK: mrs x15, trcdvcvr2
+0x8f 0x2c 0x31 0xd5
+# CHECK: mrs x15, trcdvcvr3
+0xb3 0x20 0x31 0xd5
+# CHECK: mrs x19, trcdvcvr4
+0xb6 0x24 0x31 0xd5
+# CHECK: mrs x22, trcdvcvr5
+0xbb 0x28 0x31 0xd5
+# CHECK: mrs x27, trcdvcvr6
+0xa1 0x2c 0x31 0xd5
+# CHECK: mrs x1, trcdvcvr7
+0xdd 0x20 0x31 0xd5
+# CHECK: mrs x29, trcdvcmr0
+0xc9 0x24 0x31 0xd5
+# CHECK: mrs x9, trcdvcmr1
+0xc1 0x28 0x31 0xd5
+# CHECK: mrs x1, trcdvcmr2
+0xc2 0x2c 0x31 0xd5
+# CHECK: mrs x2, trcdvcmr3
+0xe5 0x20 0x31 0xd5
+# CHECK: mrs x5, trcdvcmr4
+0xf5 0x24 0x31 0xd5
+# CHECK: mrs x21, trcdvcmr5
+0xe5 0x28 0x31 0xd5
+# CHECK: mrs x5, trcdvcmr6
+0xe1 0x2c 0x31 0xd5
+# CHECK: mrs x1, trcdvcmr7
+0x15 0x30 0x31 0xd5
+# CHECK: mrs x21, trccidcvr0
+0x18 0x32 0x31 0xd5
+# CHECK: mrs x24, trccidcvr1
+0x18 0x34 0x31 0xd5
+# CHECK: mrs x24, trccidcvr2
+0xc 0x36 0x31 0xd5
+# CHECK: mrs x12, trccidcvr3
+0xa 0x38 0x31 0xd5
+# CHECK: mrs x10, trccidcvr4
+0x9 0x3a 0x31 0xd5
+# CHECK: mrs x9, trccidcvr5
+0x6 0x3c 0x31 0xd5
+# CHECK: mrs x6, trccidcvr6
+0x14 0x3e 0x31 0xd5
+# CHECK: mrs x20, trccidcvr7
+0x34 0x30 0x31 0xd5
+# CHECK: mrs x20, trcvmidcvr0
+0x34 0x32 0x31 0xd5
+# CHECK: mrs x20, trcvmidcvr1
+0x3a 0x34 0x31 0xd5
+# CHECK: mrs x26, trcvmidcvr2
+0x21 0x36 0x31 0xd5
+# CHECK: mrs x1, trcvmidcvr3
+0x2e 0x38 0x31 0xd5
+# CHECK: mrs x14, trcvmidcvr4
+0x3b 0x3a 0x31 0xd5
+# CHECK: mrs x27, trcvmidcvr5
+0x3d 0x3c 0x31 0xd5
+# CHECK: mrs x29, trcvmidcvr6
+0x31 0x3e 0x31 0xd5
+# CHECK: mrs x17, trcvmidcvr7
+0x4a 0x30 0x31 0xd5
+# CHECK: mrs x10, trccidcctlr0
+0x44 0x31 0x31 0xd5
+# CHECK: mrs x4, trccidcctlr1
+0x49 0x32 0x31 0xd5
+# CHECK: mrs x9, trcvmidcctlr0
+0x4b 0x33 0x31 0xd5
+# CHECK: mrs x11, trcvmidcctlr1
+0x96 0x70 0x31 0xd5
+# CHECK: mrs x22, trcitctrl
+0xd7 0x78 0x31 0xd5
+# CHECK: mrs x23, trcclaimset
+0xce 0x79 0x31 0xd5
+# CHECK: mrs x14, trcclaimclr
+0x9c 0x10 0x11 0xd5
+# CHECK: msr trcoslar, x28
+0xce 0x7c 0x11 0xd5
+# CHECK: msr trclar, x14
+0xa 0x1 0x11 0xd5
+# CHECK: msr trcprgctlr, x10
+0x1b 0x2 0x11 0xd5
+# CHECK: msr trcprocselr, x27
+0x18 0x4 0x11 0xd5
+# CHECK: msr trcconfigr, x24
+0x8 0x6 0x11 0xd5
+# CHECK: msr trcauxctlr, x8
+0x10 0x8 0x11 0xd5
+# CHECK: msr trceventctl0r, x16
+0x1b 0x9 0x11 0xd5
+# CHECK: msr trceventctl1r, x27
+0x1a 0xb 0x11 0xd5
+# CHECK: msr trcstallctlr, x26
+0x0 0xc 0x11 0xd5
+# CHECK: msr trctsctlr, x0
+0xe 0xd 0x11 0xd5
+# CHECK: msr trcsyncpr, x14
+0x8 0xe 0x11 0xd5
+# CHECK: msr trcccctlr, x8
+0x6 0xf 0x11 0xd5
+# CHECK: msr trcbbctlr, x6
+0x37 0x0 0x11 0xd5
+# CHECK: msr trctraceidr, x23
+0x25 0x1 0x11 0xd5
+# CHECK: msr trcqctlr, x5
+0x40 0x0 0x11 0xd5
+# CHECK: msr trcvictlr, x0
+0x40 0x1 0x11 0xd5
+# CHECK: msr trcviiectlr, x0
+0x41 0x2 0x11 0xd5
+# CHECK: msr trcvissctlr, x1
+0x40 0x3 0x11 0xd5
+# CHECK: msr trcvipcssctlr, x0
+0x47 0x8 0x11 0xd5
+# CHECK: msr trcvdctlr, x7
+0x52 0x9 0x11 0xd5
+# CHECK: msr trcvdsacctlr, x18
+0x58 0xa 0x11 0xd5
+# CHECK: msr trcvdarcctlr, x24
+0x9c 0x0 0x11 0xd5
+# CHECK: msr trcseqevr0, x28
+0x95 0x1 0x11 0xd5
+# CHECK: msr trcseqevr1, x21
+0x90 0x2 0x11 0xd5
+# CHECK: msr trcseqevr2, x16
+0x90 0x6 0x11 0xd5
+# CHECK: msr trcseqrstevr, x16
+0x99 0x7 0x11 0xd5
+# CHECK: msr trcseqstr, x25
+0x9d 0x8 0x11 0xd5
+# CHECK: msr trcextinselr, x29
+0xb4 0x0 0x11 0xd5
+# CHECK: msr trccntrldvr0, x20
+0xb4 0x1 0x11 0xd5
+# CHECK: msr trccntrldvr1, x20
+0xb6 0x2 0x11 0xd5
+# CHECK: msr trccntrldvr2, x22
+0xac 0x3 0x11 0xd5
+# CHECK: msr trccntrldvr3, x12
+0xb4 0x4 0x11 0xd5
+# CHECK: msr trccntctlr0, x20
+0xa4 0x5 0x11 0xd5
+# CHECK: msr trccntctlr1, x4
+0xa8 0x6 0x11 0xd5
+# CHECK: msr trccntctlr2, x8
+0xb0 0x7 0x11 0xd5
+# CHECK: msr trccntctlr3, x16
+0xa5 0x8 0x11 0xd5
+# CHECK: msr trccntvr0, x5
+0xbb 0x9 0x11 0xd5
+# CHECK: msr trccntvr1, x27
+0xb5 0xa 0x11 0xd5
+# CHECK: msr trccntvr2, x21
+0xa8 0xb 0x11 0xd5
+# CHECK: msr trccntvr3, x8
+0xe6 0x0 0x11 0xd5
+# CHECK: msr trcimspec0, x6
+0xfb 0x1 0x11 0xd5
+# CHECK: msr trcimspec1, x27
+0xf7 0x2 0x11 0xd5
+# CHECK: msr trcimspec2, x23
+0xef 0x3 0x11 0xd5
+# CHECK: msr trcimspec3, x15
+0xed 0x4 0x11 0xd5
+# CHECK: msr trcimspec4, x13
+0xf9 0x5 0x11 0xd5
+# CHECK: msr trcimspec5, x25
+0xf3 0x6 0x11 0xd5
+# CHECK: msr trcimspec6, x19
+0xfb 0x7 0x11 0xd5
+# CHECK: msr trcimspec7, x27
+0x4 0x12 0x11 0xd5
+# CHECK: msr trcrsctlr2, x4
+0x0 0x13 0x11 0xd5
+# CHECK: msr trcrsctlr3, x0
+0x15 0x14 0x11 0xd5
+# CHECK: msr trcrsctlr4, x21
+0x8 0x15 0x11 0xd5
+# CHECK: msr trcrsctlr5, x8
+0x14 0x16 0x11 0xd5
+# CHECK: msr trcrsctlr6, x20
+0xb 0x17 0x11 0xd5
+# CHECK: msr trcrsctlr7, x11
+0x12 0x18 0x11 0xd5
+# CHECK: msr trcrsctlr8, x18
+0x18 0x19 0x11 0xd5
+# CHECK: msr trcrsctlr9, x24
+0xf 0x1a 0x11 0xd5
+# CHECK: msr trcrsctlr10, x15
+0x15 0x1b 0x11 0xd5
+# CHECK: msr trcrsctlr11, x21
+0x4 0x1c 0x11 0xd5
+# CHECK: msr trcrsctlr12, x4
+0x1c 0x1d 0x11 0xd5
+# CHECK: msr trcrsctlr13, x28
+0x3 0x1e 0x11 0xd5
+# CHECK: msr trcrsctlr14, x3
+0x14 0x1f 0x11 0xd5
+# CHECK: msr trcrsctlr15, x20
+0x2c 0x10 0x11 0xd5
+# CHECK: msr trcrsctlr16, x12
+0x31 0x11 0x11 0xd5
+# CHECK: msr trcrsctlr17, x17
+0x2a 0x12 0x11 0xd5
+# CHECK: msr trcrsctlr18, x10
+0x2b 0x13 0x11 0xd5
+# CHECK: msr trcrsctlr19, x11
+0x23 0x14 0x11 0xd5
+# CHECK: msr trcrsctlr20, x3
+0x32 0x15 0x11 0xd5
+# CHECK: msr trcrsctlr21, x18
+0x3a 0x16 0x11 0xd5
+# CHECK: msr trcrsctlr22, x26
+0x25 0x17 0x11 0xd5
+# CHECK: msr trcrsctlr23, x5
+0x39 0x18 0x11 0xd5
+# CHECK: msr trcrsctlr24, x25
+0x25 0x19 0x11 0xd5
+# CHECK: msr trcrsctlr25, x5
+0x24 0x1a 0x11 0xd5
+# CHECK: msr trcrsctlr26, x4
+0x34 0x1b 0x11 0xd5
+# CHECK: msr trcrsctlr27, x20
+0x25 0x1c 0x11 0xd5
+# CHECK: msr trcrsctlr28, x5
+0x2a 0x1d 0x11 0xd5
+# CHECK: msr trcrsctlr29, x10
+0x38 0x1e 0x11 0xd5
+# CHECK: msr trcrsctlr30, x24
+0x34 0x1f 0x11 0xd5
+# CHECK: msr trcrsctlr31, x20
+0x57 0x10 0x11 0xd5
+# CHECK: msr trcssccr0, x23
+0x5b 0x11 0x11 0xd5
+# CHECK: msr trcssccr1, x27
+0x5b 0x12 0x11 0xd5
+# CHECK: msr trcssccr2, x27
+0x46 0x13 0x11 0xd5
+# CHECK: msr trcssccr3, x6
+0x43 0x14 0x11 0xd5
+# CHECK: msr trcssccr4, x3
+0x4c 0x15 0x11 0xd5
+# CHECK: msr trcssccr5, x12
+0x47 0x16 0x11 0xd5
+# CHECK: msr trcssccr6, x7
+0x46 0x17 0x11 0xd5
+# CHECK: msr trcssccr7, x6
+0x54 0x18 0x11 0xd5
+# CHECK: msr trcsscsr0, x20
+0x51 0x19 0x11 0xd5
+# CHECK: msr trcsscsr1, x17
+0x4b 0x1a 0x11 0xd5
+# CHECK: msr trcsscsr2, x11
+0x44 0x1b 0x11 0xd5
+# CHECK: msr trcsscsr3, x4
+0x4e 0x1c 0x11 0xd5
+# CHECK: msr trcsscsr4, x14
+0x56 0x1d 0x11 0xd5
+# CHECK: msr trcsscsr5, x22
+0x43 0x1e 0x11 0xd5
+# CHECK: msr trcsscsr6, x3
+0x4b 0x1f 0x11 0xd5
+# CHECK: msr trcsscsr7, x11
+0x83 0x14 0x11 0xd5
+# CHECK: msr trcpdcr, x3
+0x6 0x20 0x11 0xd5
+# CHECK: msr trcacvr0, x6
+0x14 0x22 0x11 0xd5
+# CHECK: msr trcacvr1, x20
+0x19 0x24 0x11 0xd5
+# CHECK: msr trcacvr2, x25
+0x1 0x26 0x11 0xd5
+# CHECK: msr trcacvr3, x1
+0x1c 0x28 0x11 0xd5
+# CHECK: msr trcacvr4, x28
+0xf 0x2a 0x11 0xd5
+# CHECK: msr trcacvr5, x15
+0x19 0x2c 0x11 0xd5
+# CHECK: msr trcacvr6, x25
+0xc 0x2e 0x11 0xd5
+# CHECK: msr trcacvr7, x12
+0x25 0x20 0x11 0xd5
+# CHECK: msr trcacvr8, x5
+0x39 0x22 0x11 0xd5
+# CHECK: msr trcacvr9, x25
+0x2d 0x24 0x11 0xd5
+# CHECK: msr trcacvr10, x13
+0x2a 0x26 0x11 0xd5
+# CHECK: msr trcacvr11, x10
+0x33 0x28 0x11 0xd5
+# CHECK: msr trcacvr12, x19
+0x2a 0x2a 0x11 0xd5
+# CHECK: msr trcacvr13, x10
+0x33 0x2c 0x11 0xd5
+# CHECK: msr trcacvr14, x19
+0x22 0x2e 0x11 0xd5
+# CHECK: msr trcacvr15, x2
+0x4f 0x20 0x11 0xd5
+# CHECK: msr trcacatr0, x15
+0x4d 0x22 0x11 0xd5
+# CHECK: msr trcacatr1, x13
+0x48 0x24 0x11 0xd5
+# CHECK: msr trcacatr2, x8
+0x41 0x26 0x11 0xd5
+# CHECK: msr trcacatr3, x1
+0x4b 0x28 0x11 0xd5
+# CHECK: msr trcacatr4, x11
+0x48 0x2a 0x11 0xd5
+# CHECK: msr trcacatr5, x8
+0x58 0x2c 0x11 0xd5
+# CHECK: msr trcacatr6, x24
+0x46 0x2e 0x11 0xd5
+# CHECK: msr trcacatr7, x6
+0x77 0x20 0x11 0xd5
+# CHECK: msr trcacatr8, x23
+0x65 0x22 0x11 0xd5
+# CHECK: msr trcacatr9, x5
+0x6b 0x24 0x11 0xd5
+# CHECK: msr trcacatr10, x11
+0x6b 0x26 0x11 0xd5
+# CHECK: msr trcacatr11, x11
+0x63 0x28 0x11 0xd5
+# CHECK: msr trcacatr12, x3
+0x7c 0x2a 0x11 0xd5
+# CHECK: msr trcacatr13, x28
+0x79 0x2c 0x11 0xd5
+# CHECK: msr trcacatr14, x25
+0x64 0x2e 0x11 0xd5
+# CHECK: msr trcacatr15, x4
+0x86 0x20 0x11 0xd5
+# CHECK: msr trcdvcvr0, x6
+0x83 0x24 0x11 0xd5
+# CHECK: msr trcdvcvr1, x3
+0x85 0x28 0x11 0xd5
+# CHECK: msr trcdvcvr2, x5
+0x8b 0x2c 0x11 0xd5
+# CHECK: msr trcdvcvr3, x11
+0xa9 0x20 0x11 0xd5
+# CHECK: msr trcdvcvr4, x9
+0xae 0x24 0x11 0xd5
+# CHECK: msr trcdvcvr5, x14
+0xaa 0x28 0x11 0xd5
+# CHECK: msr trcdvcvr6, x10
+0xac 0x2c 0x11 0xd5
+# CHECK: msr trcdvcvr7, x12
+0xc8 0x20 0x11 0xd5
+# CHECK: msr trcdvcmr0, x8
+0xc8 0x24 0x11 0xd5
+# CHECK: msr trcdvcmr1, x8
+0xd6 0x28 0x11 0xd5
+# CHECK: msr trcdvcmr2, x22
+0xd6 0x2c 0x11 0xd5
+# CHECK: msr trcdvcmr3, x22
+0xe5 0x20 0x11 0xd5
+# CHECK: msr trcdvcmr4, x5
+0xf0 0x24 0x11 0xd5
+# CHECK: msr trcdvcmr5, x16
+0xfb 0x28 0x11 0xd5
+# CHECK: msr trcdvcmr6, x27
+0xf5 0x2c 0x11 0xd5
+# CHECK: msr trcdvcmr7, x21
+0x8 0x30 0x11 0xd5
+# CHECK: msr trccidcvr0, x8
+0x6 0x32 0x11 0xd5
+# CHECK: msr trccidcvr1, x6
+0x9 0x34 0x11 0xd5
+# CHECK: msr trccidcvr2, x9
+0x8 0x36 0x11 0xd5
+# CHECK: msr trccidcvr3, x8
+0x3 0x38 0x11 0xd5
+# CHECK: msr trccidcvr4, x3
+0x15 0x3a 0x11 0xd5
+# CHECK: msr trccidcvr5, x21
+0xc 0x3c 0x11 0xd5
+# CHECK: msr trccidcvr6, x12
+0x7 0x3e 0x11 0xd5
+# CHECK: msr trccidcvr7, x7
+0x24 0x30 0x11 0xd5
+# CHECK: msr trcvmidcvr0, x4
+0x23 0x32 0x11 0xd5
+# CHECK: msr trcvmidcvr1, x3
+0x29 0x34 0x11 0xd5
+# CHECK: msr trcvmidcvr2, x9
+0x31 0x36 0x11 0xd5
+# CHECK: msr trcvmidcvr3, x17
+0x2e 0x38 0x11 0xd5
+# CHECK: msr trcvmidcvr4, x14
+0x2c 0x3a 0x11 0xd5
+# CHECK: msr trcvmidcvr5, x12
+0x2a 0x3c 0x11 0xd5
+# CHECK: msr trcvmidcvr6, x10
+0x23 0x3e 0x11 0xd5
+# CHECK: msr trcvmidcvr7, x3
+0x4e 0x30 0x11 0xd5
+# CHECK: msr trccidcctlr0, x14
+0x56 0x31 0x11 0xd5
+# CHECK: msr trccidcctlr1, x22
+0x48 0x32 0x11 0xd5
+# CHECK: msr trcvmidcctlr0, x8
+0x4f 0x33 0x11 0xd5
+# CHECK: msr trcvmidcctlr1, x15
+0x81 0x70 0x11 0xd5
+# CHECK: msr trcitctrl, x1
+0xc7 0x78 0x11 0xd5
+# CHECK: msr trcclaimset, x7
+0xdd 0x79 0x11 0xd5
+# CHECK: msr trcclaimclr, x29
+
+
diff --git a/test/MC/Disassembler/ARM/arm-tests.txt b/test/MC/Disassembler/ARM/arm-tests.txt
index 0c9aaab..98daaa7 100644
--- a/test/MC/Disassembler/ARM/arm-tests.txt
+++ b/test/MC/Disassembler/ARM/arm-tests.txt
@@ -51,24 +51,48 @@
# CHECKx: ldclvc p5, cr15, [r8], #-0
#0x00 0xf5 0x78 0x7c
+# CHECK: ldc p13, c9, [r2, #0]!
+0x00 0x9d 0xb2 0xed
+
+# CHECK: ldcl p1, c9, [r3, #0]!
+0x00 0x91 0xf3 0xed
+
# CHECK: ldr r0, [r2], #15
0x0f 0x00 0x92 0xe4
# CHECK: ldr r5, [r7, -r10, lsl #2]
0x0a 0x51 0x17 0xe7
+# CHECK: ldr r4, [r5, #0]!
+0x00 0x40 0xb5 0xe5
+
+# CHECK: ldrb lr, [r10, #0]!
+0x00 0xe0 0xfa 0xe5
+
+# CHECK: ldrd r4, r5, [r0, #0]!
+0xd0 0x40 0xe0 0xe1
+
# CHECK: ldrh r0, [r2], #0
0xb0 0x00 0xd2 0xe0
# CHECK: ldrh r0, [r2]
0xb0 0x00 0xd2 0xe1
+# CHECK: ldrh lr, [sp, #0]!
+0xb0 0xe0 0xfd 0xe1
+
# CHECK: ldrht r0, [r2], #15
0xbf 0x00 0xf2 0xe0
+# CHECK: ldrsb r1, [lr, #0]!
+0xd0 0x10 0xfe 0xe1
+
# CHECK: ldrsbtvs lr, [r2], -r9
0xd9 0xe0 0x32 0x60
+# CHECK: ldrsh r9, [r1, #0]
+0xf0 0x90 0xf1 0xe1
+
# CHECK: lsls r0, r2, #31
0x82 0x0f 0xb0 0xe1
@@ -245,9 +269,27 @@
# CHECK: stc p2, c4, [r9], {157}
0x9d 0x42 0x89 0xec
+# CHECK: stc p15, c0, [r3, #0]!
+0x00 0x0f 0xa3 0xed
+
# CHECK: stc2 p2, c4, [r9], {157}
0x9d 0x42 0x89 0xfc
+# CHECK: stcl p13, c12, [r9, #0]!
+0x00 0xcd 0xe9 0xed
+
+# CHECK: str pc, [r11, #0]!
+0x00 0xf0 0xab 0xe5
+
+# CHECK: strb r9, [r10, #0]!
+0x00 0x90 0xea 0xe5
+
+# CHECK: strd r12, sp, [r6, #0]!
+0xf0 0xc0 0xe6 0xe1
+
+# CHECK: strh r7, [r9, #0]!
+0xb0 0x70 0xe9 0xe1
+
# CHECK: bne #-24
0xfa 0xff 0xff 0x1a
diff --git a/test/MC/Disassembler/ARM/arm-thumb-trustzone.txt b/test/MC/Disassembler/ARM/arm-thumb-trustzone.txt
new file mode 100644
index 0000000..d6b7cf1
--- /dev/null
+++ b/test/MC/Disassembler/ARM/arm-thumb-trustzone.txt
@@ -0,0 +1,17 @@
+# RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -disassemble -mattr=-trustzone < %s | FileCheck %s -check-prefix=NOTZ
+# RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -disassemble -mattr=trustzone < %s | FileCheck %s -check-prefix=TZ
+
+
+#------------------------------------------------------------------------------
+# SMC
+#------------------------------------------------------------------------------
+
+0xff 0xf7 0x00 0x80
+0x0c 0xbf
+0xf0 0xf7 0x00 0x80
+
+# NOTZ-NOT: smc #15
+# NOTZ-NOT: smceq #0
+# TZ: smc #15
+# TZ: ite eq
+# TZ: smceq #0
diff --git a/test/MC/Disassembler/ARM/arm-trustzone.txt b/test/MC/Disassembler/ARM/arm-trustzone.txt
new file mode 100644
index 0000000..92d5d6b
--- /dev/null
+++ b/test/MC/Disassembler/ARM/arm-trustzone.txt
@@ -0,0 +1,16 @@
+# RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -disassemble -mattr=-trustzone < %s | FileCheck %s -check-prefix=NOTZ
+# RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -disassemble -mattr=trustzone < %s | FileCheck %s -check-prefix=TZ
+
+
+#------------------------------------------------------------------------------
+# SMC
+#------------------------------------------------------------------------------
+
+0x7f 0x00 0x60 0xe1
+0x70 0x00 0x60 0x01
+
+# NOTZ-NOT: smc #15
+# NOTZ-NOT: smceq #0
+# TZ: smc #15
+# TZ: smceq #0
+
diff --git a/test/MC/Disassembler/ARM/basic-arm-instructions.txt b/test/MC/Disassembler/ARM/basic-arm-instructions.txt
index 1100ce6..9f63e1e 100644
--- a/test/MC/Disassembler/ARM/basic-arm-instructions.txt
+++ b/test/MC/Disassembler/ARM/basic-arm-instructions.txt
@@ -707,8 +707,10 @@
# CHECK: mov r3, #7
# CHECK: mov r4, #4080
# CHECK: mov r5, #16711680
+# CHECK: mov sp, #35
# CHECK: movw r6, #65535
# CHECK: movw r9, #65535
+# CHECK: movw sp, #1193
# CHECK: movs r3, #7
# CHECK: moveq r4, #4080
# CHECK: movseq r5, #16711680
@@ -716,8 +718,10 @@
0x07 0x30 0xa0 0xe3
0xff 0x4e 0xa0 0xe3
0xff 0x58 0xa0 0xe3
+0x23 0xd0 0xa0 0xe3
0xff 0x6f 0x0f 0xe3
0xff 0x9f 0x0f 0xe3
+0xa9 0xd4 0x00 0xe3
0x07 0x30 0xb0 0xe3
0xff 0x4e 0xa0 0x03
0xff 0x58 0xb0 0x03
@@ -740,10 +744,12 @@
#------------------------------------------------------------------------------
# CHECK: movt r3, #7
# CHECK: movt r6, #65535
+# CHECK: movt sp, #3397
# CHECK: movteq r4, #4080
0x07 0x30 0x40 0xe3
0xff 0x6f 0x4f 0xe3
+0x45 0xdd 0x40 0xe3
0xf0 0x4f 0x40 0x03
@@ -1442,15 +1448,6 @@
0xf2 0x4f 0x38 0xc6
#------------------------------------------------------------------------------
-# SMC
-#------------------------------------------------------------------------------
-# CHECK: smc #15
-# CHECK: smceq #0
-
-0x7f 0x00 0x60 0xe1
-0x70 0x00 0x60 0x01
-
-#------------------------------------------------------------------------------
# SMLABB/SMLABT/SMLATB/SMLATT
#------------------------------------------------------------------------------
# CHECK: smlabb r3, r1, r9, r0
@@ -1826,12 +1823,13 @@
# CHECK: strexh r4, r2, [r5
# CHECK: strex r2, r1, [r7
# CHECK: strexd r6, r2, r3, [r8
+# CHECK: strexd sp, r0, r1, [r0]
0x93 0x1f 0xc4 0xe1
0x92 0x4f 0xe5 0xe1
0x91 0x2f 0x87 0xe1
0x92 0x6f 0xa8 0xe1
-
+0x90 0xdf 0xa0 0xe1
#------------------------------------------------------------------------------
# SUB
diff --git a/test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt b/test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt
index 0cff28a..ecab5a5 100644
--- a/test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt
+++ b/test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=arm-apple-darwin9 2>&1 | grep "invalid instruction encoding"
-# XFAIL: *
# LDR_PRE/POST has encoding Inst{4} = 0.
0xde 0x69 0x18 0x46
diff --git a/test/MC/Disassembler/ARM/invalid-hint-arm.txt b/test/MC/Disassembler/ARM/invalid-hint-arm.txt
new file mode 100644
index 0000000..7da96d8
--- /dev/null
+++ b/test/MC/Disassembler/ARM/invalid-hint-arm.txt
@@ -0,0 +1,13 @@
+# RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -disassemble < %s 2>&1 | FileCheck %s
+
+#------------------------------------------------------------------------------
+# Undefined encoding space for hint instructions
+#------------------------------------------------------------------------------
+
+0x05 0xf0 0x20 0xe3
+# CHECK: invalid instruction encoding
+0x41 0xf0 0x20 0xe3
+# CHECK: invalid instruction encoding
+0xfe 0xf0 0x20 0xe3
+# CHECK: invalid instruction encoding
+
diff --git a/test/MC/Disassembler/ARM/invalid-hint-thumb.txt b/test/MC/Disassembler/ARM/invalid-hint-thumb.txt
new file mode 100644
index 0000000..1e41336
--- /dev/null
+++ b/test/MC/Disassembler/ARM/invalid-hint-thumb.txt
@@ -0,0 +1,8 @@
+# RUN: llvm-mc -triple=thumbv7 -disassemble -show-encoding < %s 2>&1 | FileCheck %s
+
+#------------------------------------------------------------------------------
+# Undefined encoding space for hint instructions
+#------------------------------------------------------------------------------
+
+0xaf 0xf3 0x05 0x80
+# CHECK: invalid instruction encoding
diff --git a/test/MC/Disassembler/ARM/thumb2.txt b/test/MC/Disassembler/ARM/thumb2.txt
index 45dace3..31f75b3 100644
--- a/test/MC/Disassembler/ARM/thumb2.txt
+++ b/test/MC/Disassembler/ARM/thumb2.txt
@@ -254,9 +254,12 @@
#------------------------------------------------------------------------------
# CHECK: cbnz r7, #6
# CHECK: cbnz r7, #12
+# CHECK: cbz r4, #64
0x1f 0xb9
0x37 0xb9
+0x04 0xb3
+
#------------------------------------------------------------------------------
# CDP/CDP2
@@ -554,6 +557,7 @@
# CHECK: ldr.w r8, [r8, r2, lsl #2]
# CHECK: ldr.w r7, [sp, r2, lsl #1]
# CHECK: ldr.w r7, [sp, r2]
+# CHECK: ldr pc, [sp], #12
# CHECK: ldr r2, [r4, #255]!
# CHECK: ldr r8, [sp, #4]!
# CHECK: ldr lr, [sp, #-4]!
@@ -567,6 +571,7 @@
0x58 0xf8 0x22 0x80
0x5d 0xf8 0x12 0x70
0x5d 0xf8 0x02 0x70
+0x5d 0xf8 0x0c 0xfb
0x54 0xf8 0xff 0x2f
0x5d 0xf8 0x04 0x8f
0x5d 0xf8 0x04 0xed
diff --git a/test/MC/Disassembler/Mips/mips-dsp.txt b/test/MC/Disassembler/Mips/mips-dsp.txt
new file mode 100644
index 0000000..d10e62c
--- /dev/null
+++ b/test/MC/Disassembler/Mips/mips-dsp.txt
@@ -0,0 +1,13 @@
+# RUN: llvm-mc -triple=mipsel-unknown-linux -mattr=+dsp -disassemble < %s | FileCheck %s
+
+# CHECK: mfhi $21, $ac3
+0x10 0xa8 0x60 0x00
+
+# CHECK: mflo $21, $ac3
+0x12 0xa8 0x60 0x00
+
+# CHECK: mthi $21, $ac3
+0x11 0x18 0xa0 0x02
+
+# CHECK: mtlo $21, $ac3
+0x13 0x18 0xa0 0x02
diff --git a/test/MC/Disassembler/Mips/mips32.txt b/test/MC/Disassembler/Mips/mips32.txt
index 7022486..ef8bf71 100644
--- a/test/MC/Disassembler/Mips/mips32.txt
+++ b/test/MC/Disassembler/Mips/mips32.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: abs.d $f12, $f14
0x46 0x20 0x73 0x05
diff --git a/test/MC/Disassembler/Mips/mips32_le.txt b/test/MC/Disassembler/Mips/mips32_le.txt
index 48fa8e2..a0885a4 100644
--- a/test/MC/Disassembler/Mips/mips32_le.txt
+++ b/test/MC/Disassembler/Mips/mips32_le.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: abs.d $f12, $f14
0x05 0x73 0x20 0x46
diff --git a/test/MC/Disassembler/Mips/mips32r2.txt b/test/MC/Disassembler/Mips/mips32r2.txt
index 3b70db3..991eaa6 100644
--- a/test/MC/Disassembler/Mips/mips32r2.txt
+++ b/test/MC/Disassembler/Mips/mips32r2.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r2 | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: abs.d $f12, $f14
0x46 0x20 0x73 0x05
diff --git a/test/MC/Disassembler/Mips/mips32r2_le.txt b/test/MC/Disassembler/Mips/mips32r2_le.txt
index ecfde7a..10c2938 100644
--- a/test/MC/Disassembler/Mips/mips32r2_le.txt
+++ b/test/MC/Disassembler/Mips/mips32r2_le.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r2 | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: abs.d $f12, $f14
0x05 0x73 0x20 0x46
diff --git a/test/MC/Disassembler/Mips/mips64.txt b/test/MC/Disassembler/Mips/mips64.txt
index 38b1377..b887473 100644
--- a/test/MC/Disassembler/Mips/mips64.txt
+++ b/test/MC/Disassembler/Mips/mips64.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: daddiu $11, $26, 31949
0x67 0x4b 0x7c 0xcd
diff --git a/test/MC/Disassembler/Mips/mips64_le.txt b/test/MC/Disassembler/Mips/mips64_le.txt
index a7ef0e4..ddc3c2b 100644
--- a/test/MC/Disassembler/Mips/mips64_le.txt
+++ b/test/MC/Disassembler/Mips/mips64_le.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: daddiu $11, $26, 31949
0xcd 0x7c 0x4b 0x67
diff --git a/test/MC/Disassembler/Mips/mips64r2.txt b/test/MC/Disassembler/Mips/mips64r2.txt
index 0b421fc..cee6f3c 100644
--- a/test/MC/Disassembler/Mips/mips64r2.txt
+++ b/test/MC/Disassembler/Mips/mips64r2.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mattr +mips64r2 | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: daddiu $11, $26, 31949
0x67 0x4b 0x7c 0xcd
diff --git a/test/MC/Disassembler/Mips/mips64r2_le.txt b/test/MC/Disassembler/Mips/mips64r2_le.txt
index c1d326f..82e4d6a 100644
--- a/test/MC/Disassembler/Mips/mips64r2_le.txt
+++ b/test/MC/Disassembler/Mips/mips64r2_le.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux -mattr +mips64r2 | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: daddiu $11, $26, 31949
0xcd 0x7c 0x4b 0x67
diff --git a/test/MC/Disassembler/X86/intel-syntax.txt b/test/MC/Disassembler/X86/intel-syntax.txt
index 27694cd..57e602f 100644
--- a/test/MC/Disassembler/X86/intel-syntax.txt
+++ b/test/MC/Disassembler/X86/intel-syntax.txt
@@ -110,3 +110,12 @@
# CHECK: vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8
0xc4 0x02 0x39 0x90 0x14 0x4f
+
+# CHECK: xsave64 OPAQUE PTR [RAX]
+0x48 0x0f 0xae 0x20
+
+# CHECK: xrstor64 OPAQUE PTR [RAX]
+0x48 0x0f 0xae 0x28
+
+# CHECK: xsaveopt64 OPAQUE PTR [RAX]
+0x48 0x0f 0xae 0x30
diff --git a/test/MC/Disassembler/X86/simple-tests.txt b/test/MC/Disassembler/X86/simple-tests.txt
index 5ea40eb..9827a18 100644
--- a/test/MC/Disassembler/X86/simple-tests.txt
+++ b/test/MC/Disassembler/X86/simple-tests.txt
@@ -753,3 +753,18 @@
# CHECK: lock
# CHECK-NEXT: xaddq %rcx, %rbx
0xf0 0x48 0x0f 0xc1 0xcb
+
+# rdar://13493622 lldb doesn't print the x86 rep/repne prefix when disassembling
+# CHECK: repne
+# CHECK-NEXT: movsd
+0xf2 0xa5
+# CHECK: repne
+# CHECK-NEXT: movsq
+0xf2 0x48 0xa5
+# CHECK: repne
+# CHECK-NEXT: movb $0, (%rax)
+0xf2 0xc6 0x0 0x0
+# CHECK: rep
+# CHECK-NEXT: lock
+# CHECK-NEXT: incl (%rax)
+0xf3 0xf0 0xff 0x00
diff --git a/test/MC/Disassembler/X86/x86-64.txt b/test/MC/Disassembler/X86/x86-64.txt
index 5de1d59..c285af7 100644
--- a/test/MC/Disassembler/X86/x86-64.txt
+++ b/test/MC/Disassembler/X86/x86-64.txt
@@ -112,3 +112,18 @@
# CHECK: xabort $13
0xc6 0xf8 0x0d
+
+# CHECK: xsaveq (%rax)
+0x48 0x0f 0xae 0x20
+
+# CHECK: xrstorq (%rax)
+0x48 0x0f 0xae 0x28
+
+# CHECK: xsaveoptq (%rax)
+0x48 0x0f 0xae 0x30
+
+# CHECK: clac
+0x0f 0x01 0xca
+
+# CHECK: stac
+0x0f 0x01 0xcb
diff --git a/test/MC/Disassembler/XCore/xcore.txt b/test/MC/Disassembler/XCore/xcore.txt
index 8ad7588..d509aff 100644
--- a/test/MC/Disassembler/XCore/xcore.txt
+++ b/test/MC/Disassembler/XCore/xcore.txt
@@ -1,5 +1,4 @@
# RUN: llvm-mc --disassemble %s -triple=xcore-xmos-elf | FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# 0r instructions
@@ -95,6 +94,9 @@
# CHECK: bla r6
0xe6 0x27
+# CHECK: bru r8
+0xe8 0x2f
+
# CHECK: syncr res[r7]
0xf7 0x87
@@ -237,8 +239,8 @@
# CHECK: mkmsk r4, 24
0x72 0xa7
-# CHECK: outct res[r3], r0
-0xcc 0x4e
+# CHECK: outct res[r3], 0
+0xdc 0x4e
# CHECK: sext r8, 16
0xb1 0x37
@@ -383,8 +385,8 @@
# CHECK: ldaw r9, r1[r2]
0x96 0xf8 0xec 0x1f
-# CHECK: ldaw r8, r7[r11]
-0xcf 0xfd 0xec 0x1f
+# CHECK: ldaw r8, r7[-r11]
+0xcf 0xfd 0xec 0x27
# CHECK: mul r0, r4, r2
0xc2 0xf8 0xec 0x3f
@@ -398,6 +400,9 @@
# CHECK: st16 r5, r3[r8]
0xdc 0xfc 0xec 0x87
+# CHECK: st8 r9, r1[r3]
+0x97 0xf8 0xec 0x8f
+
# CHECK: stw r7, r10[r1]
0xf9 0xf9 0xec 0x07
@@ -453,36 +458,72 @@
# CHECK: ldaw r1, dp[456]
0x07 0xf0 0x48 0x60
+# CHECK: ldaw cp, dp[5]
+0x05 0x63
+
+# CHECK: ldaw sp, dp[9929]
+0x9b 0xf0 0x89 0x63
+
# CHECK: ldaw r3, sp[2]
0xc2 0x64
# CHECK: ldaw r8, sp[65535]
0xff 0xf3 0x3f 0x66
+# CHECK: ldaw sp, sp[41]
+0xa9 0x67
+
+# CHECK: ldaw sp, sp[13121]
+0xcd 0xf0 0x81 0x67
+
# CHECK: ldc r3, 30
0xde 0x68
# CHECK: ldc r11, 1000
0x0f 0xf0 0xe8 0x6a
+# CHECK: ldc sp, 0
+0x80 0x6b
+
+# CHECK: ldc lr, 81
+0x01 0xf0 0xd1 0x6b
+
# CHECK: ldw r0, cp[4]
0x04 0x6c
# CHECK: ldw r1, cp[32345]
0xf9 0xf1 0x59 0x6c
+# CHECK: ldw cp, cp[8]
+0x08 0x6f
+
+# CHECK: ldw sp, cp[10222]
+0x9f 0xf0 0xae 0x6f
+
# CHECK: ldw r10, dp[16]
0x90 0x5a
# CHECK: ldw r10, dp[76]
0x01 0xf0 0x8c 0x5a
+# CHECK: ldw lr, dp[8]
+0xc8 0x5b
+
+# CHECK: ldw dp, dp[33221]
+0x07 0xf2 0x45 0x5b
+
# CHECK: ldw r8, sp[51]
0x33 0x5e
# CHECK: ldw r8, sp[1225]
0x13 0xf0 0x09 0x5e
+# CHECK: ldw cp, sp[31]
+0x1f 0x5f
+
+# CHECK: ldw sp, sp[1000]
+0x0f 0xf0 0xa8 0x5f
+
# CHECK: setc res[r5], 36
0x64 0xe9
@@ -495,12 +536,24 @@
# CHECK: stw r9, dp[654]
0x0a 0xf0 0x4e 0x52
+# CHECK: stw lr, dp[23]
+0xd7 0x53
+
+# CHECK: stw sp, dp[44442]
+0xb6 0xf2 0x9a 0x53
+
# CHECK: stw r1, sp[32]
0x60 0x54
# CHECK: stw r0, sp[8761]
0x88 0xf0 0x39 0x54
+# CHECK: stw cp, sp[63]
+0x3f 0x57
+
+# CHECK: stw lr, sp[4391]
+0x44 0xf0 0xe7 0x57
+
# u6 / lu6 instructions
# CHECK: bu -20
@@ -610,8 +663,8 @@
# CHECK: ldw r11, cp[132]
0x84 0xe4
-# CHECK: ldw r11, cp[3444]
-0x35 0xf0 0xf4 0x6e
+# CHECK: ldw r11, cp[102741]
+0x64 0xf0 0x55 0xe5
# l6r instructions
diff --git a/test/MC/ELF/abs.s b/test/MC/ELF/abs.s
index 48dbe3d..1836f40 100644
--- a/test/MC/ELF/abs.s
+++ b/test/MC/ELF/abs.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that zed will be an ABS symbol
@@ -6,11 +6,12 @@
.Lbar:
zed = .Lfoo - .Lbar
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000001) # 'zed'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff1)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
+// CHECK: Symbol {
+// CHECK: Name: zed
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF1)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/alias-reloc.s b/test/MC/ELF/alias-reloc.s
index f0db815..c25c259 100644
--- a/test/MC/ELF/alias-reloc.s
+++ b/test/MC/ELF/alias-reloc.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
// Test that this produces a R_X86_64_PLT32 with bar.
@@ -17,36 +17,30 @@ foo2:
.set bar2,foo2
.quad bar2
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000001)
-// CHECK-NEXT: ('r_sym', 0x00000001)
-// CHECK-NEXT: ('r_type', 0x00000004)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-// CHECK-NEXT: ),
-
-// CHECK: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000005)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000005) # 'bar'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-
-// CHECK: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x0000000e) # 'bar2'
-// CHECK-NEXT: ('st_bind', 0x2)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ('st_value', 0x0000000000000005)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[0-9]+}}) zed {
+// CHECK-NEXT: 0x1 R_X86_64_PLT32 bar 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x5 R_X86_64_64 bar2 0x0
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK-NEXT: Name: bar
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+
+// CHECK: Symbol {
+// CHECK: Name: bar2
+// CHECK-NEXT: Value: 0x5
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: zed
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/alias.s b/test/MC/ELF/alias.s
index f382628..0575f41 100644
--- a/test/MC/ELF/alias.s
+++ b/test/MC/ELF/alias.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
foo:
bar = foo
@@ -16,70 +16,78 @@ foo4:
bar4 = foo4
.long foo2
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000005) # 'bar'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x0000001d) # 'bar4'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x2)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 3
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x0000000e) # 'foo3'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000018) # 'foo4'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x2)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x00000013) # 'bar3'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK: # Symbol 10
-// CHECK-NEXT: (('st_name', 0x00000009) # 'bar2'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
+
+// CHECK: Symbols [
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar4
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Function
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo3
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo4
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Function
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .text (0)
+// CHECK: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .data (0)
+// CHECK: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .bss (0)
+// CHECK: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar3
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar2
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/align-bss.s b/test/MC/ELF/align-bss.s
index a59232b..776eef3 100644
--- a/test/MC/ELF/align-bss.s
+++ b/test/MC/ELF/align-bss.s
@@ -1,17 +1,22 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the bss section is correctly aligned
.local foo
.comm foo,2048,16
-// CHECK: ('sh_name', 0x00000007) # '.bss'
-// CHECK-NEXT: ('sh_type', 0x00000008)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000003)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000800)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000010)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
+// CHECK: Section {
+// CHECK: Name: .bss
+// CHECK-NEXT: Type: SHT_NOBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 2048
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 16
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/align-nops.s b/test/MC/ELF/align-nops.s
index 3bf96e9..5e33868 100644
--- a/test/MC/ELF/align-nops.s
+++ b/test/MC/ELF/align-nops.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
// Test that we get optimal nops in text
.text
@@ -15,26 +15,40 @@ f0:
.long 0
.align 8
-// CHECK: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000010)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '00000000 0f1f4000 00000000 0f1f4000')
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 16
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 00000000 0F1F4000 00000000 0F1F4000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-// CHECK: (('sh_name', 0x00000026) # '.data'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000003)
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000010)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '00000000 90909090 00000000 00000000')
+// CHECK: Section {
+// CHECK: Name: .data
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 16
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 00000000 90909090 00000000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/align-size.s b/test/MC/ELF/align-size.s
index f628291..84a6e99 100644
--- a/test/MC/ELF/align-size.s
+++ b/test/MC/ELF/align-size.s
@@ -1,13 +1,18 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the alignment does contribute to the size of the section.
.zero 4
.align 8
-// CHECK: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000008)
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 8
+// CHECK: }
diff --git a/test/MC/ELF/align-text.s b/test/MC/ELF/align-text.s
index 2fd3cba..b00af4a 100644
--- a/test/MC/ELF/align-text.s
+++ b/test/MC/ELF/align-text.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the .text directive doesn't cause alignment.
@@ -6,14 +6,18 @@
.text
.zero 1
-// CHECK: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000002)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 2
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/align.s b/test/MC/ELF/align.s
index 3142ffb..46be3df 100644
--- a/test/MC/ELF/align.s
+++ b/test/MC/ELF/align.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the alignment of rodata doesn't force a alignment of the
// previous section (.bss)
@@ -7,26 +7,33 @@
.section .rodata,"a",@progbits
.align 8
-// CHECK: # Section 3
-// CHECK-NEXT: (('sh_name', 0x00000007) # '.bss'
-// CHECK-NEXT: ('sh_type', 0x00000008)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000003)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000044)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000026) # '.rodata'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
+// CHECK: Section {
+// CHECK: Name: .bss
+// CHECK-NEXT: Type: SHT_NOBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x44
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 4
+// CHECK-NEXT: Name: .rodata
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/basic-elf-32.s b/test/MC/ELF/basic-elf-32.s
index 2c6a984..3ddb539 100644
--- a/test/MC/ELF/basic-elf-32.s
+++ b/test/MC/ELF/basic-elf-32.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -h -s -r -t | FileCheck %s
.text
.globl main
@@ -30,49 +30,53 @@ main: # @main
.section .note.GNU-stack,"",@progbits
-// CHECK: ('e_indent[EI_CLASS]', 0x01)
-// CHECK: ('e_indent[EI_DATA]', 0x01)
-// CHECK: ('e_indent[EI_VERSION]', 0x01)
-// CHECK: ('_sections', [
-// CHECK: # Section 0
-// CHECK: (('sh_name', 0x00000000) # ''
+// CHECK: ElfHeader {
+// CHECK: Class: 32-bit
+// CHECK: DataEncoding: LittleEndian
+// CHECK: FileVersion: 1
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Index: 0
+// CHECK: Name: (0)
-// CHECK: # '.text'
+// CHECK: Name: .text
-// CHECK: # '.rel.text'
+// CHECK: Name: .rel.text
-// CHECK: ('_relocations', [
-// CHECK: # Relocation 0
-// CHECK: (('r_offset', 0x00000006)
-// CHECK: ('r_type', 0x01)
-// CHECK: ),
-// CHECK: # Relocation 1
-// CHECK: (('r_offset', 0x0000000b)
-// CHECK: ('r_type', 0x02)
-// CHECK: ),
-// CHECK: # Relocation 2
-// CHECK: (('r_offset', 0x00000012)
-// CHECK: ('r_type', 0x01)
-// CHECK: ),
-// CHECK: # Relocation 3
-// CHECK: (('r_offset', 0x00000017)
-// CHECK: ('r_type', 0x02)
-// CHECK: ),
-// CHECK: ])
+// CHECK: Relocations [
+// CHECK: Section (1) .text {
+// CHECK: 0x6 R_386_32 .rodata.str1.1
+// CHECK: 0xB R_386_PC32 puts
+// CHECK: 0x12 R_386_32 .rodata.str1.1
+// CHECK: 0x17 R_386_PC32 puts
+// CHECK: }
+// CHECK: ]
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
+// CHECK: }
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
+// CHECK: }
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
+// CHECK: }
-// CHECK: # 'main'
-// CHECK: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x2)
+// CHECK: Symbol {
+// CHECK: Name: main
+// CHECK: Binding: Global
+// CHECK: Type: Function
+// CHECK: }
-// CHECK: # 'puts'
-// CHECK: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
+// CHECK: Symbol {
+// CHECK: Name: puts
+// CHECK: Binding: Global
+// CHECK: Type: None
+// CHECK: }
diff --git a/test/MC/ELF/basic-elf-64.s b/test/MC/ELF/basic-elf-64.s
index 38ffaa7..f98623a 100644
--- a/test/MC/ELF/basic-elf-64.s
+++ b/test/MC/ELF/basic-elf-64.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -h -s -r -t | FileCheck %s
.text
.globl main
@@ -30,53 +30,51 @@ main: # @main
.section .note.GNU-stack,"",@progbits
-// CHECK: ('e_indent[EI_CLASS]', 0x02)
-// CHECK: ('e_indent[EI_DATA]', 0x01)
-// CHECK: ('e_indent[EI_VERSION]', 0x01)
-// CHECK: ('_sections', [
-// CHECK: # Section 0
-// CHECK: (('sh_name', 0x00000000) # ''
+// CHECK: ElfHeader {
+// CHECK: Class: 64-bit
+// CHECK: DataEncoding: LittleEndian
+// CHECK: FileVersion: 1
+// CHECK: }
+// CHECK: Sections [
+// CHECK: Section {
+// CHECK: Index: 0
+// CHECK: Name: (0)
-// CHECK: # '.text'
+// CHECK: Name: .text
-// CHECK: # '.rela.text'
+// CHECK: Name: .rela.text
-// CHECK: ('_relocations', [
-// CHECK: # Relocation 0
-// CHECK: (('r_offset', 0x0000000000000005)
-// CHECK: ('r_type', 0x0000000a)
-// CHECK: ('r_addend', 0x0000000000000000)
-// CHECK: ),
-// CHECK: # Relocation 1
-// CHECK: (('r_offset', 0x000000000000000a)
-// CHECK: ('r_type', 0x00000002)
-// CHECK: ('r_addend', 0xfffffffffffffffc)
-// CHECK: ),
-// CHECK: # Relocation 2
-// CHECK: (('r_offset', 0x000000000000000f)
-// CHECK: ('r_type', 0x0000000a)
-// CHECK: ('r_addend', 0x0000000000000006)
-// CHECK: ),
-// CHECK: # Relocation 3
-// CHECK: (('r_offset', 0x0000000000000014)
-// CHECK: ('r_type', 0x00000002)
-// CHECK: ('r_addend', 0xfffffffffffffffc)
-// CHECK: ),
-// CHECK: ])
+// CHECK: Relocations [
+// CHECK: Section (1) .text {
+// CHECK: 0x5 R_X86_64_32 .rodata.str1.1 0x0
+// CHECK: 0xA R_X86_64_PC32 puts 0xFFFFFFFFFFFFFFFC
+// CHECK: 0xF R_X86_64_32 .rodata.str1.1 0x6
+// CHECK: 0x14 R_X86_64_PC32 puts 0xFFFFFFFFFFFFFFFC
+// CHECK: }
+// CHECK: ]
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
+// CHECK: }
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
+// CHECK: Symbol {
+// CHECK: Binding: Local
+// CHECK: Type: Section
+// CHECK: }
-// CHECK: # 'main'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x2)
+// CHECK: Symbol {
+// CHECK: Name: main
+// CHECK: Binding: Global
+// CHECK: Type: Function
+// CHECK: }
-// CHECK: # 'puts'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
+// CHECK: Symbol {
+// CHECK: Name: puts
+// CHECK: Binding: Global
+// CHECK: Type: None
+// CHECK: }
diff --git a/test/MC/ELF/call-abs.s b/test/MC/ELF/call-abs.s
index 795a659..81265a1 100644
--- a/test/MC/ELF/call-abs.s
+++ b/test/MC/ELF/call-abs.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s
.text
.globl f
@@ -15,10 +15,8 @@ f: # @f
.section .note.GNU-stack,"",@progbits
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x00000004)
-// CHECK-NEXT: ('r_sym', 0x000000)
-// CHECK-NEXT: ('r_type', 0x02)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Relocations [
+// CHECK: Section ({{[^ ]+}}) {{[^ ]+}} {
+// CHECK-NEXT: 0x4 R_386_PC32 -
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/cfi-adjust-cfa-offset.s b/test/MC/ELF/cfi-adjust-cfa-offset.s
index f0d9c5f..137b8b6 100644
--- a/test/MC/ELF/cfi-adjust-cfa-offset.s
+++ b/test/MC/ELF/cfi-adjust-cfa-offset.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -11,36 +11,43 @@ f:
ret
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000038)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 1c000000 1c000000 00000000 0a000000 00440e10 410e1444 0e080000 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x00000000000003a0)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 56
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000
+// CHECK-NEXT: 0020: 00000000 0A000000 00440E10 410E1444
+// CHECK-NEXT: 0030: 0E080000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x3A0
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-advance-loc2.s b/test/MC/ELF/cfi-advance-loc2.s
index b3c08e0..1cad325 100644
--- a/test/MC/ELF/cfi-advance-loc2.s
+++ b/test/MC/ELF/cfi-advance-loc2.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
// test that this produces a correctly encoded cfi_advance_loc2
@@ -10,36 +10,41 @@ f:
nop
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000148)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 01010000 00030001 0e080000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x148
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 01010000 00030001 0E080000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-
-// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000490)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x490
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-def-cfa-offset.s b/test/MC/ELF/cfi-def-cfa-offset.s
index 0ed2be0..f1a54a8 100644
--- a/test/MC/ELF/cfi-def-cfa-offset.s
+++ b/test/MC/ELF/cfi-def-cfa-offset.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -10,37 +10,43 @@ f:
ret
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 0a000000 00440e10 450e0800')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 0A000000 00440E10 450E0800
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-// CHECK: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000398)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x398
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-def-cfa-register.s b/test/MC/ELF/cfi-def-cfa-register.s
index e87b4f6..b1e74ea 100644
--- a/test/MC/ELF/cfi-def-cfa-register.s
+++ b/test/MC/ELF/cfi-def-cfa-register.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,35 +7,41 @@ f:
nop
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410d06 00000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00410D06 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-def-cfa.s b/test/MC/ELF/cfi-def-cfa.s
index e25bf5c..abde0de 100644
--- a/test/MC/ELF/cfi-def-cfa.s
+++ b/test/MC/ELF/cfi-def-cfa.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,41 @@ f:
nop
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410c07 08000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00410C07 08000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-
-// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-escape.s b/test/MC/ELF/cfi-escape.s
index 3a5af00..a910fab 100644
--- a/test/MC/ELF/cfi-escape.s
+++ b/test/MC/ELF/cfi-escape.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,42 @@ f:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00411507 7f000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00411507 7F000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-offset.s b/test/MC/ELF/cfi-offset.s
index 9acb76c..f7f95fb 100644
--- a/test/MC/ELF/cfi-offset.s
+++ b/test/MC/ELF/cfi-offset.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,41 @@ f:
nop
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00418602 00000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00418602 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-
-// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-register.s b/test/MC/ELF/cfi-register.s
index 3772309..f7a07e4 100644
--- a/test/MC/ELF/cfi-register.s
+++ b/test/MC/ELF/cfi-register.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,42 @@ f:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410906 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00410906 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-rel-offset.s b/test/MC/ELF/cfi-rel-offset.s
index 82bbd8d..35a73ef 100644
--- a/test/MC/ELF/cfi-rel-offset.s
+++ b/test/MC/ELF/cfi-rel-offset.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -14,36 +14,43 @@ f:
.cfi_rel_offset 6,0
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000040)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 24000000 1c000000 00000000 05000000 00410e08 410d0641 11067f41 0e104186 02000000 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x00000000000003a0)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 64
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 24000000 1C000000
+// CHECK-NEXT: 0020: 00000000 05000000 00410E08 410D0641
+// CHECK-NEXT: 0030: 11067F41 0E104186 02000000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x3A0
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-rel-offset2.s b/test/MC/ELF/cfi-rel-offset2.s
index 7726adb..5817d1f 100644
--- a/test/MC/ELF/cfi-rel-offset2.s
+++ b/test/MC/ELF/cfi-rel-offset2.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -6,36 +6,42 @@ f:
.cfi_rel_offset 6,16
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 01000000 00411106 7f000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 01000000 00411106 7F000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-remember.s b/test/MC/ELF/cfi-remember.s
index 1717662..932a182 100644
--- a/test/MC/ELF/cfi-remember.s
+++ b/test/MC/ELF/cfi-remember.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -9,37 +9,42 @@ f:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 03000000 00410a41 0b000000')
-// CHECK-NEXT: ),
-
-// CHECK: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 03000000 00410A41 0B000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-restore.s b/test/MC/ELF/cfi-restore.s
index 0fc3129..6c25d5b 100644
--- a/test/MC/ELF/cfi-restore.s
+++ b/test/MC/ELF/cfi-restore.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,42 @@ f:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 0041c600 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 0041C600 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-same-value.s b/test/MC/ELF/cfi-same-value.s
index 4c80a0a..075c6b9 100644
--- a/test/MC/ELF/cfi-same-value.s
+++ b/test/MC/ELF/cfi-same-value.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -7,36 +7,42 @@ f:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410806 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00410806 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-sections.s b/test/MC/ELF/cfi-sections.s
index b256bbf..15a79e5 100644
--- a/test/MC/ELF/cfi-sections.s
+++ b/test/MC/ELF/cfi-sections.s
@@ -1,5 +1,5 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_64 %s
-// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_32 %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 %s
.cfi_sections .debug_frame
@@ -13,26 +13,43 @@ f2:
nop
.cfi_endproc
-// ELF_64: (('sh_name', 0x00000011) # '.debug_frame'
-// ELF_64-NEXT: ('sh_type', 0x00000001)
-// ELF_64-NEXT: ('sh_flags', 0x0000000000000000)
-// ELF_64-NEXT: ('sh_addr', 0x0000000000000000)
-// ELF_64-NEXT: ('sh_offset', 0x0000000000000048)
-// ELF_64-NEXT: ('sh_size', 0x0000000000000048)
-// ELF_64-NEXT: ('sh_link', 0x00000000)
-// ELF_64-NEXT: ('sh_info', 0x00000000)
-// ELF_64-NEXT: ('sh_addralign', 0x0000000000000008)
-// ELF_64-NEXT: ('sh_entsize', 0x0000000000000000)
-// ELF_64-NEXT: ('_section_data', '14000000 ffffffff 01000178 100c0708 90010000 00000000 14000000 00000000 00000000 00000000 01000000 00000000 14000000 00000000 00000000 00000000 01000000 00000000')
+// ELF_64: Section {
+// ELF_64: Name: .debug_frame
+// ELF_64-NEXT: Type: SHT_PROGBITS
+// ELF_64-NEXT: Flags [
+// ELF_64-NEXT: ]
+// ELF_64-NEXT: Address: 0x0
+// ELF_64-NEXT: Offset: 0x48
+// ELF_64-NEXT: Size: 72
+// ELF_64-NEXT: Link: 0
+// ELF_64-NEXT: Info: 0
+// ELF_64-NEXT: AddressAlignment: 8
+// ELF_64-NEXT: EntrySize: 0
+// ELF_64-NEXT: SectionData (
+// ELF_64-NEXT: 0000: 14000000 FFFFFFFF 01000178 100C0708
+// ELF_64-NEXT: 0010: 90010000 00000000 14000000 00000000
+// ELF_64-NEXT: 0020: 00000000 00000000 01000000 00000000
+// ELF_64-NEXT: 0030: 14000000 00000000 00000000 00000000
+// ELF_64-NEXT: 0040: 01000000 00000000
+// ELF_64-NEXT: )
+// ELF_64-NEXT: }
-// ELF_32: (('sh_name', 0x00000010) # '.debug_frame'
-// ELF_32-NEXT: ('sh_type', 0x00000001)
-// ELF_32-NEXT: ('sh_flags', 0x00000000)
-// ELF_32-NEXT: ('sh_addr', 0x00000000)
-// ELF_32-NEXT: ('sh_offset', 0x00000038)
-// ELF_32-NEXT: ('sh_size', 0x00000034)
-// ELF_32-NEXT: ('sh_link', 0x00000000)
-// ELF_32-NEXT: ('sh_info', 0x00000000)
-// ELF_32-NEXT: ('sh_addralign', 0x00000004)
-// ELF_32-NEXT: ('sh_entsize', 0x00000000)
-// ELF_32-NEXT: ('_section_data', '10000000 ffffffff 0100017c 080c0404 88010000 0c000000 00000000 00000000 01000000 0c000000 00000000 01000000 01000000')
+// ELF_32: Section {
+// ELF_32: Name: .debug_frame
+// ELF_32-NEXT: Type: SHT_PROGBITS
+// ELF_32-NEXT: Flags [
+// ELF_32-NEXT: ]
+// ELF_32-NEXT: Address: 0x0
+// ELF_32-NEXT: Offset: 0x38
+// ELF_32-NEXT: Size: 52
+// ELF_32-NEXT: Link: 0
+// ELF_32-NEXT: Info: 0
+// ELF_32-NEXT: AddressAlignment: 4
+// ELF_32-NEXT: EntrySize: 0
+// ELF_32-NEXT: SectionData (
+// ELF_32-NEXT: 0000: 10000000 FFFFFFFF 0100017C 080C0404
+// ELF_32-NEXT: 0010: 88010000 0C000000 00000000 00000000
+// ELF_32-NEXT: 0020: 01000000 0C000000 00000000 01000000
+// ELF_32-NEXT: 0030: 01000000
+// ELF_32-NEXT: )
+// ELF_32-NEXT: }
diff --git a/test/MC/ELF/cfi-signal-frame.s b/test/MC/ELF/cfi-signal-frame.s
index cf6d160..0233119 100644
--- a/test/MC/ELF/cfi-signal-frame.s
+++ b/test/MC/ELF/cfi-signal-frame.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
f:
.cfi_startproc
@@ -9,15 +9,25 @@ g:
.cfi_startproc
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000058)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5253 00017810 011b0c07 08900100 10000000 1c000000 00000000 00000000 00000000 14000000 00000000 017a5200 01781001 1b0c0708 90010000 10000000 1c000000 00000000 00000000 00000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 88
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5253 00017810
+// CHECK-NEXT: 0010: 011B0C07 08900100 10000000 1C000000
+// CHECK-NEXT: 0020: 00000000 00000000 00000000 14000000
+// CHECK-NEXT: 0030: 00000000 017A5200 01781001 1B0C0708
+// CHECK-NEXT: 0040: 90010000 10000000 1C000000 00000000
+// CHECK-NEXT: 0050: 00000000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/cfi-undefined.s b/test/MC/ELF/cfi-undefined.s
index 28049fa..c83b47c 100644
--- a/test/MC/ELF/cfi-undefined.s
+++ b/test/MC/ELF/cfi-undefined.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f:
.cfi_startproc
@@ -6,36 +6,43 @@ f:
.cfi_undefined %rbp
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410706 00000000')
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000390)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 02000000 00410706 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x390
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/cfi-zero-addr-delta.s b/test/MC/ELF/cfi-zero-addr-delta.s
index 9e818e6..4ac0e34 100644
--- a/test/MC/ELF/cfi-zero-addr-delta.s
+++ b/test/MC/ELF/cfi-zero-addr-delta.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
// Test that we don't produce a DW_CFA_advance_loc 0
@@ -14,35 +14,41 @@ f:
nop
.cfi_endproc
-// CHECK: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000048)
-// CHECK-NEXT: ('sh_size', 0x0000000000000038)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 1c000000 1c000000 00000000 04000000 00410e10 410a0e08 410b0000 00000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 56
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
+// CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000
+// CHECK-NEXT: 0020: 00000000 04000000 00410E10 410A0E08
+// CHECK-NEXT: 0030: 410B0000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
-// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000398)
-// CHECK-NEXT: ('sh_size', 0x0000000000000018)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x398
+// CHECK-NEXT: Size: 24
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/cfi.s b/test/MC/ELF/cfi.s
index 9320894..98f4fa9 100644
--- a/test/MC/ELF/cfi.s
+++ b/test/MC/ELF/cfi.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
f1:
.cfi_startproc
@@ -212,463 +212,220 @@ f36:
nop
.cfi_endproc
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000068)
-// CHECK-NEXT: ('sh_size', 0x00000000000006c8)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '14000000 00000000 017a4c52 00017810 02031b0c 07089001 14000000 1c000000 00000000 01000000 04000000 00000000 20000000 00000000 017a504c 52000178 100b0000 00000000 00000003 1b0c0708 90010000 14000000 28000000 00000000 01000000 04000000 00000000 14000000 70000000 00000000 01000000 04000000 00000000 20000000 00000000 017a504c 52000178 100b0000 00000000 00000002 1b0c0708 90010000 10000000 28000000 00000000 01000000 02000000 18000000 00000000 017a5052 00017810 04020000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06030000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a040000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 040a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 060b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a0c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a080000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a100000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04120000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06130000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a140000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 041a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 061b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a1c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a180000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a800000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04820000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06830000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a840000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 048a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 068b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a8c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a880000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a900000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04920000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06930000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a940000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 049a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 069b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a9c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a980000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000')
-// CHECK-NEXT: ),
-
-// CHECK: # Section 5
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000e30)
-// CHECK-NEXT: ('sh_size', 0x00000000000006c0)
-// CHECK-NEXT: ('sh_link', 0x00000007)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000020)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000029)
-// CHECK-NEXT: ('r_sym', 0x00000028)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 2
-// CHECK-NEXT: (('r_offset', 0x0000000000000043)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 3
-// CHECK-NEXT: (('r_offset', 0x000000000000005c)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000001)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 4
-// CHECK-NEXT: (('r_offset', 0x0000000000000065)
-// CHECK-NEXT: ('r_sym', 0x00000028)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 5
-// CHECK-NEXT: (('r_offset', 0x0000000000000074)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000002)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 6
-// CHECK-NEXT: (('r_offset', 0x000000000000007d)
-// CHECK-NEXT: ('r_sym', 0x00000028)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 7
-// CHECK-NEXT: (('r_offset', 0x0000000000000097)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 8
-// CHECK-NEXT: (('r_offset', 0x00000000000000b0)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000003)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 9
-// CHECK-NEXT: (('r_offset', 0x00000000000000b9)
-// CHECK-NEXT: ('r_sym', 0x00000028)
-// CHECK-NEXT: ('r_type', 0x0000000c)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 10
-// CHECK-NEXT: (('r_offset', 0x00000000000000ce)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000c)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 11
-// CHECK-NEXT: (('r_offset', 0x00000000000000e0)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000004)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 12
-// CHECK-NEXT: (('r_offset', 0x00000000000000fe)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 13
-// CHECK-NEXT: (('r_offset', 0x0000000000000110)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000005)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 14
-// CHECK-NEXT: (('r_offset', 0x000000000000012e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 15
-// CHECK-NEXT: (('r_offset', 0x0000000000000144)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000006)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 16
-// CHECK-NEXT: (('r_offset', 0x0000000000000162)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000c)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 17
-// CHECK-NEXT: (('r_offset', 0x0000000000000174)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000007)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 18
-// CHECK-NEXT: (('r_offset', 0x0000000000000192)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 19
-// CHECK-NEXT: (('r_offset', 0x00000000000001a4)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000008)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 20
-// CHECK-NEXT: (('r_offset', 0x00000000000001c2)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 21
-// CHECK-NEXT: (('r_offset', 0x00000000000001d8)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000009)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 22
-// CHECK-NEXT: (('r_offset', 0x00000000000001f6)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 23
-// CHECK-NEXT: (('r_offset', 0x000000000000020c)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000a)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 24
-// CHECK-NEXT: (('r_offset', 0x000000000000022a)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 25
-// CHECK-NEXT: (('r_offset', 0x0000000000000240)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000b)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 26
-// CHECK-NEXT: (('r_offset', 0x000000000000025e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000d)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 27
-// CHECK-NEXT: (('r_offset', 0x0000000000000270)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000c)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 28
-// CHECK-NEXT: (('r_offset', 0x000000000000028e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 29
-// CHECK-NEXT: (('r_offset', 0x00000000000002a0)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000d)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 30
-// CHECK-NEXT: (('r_offset', 0x00000000000002be)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 31
-// CHECK-NEXT: (('r_offset', 0x00000000000002d4)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000e)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 32
-// CHECK-NEXT: (('r_offset', 0x00000000000002f2)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000d)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 33
-// CHECK-NEXT: (('r_offset', 0x0000000000000304)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000000f)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 34
-// CHECK-NEXT: (('r_offset', 0x0000000000000322)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 35
-// CHECK-NEXT: (('r_offset', 0x0000000000000334)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000010)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 36
-// CHECK-NEXT: (('r_offset', 0x0000000000000352)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 37
-// CHECK-NEXT: (('r_offset', 0x0000000000000368)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000011)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 38
-// CHECK-NEXT: (('r_offset', 0x0000000000000386)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 39
-// CHECK-NEXT: (('r_offset', 0x000000000000039c)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000012)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 40
-// CHECK-NEXT: (('r_offset', 0x00000000000003ba)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 41
-// CHECK-NEXT: (('r_offset', 0x00000000000003d0)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000013)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 42
-// CHECK-NEXT: (('r_offset', 0x00000000000003ee)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000c)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 43
-// CHECK-NEXT: (('r_offset', 0x0000000000000400)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000014)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 44
-// CHECK-NEXT: (('r_offset', 0x000000000000041e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 45
-// CHECK-NEXT: (('r_offset', 0x0000000000000430)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000015)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 46
-// CHECK-NEXT: (('r_offset', 0x000000000000044e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 47
-// CHECK-NEXT: (('r_offset', 0x0000000000000464)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000016)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 48
-// CHECK-NEXT: (('r_offset', 0x0000000000000482)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000c)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 49
-// CHECK-NEXT: (('r_offset', 0x0000000000000494)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000017)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 50
-// CHECK-NEXT: (('r_offset', 0x00000000000004b2)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 51
-// CHECK-NEXT: (('r_offset', 0x00000000000004c4)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000018)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 52
-// CHECK-NEXT: (('r_offset', 0x00000000000004e2)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 53
-// CHECK-NEXT: (('r_offset', 0x00000000000004f8)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000019)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 54
-// CHECK-NEXT: (('r_offset', 0x0000000000000516)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000001)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 55
-// CHECK-NEXT: (('r_offset', 0x000000000000052c)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001a)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 56
-// CHECK-NEXT: (('r_offset', 0x000000000000054a)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 57
-// CHECK-NEXT: (('r_offset', 0x0000000000000560)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001b)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 58
-// CHECK-NEXT: (('r_offset', 0x000000000000057e)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000d)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 59
-// CHECK-NEXT: (('r_offset', 0x0000000000000590)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001c)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 60
-// CHECK-NEXT: (('r_offset', 0x00000000000005ae)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 61
-// CHECK-NEXT: (('r_offset', 0x00000000000005c0)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001d)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 62
-// CHECK-NEXT: (('r_offset', 0x00000000000005de)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 63
-// CHECK-NEXT: (('r_offset', 0x00000000000005f4)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001e)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 64
-// CHECK-NEXT: (('r_offset', 0x0000000000000612)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x0000000d)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 65
-// CHECK-NEXT: (('r_offset', 0x0000000000000624)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000001f)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 66
-// CHECK-NEXT: (('r_offset', 0x0000000000000642)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 67
-// CHECK-NEXT: (('r_offset', 0x0000000000000654)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000020)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 68
-// CHECK-NEXT: (('r_offset', 0x0000000000000672)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 69
-// CHECK-NEXT: (('r_offset', 0x0000000000000688)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000021)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 70
-// CHECK-NEXT: (('r_offset', 0x00000000000006a6)
-// CHECK-NEXT: ('r_sym', 0x00000029)
-// CHECK-NEXT: ('r_type', 0x00000018)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 71
-// CHECK-NEXT: (('r_offset', 0x00000000000006bc)
-// CHECK-NEXT: ('r_sym', 0x00000024)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000022)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x68
+// CHECK-NEXT: Size: 1736
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0
+// CHECK-NEXT: 0x29 R_X86_64_32 bar 0x0
+// CHECK-NEXT: 0x43 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x5C R_X86_64_PC32 .text 0x1
+// CHECK-NEXT: 0x65 R_X86_64_32 bar 0x0
+// CHECK-NEXT: 0x74 R_X86_64_PC32 .text 0x2
+// CHECK-NEXT: 0x7D R_X86_64_32 bar 0x0
+// CHECK-NEXT: 0x97 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0xB0 R_X86_64_PC32 .text 0x3
+// CHECK-NEXT: 0xB9 R_X86_64_16 bar 0x0
+// CHECK-NEXT: 0xCE R_X86_64_16 foo 0x0
+// CHECK-NEXT: 0xE0 R_X86_64_PC32 .text 0x4
+// CHECK-NEXT: 0xFE R_X86_64_32 foo 0x0
+// CHECK-NEXT: 0x110 R_X86_64_PC32 .text 0x5
+// CHECK-NEXT: 0x12E R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x144 R_X86_64_PC32 .text 0x6
+// CHECK-NEXT: 0x162 R_X86_64_16 foo 0x0
+// CHECK-NEXT: 0x174 R_X86_64_PC32 .text 0x7
+// CHECK-NEXT: 0x192 R_X86_64_32 foo 0x0
+// CHECK-NEXT: 0x1A4 R_X86_64_PC32 .text 0x8
+// CHECK-NEXT: 0x1C2 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x1D8 R_X86_64_PC32 .text 0x9
+// CHECK-NEXT: 0x1F6 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x20C R_X86_64_PC32 .text 0xA
+// CHECK-NEXT: 0x22A R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x240 R_X86_64_PC32 .text 0xB
+// CHECK-NEXT: 0x25E R_X86_64_PC16 foo 0x0
+// CHECK-NEXT: 0x270 R_X86_64_PC32 .text 0xC
+// CHECK-NEXT: 0x28E R_X86_64_PC32 foo 0x0
+// CHECK-NEXT: 0x2A0 R_X86_64_PC32 .text 0xD
+// CHECK-NEXT: 0x2BE R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x2D4 R_X86_64_PC32 .text 0xE
+// CHECK-NEXT: 0x2F2 R_X86_64_PC16 foo 0x0
+// CHECK-NEXT: 0x304 R_X86_64_PC32 .text 0xF
+// CHECK-NEXT: 0x322 R_X86_64_PC32 foo 0x0
+// CHECK-NEXT: 0x334 R_X86_64_PC32 .text 0x10
+// CHECK-NEXT: 0x352 R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x368 R_X86_64_PC32 .text 0x11
+// CHECK-NEXT: 0x386 R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x39C R_X86_64_PC32 .text 0x12
+// CHECK-NEXT: 0x3BA R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x3D0 R_X86_64_PC32 .text 0x13
+// CHECK-NEXT: 0x3EE R_X86_64_16 foo 0x0
+// CHECK-NEXT: 0x400 R_X86_64_PC32 .text 0x14
+// CHECK-NEXT: 0x41E R_X86_64_32 foo 0x0
+// CHECK-NEXT: 0x430 R_X86_64_PC32 .text 0x15
+// CHECK-NEXT: 0x44E R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x464 R_X86_64_PC32 .text 0x16
+// CHECK-NEXT: 0x482 R_X86_64_16 foo 0x0
+// CHECK-NEXT: 0x494 R_X86_64_PC32 .text 0x17
+// CHECK-NEXT: 0x4B2 R_X86_64_32 foo 0x0
+// CHECK-NEXT: 0x4C4 R_X86_64_PC32 .text 0x18
+// CHECK-NEXT: 0x4E2 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x4F8 R_X86_64_PC32 .text 0x19
+// CHECK-NEXT: 0x516 R_X86_64_64 foo 0x0
+// CHECK-NEXT: 0x52C R_X86_64_PC32 .text 0x1A
+// CHECK-NEXT: 0x54A R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x560 R_X86_64_PC32 .text 0x1B
+// CHECK-NEXT: 0x57E R_X86_64_PC16 foo 0x0
+// CHECK-NEXT: 0x590 R_X86_64_PC32 .text 0x1C
+// CHECK-NEXT: 0x5AE R_X86_64_PC32 foo 0x0
+// CHECK-NEXT: 0x5C0 R_X86_64_PC32 .text 0x1D
+// CHECK-NEXT: 0x5DE R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x5F4 R_X86_64_PC32 .text 0x1E
+// CHECK-NEXT: 0x612 R_X86_64_PC16 foo 0x0
+// CHECK-NEXT: 0x624 R_X86_64_PC32 .text 0x1F
+// CHECK-NEXT: 0x642 R_X86_64_PC32 foo 0x0
+// CHECK-NEXT: 0x654 R_X86_64_PC32 .text 0x20
+// CHECK-NEXT: 0x672 R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x688 R_X86_64_PC32 .text 0x21
+// CHECK-NEXT: 0x6A6 R_X86_64_PC64 foo 0x0
+// CHECK-NEXT: 0x6BC R_X86_64_PC32 .text 0x22
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 14000000 00000000 017A4C52 00017810
+// CHECK-NEXT: 0010: 02031B0C 07089001 14000000 1C000000
+// CHECK-NEXT: 0020: 00000000 01000000 04000000 00000000
+// CHECK-NEXT: 0030: 20000000 00000000 017A504C 52000178
+// CHECK-NEXT: 0040: 100B0000 00000000 00000003 1B0C0708
+// CHECK-NEXT: 0050: 90010000 14000000 28000000 00000000
+// CHECK-NEXT: 0060: 01000000 04000000 00000000 14000000
+// CHECK-NEXT: 0070: 70000000 00000000 01000000 04000000
+// CHECK-NEXT: 0080: 00000000 20000000 00000000 017A504C
+// CHECK-NEXT: 0090: 52000178 100B0000 00000000 00000002
+// CHECK-NEXT: 00A0: 1B0C0708 90010000 10000000 28000000
+// CHECK-NEXT: 00B0: 00000000 01000000 02000000 18000000
+// CHECK-NEXT: 00C0: 00000000 017A5052 00017810 04020000
+// CHECK-NEXT: 00D0: 1B0C0708 90010000 10000000 20000000
+// CHECK-NEXT: 00E0: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 00F0: 00000000 017A5052 00017810 06030000
+// CHECK-NEXT: 0100: 00001B0C 07089001 10000000 20000000
+// CHECK-NEXT: 0110: 00000000 01000000 00000000 1C000000
+// CHECK-NEXT: 0120: 00000000 017A5052 00017810 0A040000
+// CHECK-NEXT: 0130: 00000000 00001B0C 07089001 10000000
+// CHECK-NEXT: 0140: 24000000 00000000 01000000 00000000
+// CHECK-NEXT: 0150: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0160: 040A0000 1B0C0708 90010000 10000000
+// CHECK-NEXT: 0170: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 0180: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0190: 060B0000 00001B0C 07089001 10000000
+// CHECK-NEXT: 01A0: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 01B0: 1C000000 00000000 017A5052 00017810
+// CHECK-NEXT: 01C0: 0A0C0000 00000000 00001B0C 07089001
+// CHECK-NEXT: 01D0: 10000000 24000000 00000000 01000000
+// CHECK-NEXT: 01E0: 00000000 1C000000 00000000 017A5052
+// CHECK-NEXT: 01F0: 00017810 0A080000 00000000 00001B0C
+// CHECK-NEXT: 0200: 07089001 10000000 24000000 00000000
+// CHECK-NEXT: 0210: 01000000 00000000 1C000000 00000000
+// CHECK-NEXT: 0220: 017A5052 00017810 0A100000 00000000
+// CHECK-NEXT: 0230: 00001B0C 07089001 10000000 24000000
+// CHECK-NEXT: 0240: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 0250: 00000000 017A5052 00017810 04120000
+// CHECK-NEXT: 0260: 1B0C0708 90010000 10000000 20000000
+// CHECK-NEXT: 0270: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 0280: 00000000 017A5052 00017810 06130000
+// CHECK-NEXT: 0290: 00001B0C 07089001 10000000 20000000
+// CHECK-NEXT: 02A0: 00000000 01000000 00000000 1C000000
+// CHECK-NEXT: 02B0: 00000000 017A5052 00017810 0A140000
+// CHECK-NEXT: 02C0: 00000000 00001B0C 07089001 10000000
+// CHECK-NEXT: 02D0: 24000000 00000000 01000000 00000000
+// CHECK-NEXT: 02E0: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 02F0: 041A0000 1B0C0708 90010000 10000000
+// CHECK-NEXT: 0300: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 0310: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0320: 061B0000 00001B0C 07089001 10000000
+// CHECK-NEXT: 0330: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 0340: 1C000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0350: 0A1C0000 00000000 00001B0C 07089001
+// CHECK-NEXT: 0360: 10000000 24000000 00000000 01000000
+// CHECK-NEXT: 0370: 00000000 1C000000 00000000 017A5052
+// CHECK-NEXT: 0380: 00017810 0A180000 00000000 00001B0C
+// CHECK-NEXT: 0390: 07089001 10000000 24000000 00000000
+// CHECK-NEXT: 03A0: 01000000 00000000 1C000000 00000000
+// CHECK-NEXT: 03B0: 017A5052 00017810 0A800000 00000000
+// CHECK-NEXT: 03C0: 00001B0C 07089001 10000000 24000000
+// CHECK-NEXT: 03D0: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 03E0: 00000000 017A5052 00017810 04820000
+// CHECK-NEXT: 03F0: 1B0C0708 90010000 10000000 20000000
+// CHECK-NEXT: 0400: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 0410: 00000000 017A5052 00017810 06830000
+// CHECK-NEXT: 0420: 00001B0C 07089001 10000000 20000000
+// CHECK-NEXT: 0430: 00000000 01000000 00000000 1C000000
+// CHECK-NEXT: 0440: 00000000 017A5052 00017810 0A840000
+// CHECK-NEXT: 0450: 00000000 00001B0C 07089001 10000000
+// CHECK-NEXT: 0460: 24000000 00000000 01000000 00000000
+// CHECK-NEXT: 0470: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0480: 048A0000 1B0C0708 90010000 10000000
+// CHECK-NEXT: 0490: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 04A0: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 04B0: 068B0000 00001B0C 07089001 10000000
+// CHECK-NEXT: 04C0: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 04D0: 1C000000 00000000 017A5052 00017810
+// CHECK-NEXT: 04E0: 0A8C0000 00000000 00001B0C 07089001
+// CHECK-NEXT: 04F0: 10000000 24000000 00000000 01000000
+// CHECK-NEXT: 0500: 00000000 1C000000 00000000 017A5052
+// CHECK-NEXT: 0510: 00017810 0A880000 00000000 00001B0C
+// CHECK-NEXT: 0520: 07089001 10000000 24000000 00000000
+// CHECK-NEXT: 0530: 01000000 00000000 1C000000 00000000
+// CHECK-NEXT: 0540: 017A5052 00017810 0A900000 00000000
+// CHECK-NEXT: 0550: 00001B0C 07089001 10000000 24000000
+// CHECK-NEXT: 0560: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 0570: 00000000 017A5052 00017810 04920000
+// CHECK-NEXT: 0580: 1B0C0708 90010000 10000000 20000000
+// CHECK-NEXT: 0590: 00000000 01000000 00000000 18000000
+// CHECK-NEXT: 05A0: 00000000 017A5052 00017810 06930000
+// CHECK-NEXT: 05B0: 00001B0C 07089001 10000000 20000000
+// CHECK-NEXT: 05C0: 00000000 01000000 00000000 1C000000
+// CHECK-NEXT: 05D0: 00000000 017A5052 00017810 0A940000
+// CHECK-NEXT: 05E0: 00000000 00001B0C 07089001 10000000
+// CHECK-NEXT: 05F0: 24000000 00000000 01000000 00000000
+// CHECK-NEXT: 0600: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0610: 049A0000 1B0C0708 90010000 10000000
+// CHECK-NEXT: 0620: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 0630: 18000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0640: 069B0000 00001B0C 07089001 10000000
+// CHECK-NEXT: 0650: 20000000 00000000 01000000 00000000
+// CHECK-NEXT: 0660: 1C000000 00000000 017A5052 00017810
+// CHECK-NEXT: 0670: 0A9C0000 00000000 00001B0C 07089001
+// CHECK-NEXT: 0680: 10000000 24000000 00000000 01000000
+// CHECK-NEXT: 0690: 00000000 1C000000 00000000 017A5052
+// CHECK-NEXT: 06A0: 00017810 0A980000 00000000 00001B0C
+// CHECK-NEXT: 06B0: 07089001 10000000 24000000 00000000
+// CHECK-NEXT: 06C0: 01000000 00000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+
+// CHECK: Section {
+// CHECK: Index: 5
+// CHECK-NEXT: Name: .rela.eh_frame
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0xE30
+// CHECK-NEXT: Size: 1728
+// CHECK-NEXT: Link: 7
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK: }
diff --git a/test/MC/ELF/comdat.s b/test/MC/ELF/comdat.s
index d7acea6..f9469df 100644
--- a/test/MC/ELF/comdat.s
+++ b/test/MC/ELF/comdat.s
@@ -1,75 +1,81 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s
// Test that we produce the group sections and that they are a the beginning
// of the file.
-// CHECK: # Section 1
-// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group'
-// CHECK-NEXT: ('sh_type', 0x00000011)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x000000000000000c)
-// CHECK-NEXT: ('sh_link', 0x0000000d)
-// CHECK-NEXT: ('sh_info', 0x00000001)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000004)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 2
-// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group'
-// CHECK-NEXT: ('sh_type', 0x00000011)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x000000000000004c)
-// CHECK-NEXT: ('sh_size', 0x0000000000000008)
-// CHECK-NEXT: ('sh_link', 0x0000000d)
-// CHECK-NEXT: ('sh_info', 0x00000002)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000004)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 3
-// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group'
-// CHECK-NEXT: ('sh_type', 0x00000011)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000054)
-// CHECK-NEXT: ('sh_size', 0x0000000000000008)
-// CHECK-NEXT: ('sh_link', 0x0000000d)
-// CHECK-NEXT: ('sh_info', 0x0000000d)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000004)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 1
+// CHECK-NEXT: Name: .group
+// CHECK-NEXT: Type: SHT_GROUP
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 12
+// CHECK-NEXT: Link: 13
+// CHECK-NEXT: Info: 1
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 4
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 2
+// CHECK-NEXT: Name: .group
+// CHECK-NEXT: Type: SHT_GROUP
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x4C
+// CHECK-NEXT: Size: 8
+// CHECK-NEXT: Link: 13
+// CHECK-NEXT: Info: 2
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 4
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 3
+// CHECK-NEXT: Name: .group
+// CHECK-NEXT: Type: SHT_GROUP
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x54
+// CHECK-NEXT: Size: 8
+// CHECK-NEXT: Link: 13
+// CHECK-NEXT: Info: 13
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 4
+// CHECK-NEXT: }
// Test that g1 and g2 are local, but g3 is an undefined global.
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000001) # 'g1'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0007)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000004) # 'g2'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0002)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: g1 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .foo (0x7)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: g2 (4)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .group (0x2)
+// CHECK-NEXT: }
-// CHECK: # Symbol 13
-// CHECK-NEXT: (('st_name', 0x00000007) # 'g3'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: g3 (7)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
.section .foo,"axG",@progbits,g1,comdat
diff --git a/test/MC/ELF/common.s b/test/MC/ELF/common.s
index 046306e..4fc2154 100644
--- a/test/MC/ELF/common.s
+++ b/test/MC/ELF/common.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
.text
@@ -8,13 +8,15 @@
.local common1
.comm common1,1,1
-// CHECK: ('st_name', 0x00000001) # 'common1'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx',
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000001)
+// CHECK: Symbol {
+// CHECK: Name: common1 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 1
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section:
+// CHECK-NEXT: }
// Same as common1, but with directives in a different order.
@@ -22,38 +24,44 @@
.type common2,@object
.comm common2,1,1
-// CHECK: ('st_name', 0x00000009) # 'common2'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx',
-// CHECK-NEXT: ('st_value', 0x0000000000000001)
-// CHECK-NEXT: ('st_size', 0x0000000000000001)
+// CHECK: Symbol {
+// CHECK: Name: common2 (9)
+// CHECK-NEXT: Value: 0x1
+// CHECK-NEXT: Size: 1
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section:
+// CHECK-NEXT: }
+
.local common6
.comm common6,8,16
-// CHECK: # Symbol 3
-// CHECK-NEXT: (('st_name', 0x00000011) # 'common6'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ('st_value', 0x0000000000000010)
-// CHECK-NEXT: ('st_size', 0x0000000000000008)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: common6 (17)
+// CHECK-NEXT: Value: 0x10
+// CHECK-NEXT: Size: 8
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x4)
+// CHECK-NEXT: }
+
// Test that without an explicit .local we produce a global.
.type common3,@object
.comm common3,4,4
-// CHECK: ('st_name', 0x00000019) # 'common3'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff2)
-// CHECK-NEXT: ('st_value', 0x0000000000000004)
-// CHECK-NEXT: ('st_size', 0x0000000000000004)
+// CHECK: Symbol {
+// CHECK: Name: common3 (25)
+// CHECK-NEXT: Value: 0x4
+// CHECK-NEXT: Size: 4
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF2)
+// CHECK-NEXT: }
// Test that without an explicit .local we produce a global, even if the first
@@ -67,22 +75,25 @@ foo:
.type common4,@object
.comm common4,40,16
-// CHECK: ('st_name', 0x00000025) # 'common4'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff2)
-// CHECK-NEXT: ('st_value', 0x0000000000000010)
-// CHECK-NEXT: ('st_size', 0x0000000000000028)
+// CHECK: Symbol {
+// CHECK: Name: common4 (37)
+// CHECK-NEXT: Value: 0x10
+// CHECK-NEXT: Size: 40
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF2)
+// CHECK-NEXT: }
+
.comm common5,4,4
-// CHECK: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x0000002d) # 'common5'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff2)
-// CHECK-NEXT: ('st_value', 0x0000000000000004)
-// CHECK-NEXT: ('st_size', 0x0000000000000004)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: common5 (45)
+// CHECK-NEXT: Value: 0x4
+// CHECK-NEXT: Size: 4
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF2)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/common2.s b/test/MC/ELF/common2.s
index b13577d..526ebc2 100644
--- a/test/MC/ELF/common2.s
+++ b/test/MC/ELF/common2.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the common symbols are placed at the end of .bss. In this example
// it causes .bss to have size 9 instead of 8.
@@ -9,13 +9,16 @@
.zero 1
.align 8
-// CHECK: (('sh_name', 0x00000007) # '.bss'
-// CHECK-NEXT: ('sh_type',
-// CHECK-NEXT: ('sh_flags'
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000009)
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign',
-// CHECK-NEXT: ('sh_entsize',
+// CHECK: Section {
+// CHECK: Name: .bss (7)
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Flags [
+// CHECK: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 9
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info:
+// CHECK-NEXT: AddressAlignment:
+// CHECK-NEXT: EntrySize:
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/debug-line.s b/test/MC/ELF/debug-line.s
index fed816a..75e050e 100644
--- a/test/MC/ELF/debug-line.s
+++ b/test/MC/ELF/debug-line.s
@@ -1,18 +1,26 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
// Test that .debug_line is populated.
-// CHECK: (('sh_name', 0x00000011) # '.debug_line'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000044)
-// CHECK-NEXT: ('sh_size', 0x0000000000000037)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '33000000 02001c00 00000101 fb0e0d00 01010101 00000001 00000100 666f6f2e 63000000 00000009 02000000 00000000 00150204 000101')
+// CHECK: Section {
+// CHECK: Name: .debug_line
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x44
+// CHECK-NEXT: Size: 55
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 33000000 02001C00 00000101 FB0E0D00
+// CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E
+// CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000
+// CHECK-NEXT: 0030: 00150204 000101
+// CHECK-NEXT: )
+// CHECK-NEXT: }
.section .debug_line,"",@progbits
.text
diff --git a/test/MC/ELF/debug-loc.s b/test/MC/ELF/debug-loc.s
index 3eb3797..b24fa16 100644
--- a/test/MC/ELF/debug-loc.s
+++ b/test/MC/ELF/debug-loc.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that we don't regress on the size of the line info section. We used
// to handle negative line diffs incorrectly which manifested as very
@@ -7,18 +7,20 @@
// FIXME: This size is the same as gnu as, but we can probably do a bit better.
// FIXME2: We need a debug_line dumper so that we can test the actual contents.
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x00000011) # '.debug_line'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000044)
-// CHECK-NEXT: ('sh_size', 0x000000000000003d)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .debug_line
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x44
+// CHECK-NEXT: Size: 61
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
.section .debug_line,"",@progbits
.text
diff --git a/test/MC/ELF/diff.s b/test/MC/ELF/diff.s
index 4214fc7..5436510 100644
--- a/test/MC/ELF/diff.s
+++ b/test/MC/ELF/diff.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s
.global zed
foo:
@@ -8,8 +8,4 @@ bar:
zed:
mov zed+(bar-foo), %eax
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000005)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend', 0x0000000000000001)
+// CHECK: 0x5 R_X86_64_32S zed 0x1
diff --git a/test/MC/ELF/empty-dwarf-lines.s b/test/MC/ELF/empty-dwarf-lines.s
index 7baedbc..241580b 100644
--- a/test/MC/ELF/empty-dwarf-lines.s
+++ b/test/MC/ELF/empty-dwarf-lines.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that the dwarf debug_line section contains no line directives.
@@ -7,15 +7,17 @@
c:
.asciz "hi\n"
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.debug_line'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000044)
-// CHECK-NEXT: ('sh_size', 0x0000000000000027)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .debug_line
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x44
+// CHECK-NEXT: Size: 39
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/empty.s b/test/MC/ELF/empty.s
index b38a621..c421fe8 100644
--- a/test/MC/ELF/empty.s
+++ b/test/MC/ELF/empty.s
@@ -1,70 +1,89 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that like gnu as we create text, data and bss by default. Also test
// that shstrtab, symtab and strtab are listed in that order.
-// CHECK: ('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-
-// CHECK: ('sh_name', 0x00000026) # '.data'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000003)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-
-// CHECK: ('sh_name', 0x00000007) # '.bss'
-// CHECK-NEXT: ('sh_type', 0x00000008)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000003)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-
-// CHECK: ('sh_name', 0x0000000c) # '.shstrtab'
-// CHECK-NEXT: ('sh_type', 0x00000003)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x000000000000002c)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-
-// CHECK: ('sh_name', 0x0000001e) # '.symtab'
-// CHECK-NEXT: ('sh_type', 0x00000002)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000060)
-// CHECK-NEXT: ('sh_link', 0x00000006)
-// CHECK-NEXT: ('sh_info', 0x00000004)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-
-// CHECK: ('sh_name', 0x00000016) # '.strtab'
-// CHECK-NEXT: ('sh_type', 0x00000003)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000001)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .data
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .bss
+// CHECK-NEXT: Type: SHT_NOBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .shstrtab
+// CHECK-NEXT: Type: SHT_STRTAB
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 44
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .symtab
+// CHECK-NEXT: Type: SHT_SYMTAB
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 96
+// CHECK-NEXT: Link: 6
+// CHECK-NEXT: Info: 4
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Name: .strtab
+// CHECK-NEXT: Type: SHT_STRTAB
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 1
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/entsize.ll b/test/MC/ELF/entsize.ll
index dce6dba..2bf9fa9 100644
--- a/test/MC/ELF/entsize.ll
+++ b/test/MC/ELF/entsize.ll
@@ -1,4 +1,4 @@
-; RUN: llc -filetype=obj -mtriple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck -check-prefix=64 %s
+; RUN: llc -filetype=obj -mtriple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck -check-prefix=64 %s
; Test that constant mergeable strings have sh_entsize set.
@@ -20,25 +20,35 @@ declare void @foo(i64* nocapture) nounwind
;;;;;
-; 64: (('sh_name', 0x0000004e) # '.rodata.str1.1'
-; 64-NEXT: ('sh_type', 0x00000001)
-; 64-NEXT: ('sh_flags', 0x0000000000000032)
-; 64-NEXT: ('sh_addr',
-; 64-NEXT: ('sh_offset',
-; 64-NEXT: ('sh_size', 0x000000000000000d)
-; 64-NEXT: ('sh_link',
-; 64-NEXT: ('sh_info',
-; 64-NEXT: ('sh_addralign', 0x0000000000000001)
-; 64-NEXT: ('sh_entsize', 0x0000000000000001)
-
-; 64: (('sh_name', 0x00000041) # '.rodata.cst8'
-; 64-NEXT: ('sh_type', 0x00000001)
-; 64-NEXT: ('sh_flags', 0x0000000000000012)
-; 64-NEXT: ('sh_addr',
-; 64-NEXT: ('sh_offset',
-; 64-NEXT: ('sh_size', 0x0000000000000010)
-; 64-NEXT: ('sh_link',
-; 64-NEXT: ('sh_info',
-; 64-NEXT: ('sh_addralign', 0x0000000000000008)
-; 64-NEXT: ('sh_entsize', 0x0000000000000008)
-
+; 64: Section {
+; 64: Name: .rodata.str1.1
+; 64-NEXT: Type: SHT_PROGBITS
+; 64-NEXT: Flags [
+; 64-NEXT: SHF_ALLOC
+; 64-NEXT: SHF_MERGE
+; 64-NEXT: SHF_STRINGS
+; 64-NEXT: ]
+; 64-NEXT: Address:
+; 64-NEXT: Offset:
+; 64-NEXT: Size: 13
+; 64-NEXT: Link:
+; 64-NEXT: Info:
+; 64-NEXT: AddressAlignment: 1
+; 64-NEXT: EntrySize: 1
+; 64-NEXT: }
+
+; 64: Section {
+; 64: Name: .rodata.cst8
+; 64-NEXT: Type: SHT_PROGBITS
+; 64-NEXT: Flags [
+; 64-NEXT: SHF_ALLOC
+; 64-NEXT: SHF_MERGE
+; 64-NEXT: ]
+; 64-NEXT: Address:
+; 64-NEXT: Offset:
+; 64-NEXT: Size: 16
+; 64-NEXT: Link:
+; 64-NEXT: Info:
+; 64-NEXT: AddressAlignment: 8
+; 64-NEXT: EntrySize: 8
+; 64-NEXT: }
diff --git a/test/MC/ELF/entsize.s b/test/MC/ELF/entsize.s
index 4645686..8e084e2 100644
--- a/test/MC/ELF/entsize.s
+++ b/test/MC/ELF/entsize.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that mergeable constants have sh_entsize set.
@@ -32,38 +32,53 @@
.quad 42
.quad 42
-// CHECK: # Section 4
-// CHECK-NEXT: ('sh_name', 0x00000048) # '.rodata.str1.1'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000032)
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x000000000000000d)
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000001)
-
-// CHECK: # Section 5
-// CHECK-NEXT: ('sh_name', 0x00000039) # '.rodata.str2.1'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000032)
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000010)
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000002)
-
-// CHECK: # Section 6
-// CHECK-NEXT: ('sh_name', 0x0000002c) # '.rodata.cst8
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000012)
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size', 0x0000000000000010)
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000008)
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .rodata.str1.1
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_MERGE
+// CHECK-NEXT: SHF_STRINGS
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 13
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info:
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 1
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Index: 5
+// CHECK-NEXT: Name: .rodata.str2.1
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_MERGE
+// CHECK-NEXT: SHF_STRINGS
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 16
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info:
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 2
+// CHECK-NEXT: }
+// CHECK: Section {
+// CHECK: Index: 6
+// CHECK-NEXT: Name: .rodata.cst8
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_MERGE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 16
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info:
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 8
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/file.s b/test/MC/ELF/file.s
index 434fb6e..7e287f7 100644
--- a/test/MC/ELF/file.s
+++ b/test/MC/ELF/file.s
@@ -1,23 +1,25 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that the STT_FILE symbol precedes the other local symbols.
.file "foo"
foa:
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x4)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff1)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000005) # 'foa'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
+
+// CHECK: Symbol {
+// CHECK: Name: foo (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: File
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foa (5)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/gen-dwarf.s b/test/MC/ELF/gen-dwarf.s
index 85e0242..907bf42 100644
--- a/test/MC/ELF/gen-dwarf.s
+++ b/test/MC/ELF/gen-dwarf.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -g -triple i686-pc-linux-gnu %s -filetype=obj -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -g -triple i686-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r | FileCheck %s
// Test that on ELF:
@@ -14,97 +14,13 @@ foo:
ret
.size foo, .-foo
-// Section 4 is .debug_line
-// CHECK: # Section 4
-// CHECK-NEXT: # '.debug_line'
-
-
-
-// The two relocations, one to symbol 6 and one to 4
-// CHECK: # '.rel.debug_info'
-// CHECK-NEXT: ('sh_type',
-// CHECK-NEXT: ('sh_flags'
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size',
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign',
-// CHECK-NEXT: ('sh_entsize',
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x00000006)
-// CHECK-NEXT: ('r_sym', 0x000006)
-// CHECK-NEXT: ('r_type', 0x01)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000c)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x01)
-// CHECK-NEXT: ),
-
-
-// Section 8 is .debug_abbrev
-// CHECK: # Section 8
-// CHECK-NEXT: (('sh_name', 0x00000001) # '.debug_abbrev'
-
-// Section 9 is .debug_aranges
-// CHECK: # Section 9
-// CHECK-NEXT: (('sh_name', 0x0000001e) # '.debug_aranges'
-
-// Two relocations in .debug_aranges, one to text and one to debug_info.
-// CHECK: # '.rel.debug_aranges'
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x00000006)
-// CHECK-NEXT: ('r_sym', 0x000005)
-// CHECK-NEXT: ('r_type', 0x01)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x00000010)
-// CHECK-NEXT: ('r_sym', 0x000001)
-// CHECK-NEXT: ('r_type', 0x01)
-// CHECK-NEXT: ),
-
-// Symbol 1 is section 1 (.text)
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ),
-
-// Symbol 4 is section 4 (.debug_line)
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ),
-
-// Symbol 5 is section 6 (.debug_info)
-// CHECK: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0006)
-// CHECK-NEXT: ),
-
-// Symbol 6 is section 8 (.debug_abbrev)
-// CHECK: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0008)
-// CHECK-NEXT: ),
+// CHECK: Relocations [
+// CHECK: Section ({{[^ ]+}}) .debug_info {
+// CHECK-NEXT: 0x6 R_386_32 .debug_abbrev 0x0
+// CHECK-NEXT: 0xC R_386_32 .debug_line 0x0
+// CHECK: }
+// CHECK-NEXT: Section ({{[^ ]+}}) .debug_aranges {
+// CHECK-NEXT: 0x6 R_386_32 .debug_info 0x0
+// CHECK-NEXT: 0x10 R_386_32 .text 0x0
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/global-offset.s b/test/MC/ELF/global-offset.s
index 81ae5d7..c688673 100644
--- a/test/MC/ELF/global-offset.s
+++ b/test/MC/ELF/global-offset.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
// We test that _GLOBAL_OFFSET_TABLE_ will account for the two bytes at the
// start of the addl/leal.
@@ -10,14 +10,20 @@
foo:
addl _GLOBAL_OFFSET_TABLE_-foo,%ebx
-// CHECK: ('sh_name', 0x00000005) # '.text'
-// CHECK-NEXT: ('sh_type',
-// CHECK-NEXT: ('sh_flags',
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset',
-// CHECK-NEXT: ('sh_size',
-// CHECK-NEXT: ('sh_link',
-// CHECK-NEXT: ('sh_info',
-// CHECK-NEXT: ('sh_addralign',
-// CHECK-NEXT: ('sh_entsize',
-// CHECK-NEXT: ('_section_data', '81c30200 00008d9b 02000000 031d0200 0000')
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Flags [
+// CHECK: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size:
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info:
+// CHECK-NEXT: AddressAlignment:
+// CHECK-NEXT: EntrySize:
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 81C30200 00008D9B 02000000 031D0200
+// CHECK-NEXT: 0010: 0000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/got.s b/test/MC/ELF/got.s
index a849872..60dea6d 100644
--- a/test/MC/ELF/got.s
+++ b/test/MC/ELF/got.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
// Test that this produces a R_X86_64_GOT32 and that we have an undefined
// reference to _GLOBAL_OFFSET_TABLE_.
@@ -6,20 +6,15 @@
movl foo@GOT, %eax
movl foo@GOTPCREL(%rip), %eax
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x00000003)
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x00000009)
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Relocations [
+// CHECK: Section ({{[^ ]+}}) .text {
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_GOT32 foo 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_GOTPCREL foo 0x{{[^ ]+}}
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
-// CHECK: (('st_name', 0x00000005) # '_GLOBAL_OFFSET_TABLE_'
-// CHECK-NEXT: ('st_bind', 0x1)
+// CHECK: Symbol {
+// CHECK: Name: _GLOBAL_OFFSET_TABLE_
+// CHECK-NEXT: Value:
+// CHECK-NEXT: Size:
+// CHECK-NEXT: Binding: Global
diff --git a/test/MC/ELF/ident.s b/test/MC/ELF/ident.s
index 56af19a..2592205 100644
--- a/test/MC/ELF/ident.s
+++ b/test/MC/ELF/ident.s
@@ -1,16 +1,23 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
-// CHECK: (('sh_name', 0x00000007) # '.comment'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000030)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x000000000000000d)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000001)
-// CHECK-NEXT: ('_section_data', '00666f6f 00626172 007a6564 00')
+// CHECK: Section {
+// CHECK: Name: .comment
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_MERGE
+// CHECK-NEXT: SHF_STRINGS
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 13
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 1
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 00666F6F 00626172 007A6564 00
+// CHECK-NEXT: )
+// CHECK-NEXT: }
.ident "foo"
.ident "bar"
diff --git a/test/MC/ELF/lcomm.s b/test/MC/ELF/lcomm.s
index ae8d0ba..430b79b 100644
--- a/test/MC/ELF/lcomm.s
+++ b/test/MC/ELF/lcomm.s
@@ -1,21 +1,23 @@
-// RUN: llvm-mc -triple i386-pc-linux-gnu %s -filetype=obj -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -triple i386-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -t | FileCheck %s
.lcomm A, 5
.lcomm B, 32 << 20
-// CHECK: (('st_name', 0x00000001) # 'A'
-// CHECK: ('st_value', 0x00000000)
-// CHECK: ('st_size', 0x00000005)
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x1)
-// CHECK: ('st_other', 0x00)
-// CHECK: ('st_shndx', 0x0003)
-// CHECK: ),
-// CHECK: (('st_name', 0x00000003) # 'B'
-// CHECK: ('st_value', 0x00000005)
-// CHECK: ('st_size', 0x02000000)
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x1)
-// CHECK: ('st_other', 0x00)
-// CHECK: ('st_shndx', 0x0003)
-// CHECK: ),
+// CHECK: Symbol {
+// CHECK: Name: A (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 5
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x3)
+// CHECK-NEXT: }
+// CHECK: Symbol {
+// CHECK: Name: B (3)
+// CHECK-NEXT: Value: 0x5
+// CHECK-NEXT: Size: 33554432
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x3)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/leb128.s b/test/MC/ELF/leb128.s
index f6daac8..84c5b54 100644
--- a/test/MC/ELF/leb128.s
+++ b/test/MC/ELF/leb128.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
.sleb128 .Lfoo - .Lbar
.Lfoo:
@@ -6,14 +6,29 @@
.fill 126, 1, 0x90
.Lbar:
-// CHECK: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000081)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '817f7f90 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90')
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 129
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 817F7F90 90909090 90909090 90909090
+// CHECK-NEXT: 0010: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0020: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0030: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0040: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0050: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0060: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0070: 90909090 90909090 90909090 90909090
+// CHECK-NEXT: 0080: 90
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/local-reloc.s b/test/MC/ELF/local-reloc.s
index b32a9cc..4241ba5 100644
--- a/test/MC/ELF/local-reloc.s
+++ b/test/MC/ELF/local-reloc.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -r -t | FileCheck %s
// Test that relocations with local symbols are represented as relocations
// with the section. They should be equivalent, but gas behaves like this.
@@ -6,26 +6,8 @@
movl foo, %r14d
foo:
-// Section number 1 is .text
-// CHECK: # Section 1
-// CHECK-next: (('sh_name', 0x00000001) # '.text'
-
-// Relocation refers to symbol number 2
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type',
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-
-// Symbol number 2 is section number 1
-// CHECK: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
+// CHECKT: Relocations [
+// CHECK: Section (1) .text {
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32S .text 0x{{[^ ]+}}
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/many-sections-2.s b/test/MC/ELF/many-sections-2.s
index f5a1a0e..789ebf3 100644
--- a/test/MC/ELF/many-sections-2.s
+++ b/test/MC/ELF/many-sections-2.s
@@ -1,5 +1,5 @@
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t
-// RUN: llvm-readobj %t | FileCheck %s
+// RUN: llvm-readobj -s %t | FileCheck %s
// CHECK: symtab_shndx
diff --git a/test/MC/ELF/merge.s b/test/MC/ELF/merge.s
index 11a80ad..d34635a 100644
--- a/test/MC/ELF/merge.s
+++ b/test/MC/ELF/merge.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s
// Test that PIC relocations with local symbols in a mergeable section are done
// with a reference to the symbol. Not sure if this is a linker limitation,
@@ -22,76 +22,13 @@ zed:
.section bar,"ax",@progbits
foo:
-// Relocation 0 refers to symbol 1
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000001)
-// CHECK-NEXT: ('r_type', 0x00000002
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-
-// Relocation 1 refers to symbol 6
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-
-// Relocation 2 refers to symbol 1
-// CHECK-NEXT: # Relocation 2
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000001)
-// CHECK-NEXT: ('r_type', 0x0000000a
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-
-// Relocation 3 refers to symbol 2
-// CHECK-NEXT: # Relocation 3
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000004
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-
-// Relocation 4 refers to symbol 2
-// CHECK-NEXT: # Relocation 4
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x00000009
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-
-// Relocation 5 refers to symbol 8
-// CHECK-NEXT: # Relocation 5
-// CHECK-NEXT: (('r_offset', 0x0000000000000023)
-// CHECK-NEXT: ('r_sym', 0x00000008)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-
-// Section 5 is "sec1"
-// CHECK: # Section 5
-// CHECK-NEXT: (('sh_name', 0x00000035) # '.sec1'
-
-// Symbol number 1 is .Lfoo
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000001) # '.Lfoo'
-
-// Symbol number 2 is foo
-// CHECK: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000007) # 'foo'
-
-// Symbol number 6 is section 5
-// CHECK: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0005)
-
-// Symbol number 8 is zed
-// CHECK: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x0000000b) # 'zed'
+// CHECK: Relocations [
+// CHECK-NEXT: Section (1) .text {
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_PC32 .Lfoo 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32 .sec1 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32 .Lfoo 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_PLT32 foo 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_GOTPCREL foo 0x{{[^ ]+}}
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32S zed 0x{{[^ ]+}}
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/n_bytes.s b/test/MC/ELF/n_bytes.s
index de66322..e658de0 100644
--- a/test/MC/ELF/n_bytes.s
+++ b/test/MC/ELF/n_bytes.s
@@ -1,20 +1,30 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
.2byte 42, 1, 2, 3
.4byte 42, 1, 2, 3
.8byte 42, 1, 2, 3
.int 42, 1, 2, 3
-// CHECK: # Section 1
-// CHECK-NEXT: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000048)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', '2a000100 02000300 2a000000 01000000 02000000 03000000 2a000000 00000000 01000000 00000000 02000000 00000000 03000000 00000000 2a000000 01000000 02000000 03000000')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 1
+// CHECK-NEXT: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 72
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 2A000100 02000300 2A000000 01000000
+// CHECK-NEXT: 0010: 02000000 03000000 2A000000 00000000
+// CHECK-NEXT: 0020: 01000000 00000000 02000000 00000000
+// CHECK-NEXT: 0030: 03000000 00000000 2A000000 01000000
+// CHECK-NEXT: 0040: 02000000 03000000
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/noexec.s b/test/MC/ELF/noexec.s
index d8b7b32..33cb8ae 100644
--- a/test/MC/ELF/noexec.s
+++ b/test/MC/ELF/noexec.s
@@ -1,24 +1,26 @@
-// RUN: llvm-mc -mc-no-exec-stack -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -mc-no-exec-stack -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x0000000c) # '.note.GNU-stack'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .note.GNU-stack
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: .note.GNU-stack (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .note.GNU-stack (0x4)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/norelocation.s b/test/MC/ELF/norelocation.s
index c639479..1370382 100644
--- a/test/MC/ELF/norelocation.s
+++ b/test/MC/ELF/norelocation.s
@@ -1,18 +1,26 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd -sr | FileCheck %s
call bar
bar:
-// CHECK: ('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000005)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', 'e8000000 00')
-// CHECK-NOT: .rela.text
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [ (0x6)
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 5
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: E8000000 00
+// CHECK-NEXT: )
+// CHECK-NEXT: }
// CHECK: shstrtab
diff --git a/test/MC/ELF/org.s b/test/MC/ELF/org.s
index 3afc364..d878fa1 100644
--- a/test/MC/ELF/org.s
+++ b/test/MC/ELF/org.s
@@ -1,13 +1,15 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
.zero 4
foo:
.zero 4
.org foo+16
-// CHECK: (('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type',
-// CHECK-NEXT: ('sh_flags',
-// CHECK-NEXT: ('sh_addr',
-// CHECK-NEXT: ('sh_offset'
-// CHECK-NEXT: ('sh_size', 0x0000000000000014)
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Flags [
+// CHECK: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset:
+// CHECK-NEXT: Size: 20
diff --git a/test/MC/ELF/pic-diff.s b/test/MC/ELF/pic-diff.s
index 2c68f6c..cffa0dd 100644
--- a/test/MC/ELF/pic-diff.s
+++ b/test/MC/ELF/pic-diff.s
@@ -1,23 +1,20 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x000000000000000c)
-// CHECK-NEXT: ('r_sym', 0x00000005)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000008)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[^ ]+}}) {{[^ ]+}} {
+// CHECK-NEXT: 0xC R_X86_64_PC32 baz 0x8
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
-// CHECK: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000005) # 'baz'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: baz (5)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
.zero 4
.data
diff --git a/test/MC/ELF/plt.s b/test/MC/ELF/plt.s
index 7d78e23..604a4bf 100644
--- a/test/MC/ELF/plt.s
+++ b/test/MC/ELF/plt.s
@@ -1,14 +1,11 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s
// Test that this produces a R_X86_64_PLT32.
jmp foo@PLT
-// CHECK: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x00000004)
-// CHECK-NEXT: ('r_addend',
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[^ ]+}}) {{[^ ]+}} {
+// CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_PLT32 {{[^ ]+}} 0x{{[^ ]+}}
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/pr9292.s b/test/MC/ELF/pr9292.s
index 05f377f..a6e78dc 100644
--- a/test/MC/ELF/pr9292.s
+++ b/test/MC/ELF/pr9292.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that both foo and bar are undefined.
@@ -7,20 +7,21 @@
mov %eax,bar
-// CHECK: (('st_name', 0x00000005) # 'bar'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: bar (5)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/relax-arith.s b/test/MC/ELF/relax-arith.s
index 3236b41..b814556 100644
--- a/test/MC/ELF/relax-arith.s
+++ b/test/MC/ELF/relax-arith.s
@@ -1,11 +1,16 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
// Test that we correctly relax these instructions into versions that use
// 16 or 32 bit immediate values.
bar:
-// CHECK: 'imul'
-// CHECK: ('_section_data', '6669db00 0066691c 25000000 00000069 db000000 00691c25 00000000 00000000 4869db00 00000048 691c2500 00000000 000000')
+// CHECK: Name: imul
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6669DB00 0066691C 25000000 00000069
+// CHECK-NEXT: 0010: DB000000 00691C25 00000000 00000000
+// CHECK-NEXT: 0020: 4869DB00 00000048 691C2500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section imul
imul $foo, %bx, %bx
imul $foo, bar, %bx
@@ -14,8 +19,14 @@ bar:
imul $foo, %rbx, %rbx
imul $foo, bar, %rbx
-// CHECK: and'
-// CHECK:('_section_data', '6681e300 00668124 25000000 00000081 e3000000 00812425 00000000 00000000 4881e300 00000048 81242500 00000000 000000')
+
+// CHECK: Name: and
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6681E300 00668124 25000000 00000081
+// CHECK-NEXT: 0010: E3000000 00812425 00000000 00000000
+// CHECK-NEXT: 0020: 4881E300 00000048 81242500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section and
and $foo, %bx
andw $foo, bar
@@ -24,8 +35,13 @@ bar:
and $foo, %rbx
andq $foo, bar
-// CHECK: 'or'
-// CHECK: ('_section_data', '6681cb00 0066810c 25000000 00000081 cb000000 00810c25 00000000 00000000 4881cb00 00000048 810c2500 00000000 000000')
+// CHECK: Name: or
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6681CB00 0066810C 25000000 00000081
+// CHECK-NEXT: 0010: CB000000 00810C25 00000000 00000000
+// CHECK-NEXT: 0020: 4881CB00 00000048 810C2500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section or
or $foo, %bx
orw $foo, bar
@@ -34,8 +50,13 @@ bar:
or $foo, %rbx
orq $foo, bar
-// CHECK: 'xor'
-// CHECK: ('_section_data', '6681f300 00668134 25000000 00000081 f3000000 00813425 00000000 00000000 4881f300 00000048 81342500 00000000 000000')
+// CHECK: Name: xor
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6681F300 00668134 25000000 00000081
+// CHECK-NEXT: 0010: F3000000 00813425 00000000 00000000
+// CHECK-NEXT: 0020: 4881F300 00000048 81342500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section xor
xor $foo, %bx
xorw $foo, bar
@@ -44,8 +65,13 @@ bar:
xor $foo, %rbx
xorq $foo, bar
-// CHECK: 'add'
-// CHECK: ('_section_data', '6681c300 00668104 25000000 00000081 c3000000 00810425 00000000 00000000 4881c300 00000048 81042500 00000000 000000')
+// CHECK: Name: add
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6681C300 00668104 25000000 00000081
+// CHECK-NEXT: 0010: C3000000 00810425 00000000 00000000
+// CHECK-NEXT: 0020: 4881C300 00000048 81042500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section add
add $foo, %bx
addw $foo, bar
@@ -54,8 +80,13 @@ bar:
add $foo, %rbx
addq $foo, bar
-// CHECK: 'sub'
-// CHECK: ('_section_data', '6681eb00 0066812c 25000000 00000081 eb000000 00812c25 00000000 00000000 4881eb00 00000048 812c2500 00000000 000000')
+// CHECK: Name: sub
+// CHECK: SectionData (
+// CHECK-NEXT: 000: 6681EB00 0066812C 25000000 00000081
+// CHECK-NEXT: 010: EB000000 00812C25 00000000 00000000
+// CHECK-NEXT: 020: 4881EB00 00000048 812C2500 00000000
+// CHECK-NEXT: 030: 000000
+// CHECK-NEXT: )
.section sub
sub $foo, %bx
subw $foo, bar
@@ -64,8 +95,13 @@ bar:
sub $foo, %rbx
subq $foo, bar
-// CHECK: 'cmp'
-// CHECK: ('_section_data', '6681fb00 0066813c 25000000 00000081 fb000000 00813c25 00000000 00000000 4881fb00 00000048 813c2500 00000000 000000')
+// CHECK: Name: cmp
+// CHECK: SectionData (
+// CHECK-NEXT: 0000: 6681FB00 0066813C 25000000 00000081
+// CHECK-NEXT: 0010: FB000000 00813C25 00000000 00000000
+// CHECK-NEXT: 0020: 4881FB00 00000048 813C2500 00000000
+// CHECK-NEXT: 0030: 000000
+// CHECK-NEXT: )
.section cmp
cmp $foo, %bx
cmpw $foo, bar
diff --git a/test/MC/ELF/relax.s b/test/MC/ELF/relax.s
index 0b5d24f..49ee8e2 100644
--- a/test/MC/ELF/relax.s
+++ b/test/MC/ELF/relax.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd -t | FileCheck %s
// Test that we do not relax these.
@@ -11,17 +11,23 @@ foo:
jmp foo
jmp zed
-// CHECK: ('sh_name', 0x00000001) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000006)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ('_section_data', 'ebfeebfc ebfa')
-
-// CHECK: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000005) # 'foo'
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 6
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: EBFEEBFC EBFA
+// CHECK-NEXT: )
+// CHECK-NEXT: }
+// CHECK: Symbol {
+// CHECK: Name: foo (5)
diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s
index 85da2eb..24d0172 100644
--- a/test/MC/ELF/relocation-386.s
+++ b/test/MC/ELF/relocation-386.s
@@ -1,205 +1,86 @@
-// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
// Test that we produce the correct relocation types and that the relocations
// correctly point to the section or the symbol.
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x00000002)
-// CHECK-NEXT: ('r_sym', 0x000001)
-// CHECK-NEXT: ('r_type', 0x09)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x04)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 2
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x0a)
-// CHECK-NEXT: ),
-
+// CHECK: Relocations [
+// CHECK-NEXT: Section (1) .text {
+// CHECK-NEXT: 0x2 R_386_GOTOFF .Lfoo 0x0
+// CHECK-NEXT: 0x{{[^ ]+}} R_386_PLT32 bar2 0x0
+// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0
// Relocation 3 (bar3@GOTOFF) is done with symbol 7 (bss)
-// CHECK-NEXT: # Relocation 3
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym', 0x000007
-// CHECK-NEXT: ('r_type',
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOTOFF .bss 0x0
// Relocation 4 (bar2@GOT) is of type R_386_GOT32
-// CHECK-NEXT: # Relocation 4
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x03
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOT32 bar2j 0x0
// Relocation 5 (foo@TLSGD) is of type R_386_TLS_GD
-// CHECK-NEXT: # Relocation 5
-// CHECK-NEXT: (('r_offset', 0x00000020)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x12)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x20 R_386_TLS_GD foo 0x0
// Relocation 6 ($foo@TPOFF) is of type R_386_TLS_LE_32
-// CHECK-NEXT: # Relocation 6
-// CHECK-NEXT: (('r_offset', 0x00000025)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x22)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x25 R_386_TLS_LE_32 foo 0x0
// Relocation 7 (foo@INDNTPOFF) is of type R_386_TLS_IE
-// CHECK-NEXT: # Relocation 7
-// CHECK-NEXT: (('r_offset', 0x0000002b)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x0f)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x2B R_386_TLS_IE foo 0x0
// Relocation 8 (foo@NTPOFF) is of type R_386_TLS_LE
-// CHECK-NEXT: # Relocation 8
-// CHECK-NEXT: (('r_offset', 0x00000031)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x11)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x31 R_386_TLS_LE foo 0x0
// Relocation 9 (foo@GOTNTPOFF) is of type R_386_TLS_GOTIE
-// CHECK-NEXT: # Relocation 9
-// CHECK-NEXT: (('r_offset', 0x00000037)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x10)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x37 R_386_TLS_GOTIE foo 0x0
// Relocation 10 (foo@TLSLDM) is of type R_386_TLS_LDM
-// CHECK-NEXT: # Relocation 10
-// CHECK-NEXT: (('r_offset', 0x0000003d)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x13)
-// CHECK-NEXT: ),
-
+// CHECK-NEXT: 0x3D R_386_TLS_LDM foo 0x0
// Relocation 11 (foo@DTPOFF) is of type R_386_TLS_LDO_32
-// CHECK-NEXT: # Relocation 11
-// CHECK-NEXT: (('r_offset', 0x00000043)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x20)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x43 R_386_TLS_LDO_32 foo 0x0
// Relocation 12 (calll 4096) is of type R_386_PC32
-// CHECK-NEXT: # Relocation 12
-// CHECK-NEXT: (('r_offset', 0x00000048)
-// CHECK-NEXT: ('r_sym', 0x000000)
-// CHECK-NEXT: ('r_type', 0x02)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x48 R_386_PC32 - 0x0
// Relocation 13 (zed@GOT) is of type R_386_GOT32 and uses the symbol
-// CHECK-NEXT: # Relocation 13
-// CHECK-NEXT: (('r_offset', 0x0000004e)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x03)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x4E R_386_GOT32 zed 0x0
// Relocation 14 (zed@GOTOFF) is of type R_386_GOTOFF and uses the symbol
-// CHECK-NEXT: # Relocation 14
-// CHECK-NEXT: (('r_offset', 0x00000054)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x09)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x54 R_386_GOTOFF zed 0x0
// Relocation 15 (zed@INDNTPOFF) is of type R_386_TLS_IE and uses the symbol
-// CHECK-NEXT: # Relocation 15
-// CHECK-NEXT: (('r_offset', 0x0000005a)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x0f)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x5A R_386_TLS_IE zed 0x0
// Relocation 16 (zed@NTPOFF) is of type R_386_TLS_LE and uses the symbol
-// CHECK-NEXT: # Relocation 16
-// CHECK-NEXT: (('r_offset', 0x00000060)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x11)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x60 R_386_TLS_LE zed 0x0
// Relocation 17 (zed@GOTNTPOFF) is of type R_386_TLS_GOTIE and uses the symbol
-// CHECK-NEXT: # Relocation 17
-// CHECK-NEXT: (('r_offset', 0x00000066)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x10)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x66 R_386_TLS_GOTIE zed 0x0
// Relocation 18 (zed@PLT) is of type R_386_PLT32 and uses the symbol
-// CHECK-NEXT: # Relocation 18
-// CHECK-NEXT: (('r_offset', 0x0000006b)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x04)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x6B R_386_PLT32 zed 0x0
// Relocation 19 (zed@TLSGD) is of type R_386_TLS_GD and uses the symbol
-// CHECK-NEXT: # Relocation 19
-// CHECK-NEXT: (('r_offset', 0x00000071)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x12)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x71 R_386_TLS_GD zed 0x0
// Relocation 20 (zed@TLSLDM) is of type R_386_TLS_LDM and uses the symbol
-// CHECK-NEXT: # Relocation 20
-// CHECK-NEXT: (('r_offset', 0x00000077)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x13)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x77 R_386_TLS_LDM zed 0x0
// Relocation 21 (zed@TPOFF) is of type R_386_TLS_LE_32 and uses the symbol
-// CHECK-NEXT:# Relocation 21
-// CHECK-NEXT: (('r_offset', 0x0000007d)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x22)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x7D R_386_TLS_LE_32 zed 0x0
// Relocation 22 (zed@DTPOFF) is of type R_386_TLS_LDO_32 and uses the symbol
-// CHECK-NEXT: Relocation 22
-// CHECK-NEXT: (('r_offset', 0x00000083)
-// CHECK-NEXT: ('r_sym', 0x000004)
-// CHECK-NEXT: ('r_type', 0x20)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x83 R_386_TLS_LDO_32 zed 0x0
// Relocation 23 ($bar) is of type R_386_32 and uses the section
-// CHECK-NEXT: Relocation 23
-// CHECK-NEXT: (('r_offset',
-// CHECK-NEXT: ('r_sym',
-// CHECK-NEXT: ('r_type', 0x01)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x{{[^ ]+}} R_386_32 .text 0x0
// Relocation 24 (foo@GOTTPOFF(%edx)) is of type R_386_TLS_IE_32 and uses the
// symbol
-// CHECK-NEXT: Relocation 24
-// CHECK-NEXT: (('r_offset', 0x0000008e)
-// CHECK-NEXT: ('r_sym', 0x00000d)
-// CHECK-NEXT: ('r_type', 0x21)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x8E R_386_TLS_IE_32 foo 0x0
// Relocation 25 (_GLOBAL_OFFSET_TABLE_-bar2) is of type R_386_GOTPC.
-// CHECK-NEXT: Relocation 25
-// CHECK-NEXT: (('r_offset', 0x00000094)
-// CHECK-NEXT: ('r_sym', 0x00000b)
-// CHECK-NEXT: ('r_type', 0x0a)
-// CHECK-NEXT: ),
+// CHECK-NEXT: 0x94 R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0
// Relocation 26 (und_symbol-bar2) is of type R_386_PC32
-// CHECK-NEXT: Relocation 26
-// CHECK-NEXT: (('r_offset', 0x0000009a)
-// CHECK-NEXT: ('r_sym', 0x00000e)
-// CHECK-NEXT: ('r_type', 0x02)
-// CHECK-NEXT: ),
-
-// Section 4 is bss
-// CHECK: # Section 4
-// CHECK-NEXT: (('sh_name', 0x0000000b) # '.bss'
-
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000005) # '.Lfoo'
+// CHECK-NEXT: 0x9A R_386_PC32 und_symbol 0x0
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
// Symbol 4 is zed
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000035) # 'zed'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0005)
-
+// CHECK: Symbol {
+// CHECK: Name: zed (53)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: zedsec (0x5)
+// CHECK-NEXT: }
// Symbol 7 is section 4
-// CHECK: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-
+// CHECK: Symbol {
+// CHECK: Name: .bss (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x4)
+// CHECK-NEXT: }
.text
bar:
diff --git a/test/MC/ELF/relocation-pc.s b/test/MC/ELF/relocation-pc.s
index b6279c3..551f5ff 100644
--- a/test/MC/ELF/relocation-pc.s
+++ b/test/MC/ELF/relocation-pc.s
@@ -1,33 +1,32 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr | FileCheck %s
// Test that we produce the correct relocation.
loope 0 # R_X86_64_PC8
jmp -256 # R_X86_64_PC32
-// CHECK: # Section 2
-// CHECK-NEXT: (('sh_name', 0x00000001) # '.rela.text'
-// CHECK-NEXT: ('sh_type', 0x00000004)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x00000000000002e8)
-// CHECK-NEXT: ('sh_size', 0x0000000000000030)
-// CHECK-NEXT: ('sh_link', 0x00000006)
-// CHECK-NEXT: ('sh_info', 0x00000001)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000008)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000018)
-// CHECK-NEXT: ('_relocations', [
-// CHECK-NEXT: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000001)
-// CHECK-NEXT: ('r_sym', 0x00000000)
-// CHECK-NEXT: ('r_type', 0x0000000f)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000003)
-// CHECK-NEXT: ('r_sym', 0x00000000)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Index: 1
+// CHECK-NEXT: Name: .text
+// CHECK: Relocations [
+// CHECK-NEXT: 0x1 R_X86_64_PC8 - 0x0
+// CHECK-NEXT: 0x3 R_X86_64_PC32 - 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+// CHECK: Section {
+// CHECK: Index: 2
+// CHECK-NEXT: Name: .rela.text
+// CHECK-NEXT: Type: SHT_RELA
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x2E8
+// CHECK-NEXT: Size: 48
+// CHECK-NEXT: Link: 6
+// CHECK-NEXT: Info: 1
+// CHECK-NEXT: AddressAlignment: 8
+// CHECK-NEXT: EntrySize: 24
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s
index 5db213b..19bcc18 100644
--- a/test/MC/ELF/relocation.s
+++ b/test/MC/ELF/relocation.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -t | FileCheck %s
// Test that we produce the correct relocation.
@@ -20,102 +20,33 @@ bar:
addq $bar,%rax # R_X86_64_32S
-// CHECK: # Section 1
-// CHECK: (('sh_name', 0x00000006) # '.text'
-
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000001)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000008)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 2
-// CHECK-NEXT: (('r_offset', 0x0000000000000013)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 3
-// CHECK-NEXT: (('r_offset', 0x000000000000001a)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 4
-// CHECK-NEXT: (('r_offset', 0x0000000000000022)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 5
-// CHECK-NEXT: (('r_offset', 0x0000000000000026)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend',
-
-// CHECK: # Relocation 6
-// CHECK-NEXT: (('r_offset', 0x000000000000002d)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000016)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-
-// CHECK: # Relocation 7
-// CHECK-NEXT: (('r_offset', 0x0000000000000034)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000013)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-
-// CHECK: # Relocation 8
-// CHECK-NEXT: (('r_offset', 0x000000000000003b)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000017)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-
-// CHECK: # Relocation 9
-// CHECK-NEXT: (('r_offset', 0x0000000000000042)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000014)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-
-// CHECK: # Relocation 10
-// CHECK-NEXT: (('r_offset', 0x0000000000000049)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000015)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-
-// CHECK: # Relocation 11
-// CHECK-NEXT: (('r_offset', 0x000000000000004e)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-
-// CHECK: # Relocation 12
-// CHECK-NEXT: (('r_offset', 0x0000000000000055)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-
-// CHECK: # Relocation 13
-// CHECK-NEXT: (('r_offset', 0x000000000000005c)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0x000000000000005c)
-
-// CHECK: # Relocation 14
-// CHECK-NEXT: (('r_offset', 0x0000000000000063)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-
-// CHECK: # Symbol 2
-// CHECK: (('st_name', 0x00000000) # ''
-// CHECK: ('st_bind', 0x0)
-// CHECK: ('st_type', 0x3)
-// CHECK: ('st_other', 0x00)
-// CHECK: ('st_shndx', 0x0001)
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK: Relocations [
+// CHECK-NEXT: 0x1 R_X86_64_32 .text
+// CHECK-NEXT: 0x8 R_X86_64_32S .text
+// CHECK-NEXT: 0x13 R_X86_64_32S .text
+// CHECK-NEXT: 0x1A R_X86_64_32S .text
+// CHECK-NEXT: 0x22 R_X86_64_32S .text
+// CHECK-NEXT: 0x26 R_X86_64_32 .text
+// CHECK-NEXT: 0x2D R_X86_64_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x34 R_X86_64_TLSGD foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x3B R_X86_64_TPOFF32 foo 0x0
+// CHECK-NEXT: 0x42 R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x49 R_X86_64_DTPOFF32 foo 0x0
+// CHECK-NEXT: 0x4E R_X86_64_32S .text 0x0
+// CHECK-NEXT: 0x55 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x5C R_X86_64_PC32 foo 0x5C
+// CHECK-NEXT: 0x63 R_X86_64_32S .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+// CHECK: Symbol {
+// CHECK: Name: .text (0)
+// CHECK-NEXT: Value:
+// CHECK-NEXT: Size:
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/rename.s b/test/MC/ELF/rename.s
index 241aa05..c50910b 100644
--- a/test/MC/ELF/rename.s
+++ b/test/MC/ELF/rename.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -t | FileCheck %s
// When doing a rename, all the checks for where the relocation should go
// should be performed with the original symbol. Only if we decide to relocate
@@ -16,31 +16,33 @@ defined3:
.global defined1
// Section 1 is .text
-// CHECK: # Section 1
-// CHECK-NEXT: (('sh_name', 0x00000006) # '.text'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000040)
-// CHECK-NEXT: ('sh_size', 0x0000000000000004)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000004)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-
-// The relocation uses symbol 2
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000000)
-// CHECK-NEXT: ('r_sym', 0x00000002)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
+// CHECK: Section {
+// CHECK: Index: 1
+// CHECK-NEXT: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 4
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: Relocations [
+// CHECK-NEXT: 0x0 R_X86_64_32 .text 0x0
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
// Symbol 2 is section 1
-// CHECK: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
+// CHECK: Symbol {
+// CHECK: Name: .text (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/section.s b/test/MC/ELF/section.s
index c71e1a7..a679403 100644
--- a/test/MC/ELF/section.s
+++ b/test/MC/ELF/section.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
// Test that these names are accepted.
@@ -7,10 +7,10 @@
.section .note.GNU-,"",@progbits
.section -.note.GNU,"",@progbits
-// CHECK: ('sh_name', 0x00000038) # '.note.GNU-stack'
-// CHECK: ('sh_name', 0x0000008f) # '.note.GNU-stack2'
-// CHECK: ('sh_name', 0x000000a0) # '.note.GNU-'
-// CHECK: ('sh_name', 0x00000084) # '-.note.GNU'
+// CHECK: Name: .note.GNU-stack (56)
+// CHECK: Name: .note.GNU-stack2 (143)
+// CHECK: Name: .note.GNU- (160)
+// CHECK: Name: -.note.GNU (132)
// Test that the defaults are used
@@ -19,66 +19,81 @@
.section .rodata
.section zed, ""
-// CHECK: (('sh_name', 0x00000012) # '.init'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 11
-// CHECK-NEXT: (('sh_name', 0x00000048) # '.fini'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000006)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 12
-// CHECK-NEXT: (('sh_name', 0x00000076) # '.rodata'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Section 13
-// CHECK-NEXT: (('sh_name', 0x00000058) # 'zed'
-// CHECK-NEXT: ('sh_type', 0x00000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .init
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 11
+// CHECK-NEXT: Name: .fini
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 12
+// CHECK-NEXT: Name: .rodata
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index: 13
+// CHECK-NEXT: Name: zed
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
.section .note.test,"",@note
-// CHECK: (('sh_name', 0x00000007) # '.note.test'
-// CHECK-NEXT: ('sh_type', 0x00000007)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000000)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .note.test
+// CHECK-NEXT: Type: SHT_NOTE
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
// Test that we can parse these
foo:
@@ -90,21 +105,26 @@ bar:
.section .eh_frame,"a",@unwind
-// CHECK: (('sh_name', 0x0000004e) # '.eh_frame'
-// CHECK-NEXT: ('sh_type', 0x70000001)
-// CHECK-NEXT: ('sh_flags', 0x0000000000000002)
-// CHECK-NEXT: ('sh_addr', 0x0000000000000000)
-// CHECK-NEXT: ('sh_offset', 0x0000000000000050)
-// CHECK-NEXT: ('sh_size', 0x0000000000000000)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x0000000000000001)
-// CHECK-NEXT: ('sh_entsize', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .eh_frame
+// CHECK-NEXT: Type: SHT_X86_64_UNWIND
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x50
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 1
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
// Test that we handle the strings like gas
.section bar-"foo"
.section "foo"
-// CHECK: ('sh_name', 0x000000ab) # 'bar-"foo"'
-// CHECK: ('sh_name', 0x00000034) # 'foo'
+// CHECK: Section {
+// CHECK: Name: bar-"foo" (171)
+// CHECK: Section {
+// CHECK: Name: foo (52)
diff --git a/test/MC/ELF/set.s b/test/MC/ELF/set.s
index 2258b19..f6965a5 100644
--- a/test/MC/ELF/set.s
+++ b/test/MC/ELF/set.s
@@ -1,17 +1,18 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that we emit the correct value.
.set kernbase,0xffffffff80000000
-// CHECK: (('st_name', 0x00000001) # 'kernbase'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0xfff1)
-// CHECK-NEXT: ('st_value', 0xffffffff80000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: kernbase (1)
+// CHECK-NEXT: Value: 0xFFFFFFFF80000000
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0xFFF1)
+// CHECK-NEXT: }
// Test that we accept .set of a symbol after it has been used in a statement.
@@ -24,11 +25,12 @@
.set foo2,bar2
// Test that there is an undefined reference to bar
-// CHECK: (('st_name', 0x0000000a) # 'bar'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: bar (10)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/sleb.s b/test/MC/ELF/sleb.s
index 00e5b4b..5cba582 100644
--- a/test/MC/ELF/sleb.s
+++ b/test/MC/ELF/sleb.s
@@ -1,5 +1,5 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_32 %s
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_64 %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 %s
// RUN: llvm-mc -filetype=obj -triple i386-apple-darwin9 %s -o - | macho-dump --dump-section-data | FileCheck -check-prefix=MACHO_32 %s
// RUN: llvm-mc -filetype=obj -triple x86_64-apple-darwin9 %s -o - | macho-dump --dump-section-data | FileCheck -check-prefix=MACHO_64 %s
@@ -19,10 +19,14 @@ foo:
.sleb128 8193
-// ELF_32: ('sh_name', 0x00000001) # '.text'
-// ELF_32: ('_section_data', '00017f3f 40c000bf 7fff3f80 4081c000')
-// ELF_64: ('sh_name', 0x00000001) # '.text'
-// ELF_64: ('_section_data', '00017f3f 40c000bf 7fff3f80 4081c000')
+// ELF_32: Name: .text
+// ELF_32: SectionData (
+// ELF_32: 0000: 00017F3F 40C000BF 7FFF3F80 4081C000
+// ELF_32: )
+// ELF_64: Name: .text
+// ELF_64: SectionData (
+// ELF_64: 0000: 00017F3F 40C000BF 7FFF3F80 4081C000
+// ELF_64: )
// MACHO_32: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
// MACHO_32: ('_section_data', '00017f3f 40c000bf 7fff3f80 4081c000')
// MACHO_64: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
diff --git a/test/MC/ELF/subsection.s b/test/MC/ELF/subsection.s
new file mode 100644
index 0000000..d437cac
--- /dev/null
+++ b/test/MC/ELF/subsection.s
@@ -0,0 +1,37 @@
+// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | llvm-objdump -s - | FileCheck %s
+
+// CHECK: Contents of section .text:
+// CHECK-NEXT: 0000 03042502 00000003 04250100 0000ebf7
+.text 1
+add 1, %eax
+jmp label
+.subsection
+add 2, %eax
+label:
+
+// CHECK-NOT: Contents of section .rela.text:
+
+// CHECK: Contents of section .data:
+// CHECK-NEXT: 0000 01030402 74657374
+.data
+l0:
+.byte 1
+.subsection 1+1
+l1:
+.byte 2
+l2:
+.subsection l2-l1
+.byte l1-l0
+.subsection 3
+.ascii "test"
+.previous
+.byte 4
+
+// CHECK: Contents of section test:
+// CHECK-NEXT: 0000 010302
+.section test
+.byte 1
+.pushsection test, 1
+.byte 2
+.popsection
+.byte 3
diff --git a/test/MC/ELF/symref.s b/test/MC/ELF/symref.s
index 2dfa058..9a71a81 100644
--- a/test/MC/ELF/symref.s
+++ b/test/MC/ELF/symref.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
defined1:
defined2:
@@ -21,145 +21,122 @@ defined3:
.symver global1, g1@@zed
global1:
+// CHECK: Relocations [
+// CHECK-NEXT: Section (1) .text {
+// CHECK-NEXT: 0x0 R_X86_64_32 .text 0x0
+// CHECK-NEXT: 0x4 R_X86_64_32 bar2@zed 0x0
+// CHECK-NEXT: 0x8 R_X86_64_32 .text 0x0
+// CHECK-NEXT: 0xC R_X86_64_32 .text 0x0
+// CHECK-NEXT: 0x10 R_X86_64_32 bar6@zed 0x0
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000000)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000004)
-// CHECK-NEXT: ('r_sym', 0x0000000b)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 2
-// CHECK-NEXT: (('r_offset', 0x0000000000000008)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 3
-// CHECK-NEXT: (('r_offset', 0x000000000000000c)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 4
-// CHECK-NEXT: (('r_offset', 0x0000000000000010)
-// CHECK-NEXT: ('r_sym', 0x0000000c)
-// CHECK-NEXT: ('r_type', 0x0000000a)
-// CHECK-NEXT: ('r_addend', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT:])
-
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000013) # 'bar1@zed'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000025) # 'bar3@@zed'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 3
-// CHECK-NEXT: (('st_name', 0x0000002f) # 'bar5@@zed'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000001) # 'defined1'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x0000000a) # 'defined2'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0003)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x0000004a) # 'g1@@zed'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000014)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 10
-// CHECK-NEXT: (('st_name', 0x00000042) # 'global1'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000014)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 11
-// CHECK-NEXT: (('st_name', 0x0000001c) # 'bar2@zed'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 12
-// CHECK-NEXT: (('st_name', 0x00000039) # 'bar6@zed'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT:])
+// CHECK: Symbol {
+// CHECK: Name: bar1@zed (19)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar3@@zed (37)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar5@@zed (47)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: defined1 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: defined2 (10)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .text (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .data (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .data (0x3)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .bss (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x4)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: g1@@zed (74)
+// CHECK-NEXT: Value: 0x14
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: global1 (66)
+// CHECK-NEXT: Value: 0x14
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar2@zed (28)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar6@zed (57)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/tls-i386.s b/test/MC/ELF/tls-i386.s
index 922d4c6..267046e 100644
--- a/test/MC/ELF/tls-i386.s
+++ b/test/MC/ELF/tls-i386.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that all symbols are of type STT_TLS.
@@ -17,129 +17,129 @@
.long fooD@DTPOFF
.long fooE@INDNTPOFF
-// CHECK: (('st_name', 0x00000001) # 'foo1'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000006) # 'foo2'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x0000000b) # 'foo3'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x00000010) # 'foo4'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x00000015) # 'foo5'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 10
-// CHECK-NEXT: (('st_name', 0x0000001a) # 'foo6'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 11
-// CHECK-NEXT: (('st_name', 0x0000001f) # 'foo7'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 12
-// CHECK-NEXT: (('st_name', 0x00000024) # 'foo8'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 13
-// CHECK-NEXT: (('st_name', 0x00000029) # 'foo9'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 14
-// CHECK-NEXT: (('st_name', 0x0000002e) # 'fooA'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 15
-// CHECK-NEXT: (('st_name', 0x00000033) # 'fooB'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 16
-// CHECK-NEXT: (('st_name', 0x00000038) # 'fooC'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 17
-// CHECK-NEXT: (('st_name', 0x0000003d) # 'fooD'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 18
-// CHECK-NEXT: (('st_name', 0x00000042) # 'fooE'
-// CHECK-NEXT: ('st_value', 0x00000000)
-// CHECK-NEXT: ('st_size', 0x00000000)
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ),
-
+// CHECK: Symbol {
+// CHECK: Name: foo1 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo2 (6)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo3 (11)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo4 (16)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo5 (21)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo6 (26)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo7 (31)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo8 (36)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo9 (41)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: fooA (46)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: fooB (51)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: fooC (56)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: fooD (61)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: fooE (66)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/tls.s b/test/MC/ELF/tls.s
index fe2bb4e..c71e396 100644
--- a/test/MC/ELF/tls.s
+++ b/test/MC/ELF/tls.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that all symbols are of type STT_TLS.
@@ -12,66 +12,67 @@
foobar:
.long 43
-// CHECK: (('st_name', 0x0000001f) # 'foobar'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0005)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: foobar (31)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .zed (0x5)
+// CHECK-NEXT: }
-// CHECK: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo1'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x00000006) # 'foo2'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x0000000b) # 'foo3'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 10
-// CHECK-NEXT: (('st_name', 0x00000010) # 'foo4'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 11
-// CHECK-NEXT: (('st_name', 0x00000015) # 'foo5'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 12
-// CHECK-NEXT: (('st_name', 0x0000001a) # 'foo6'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x6)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbol {
+// CHECK: Name: foo1 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo2 (6)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo3 (11)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo4 (16)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo5 (21)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo6 (26)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/type.s b/test/MC/ELF/type.s
index ec53e4f..a5b9812 100644
--- a/test/MC/ELF/type.s
+++ b/test/MC/ELF/type.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that both % and @ are accepted.
.global foo
@@ -12,35 +12,76 @@ bar:
// Test that gnu_unique_object is accepted.
.type zed,@gnu_unique_object
+obj:
+ .global obj
+ .type obj,@object
+ .type obj,@notype
+
+func:
+ .global func
+ .type func,@function
+ .type func,@object
+
ifunc:
.global ifunc
.type ifunc,@gnu_indirect_function
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000005) # 'bar'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x2)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000009) # 'ifunc'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0xa)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+tls:
+ .global tls
+ .type tls,@tls_object
+ .type tls,@gnu_indirect_function
+// CHECK: Symbol {
+// CHECK: Name: bar
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Function
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: func
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Function
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: ifunc
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: GNU_IFunc
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: obj
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: tls
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/uleb.s b/test/MC/ELF/uleb.s
index 1e4734b..d755cc2 100644
--- a/test/MC/ELF/uleb.s
+++ b/test/MC/ELF/uleb.s
@@ -1,5 +1,5 @@
-// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_32 %s
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=ELF_64 %s
+// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 %s
// RUN: llvm-mc -filetype=obj -triple i386-apple-darwin9 %s -o - | macho-dump --dump-section-data | FileCheck -check-prefix=MACHO_32 %s
// RUN: llvm-mc -filetype=obj -triple x86_64-apple-darwin9 %s -o - | macho-dump --dump-section-data | FileCheck -check-prefix=MACHO_64 %s
@@ -12,10 +12,14 @@ foo:
.uleb128 16383
.uleb128 16384
-// ELF_32: ('sh_name', 0x00000001) # '.text'
-// ELF_32: ('_section_data', '00017f80 01ff7f80 8001')
-// ELF_64: ('sh_name', 0x00000001) # '.text'
-// ELF_64: ('_section_data', '00017f80 01ff7f80 8001')
+// ELF_32: Name: .text
+// ELF_32: SectionData (
+// ELF_32: 0000: 00017F80 01FF7F80 8001
+// ELF_32: )
+// ELF_64: Name: .text
+// ELF_64: SectionData (
+// ELF_64: 0000: 00017F80 01FF7F80 8001
+// ELF_64: )
// MACHO_32: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
// MACHO_32: ('_section_data', '00017f80 01ff7f80 8001')
// MACHO_64: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
diff --git a/test/MC/ELF/undef.s b/test/MC/ELF/undef.s
index e377c63..0d89fb1 100644
--- a/test/MC/ELF/undef.s
+++ b/test/MC/ELF/undef.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test which symbols should be in the symbol table
@@ -19,28 +19,21 @@
.text
movsd .Lsym8(%rip), %xmm1
-// CHECK: ('_symbols', [
-// CHECK-NEXT: # Symbol 0
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x0000000d) # '.Lsym8'
-// CHECK: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 3
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000001) # '.Lsym1'
-// CHECK: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000008) # 'sym6'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x1)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Symbols [
+
+// CHECK: Symbol {
+// CHECK: Name: .Lsym8
+
+// CHECK: Symbol {
+// CHECK: Name: .Lsym1
+
+// CHECK: Symbol {
+// CHECK: Name: sym6
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: Object
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/undef2.s b/test/MC/ELF/undef2.s
index 6f971c5..6aa66c0 100644
--- a/test/MC/ELF/undef2.s
+++ b/test/MC/ELF/undef2.s
@@ -1,10 +1,18 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s
// Test that this produces an undefined reference to .Lfoo
je .Lfoo
-// CHECK: ('_symbols', [
-// CHECK: (('st_name', 0x00000001) # '.Lfoo'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK: (('sh_name', 0x0000001b) # '.strtab'
+// CHECK: Section {
+// CHECK: Name: .strtab
+
+// CHECK: Symbol {
+// CHECK: Name: .Lfoo
+// CHECK-NEXT: Value:
+// CHECK-NEXT: Size:
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Other:
+// CHECK-NEXT: Section:
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/version.s b/test/MC/ELF/version.s
index 31e952a..0bc9c8b 100644
--- a/test/MC/ELF/version.s
+++ b/test/MC/ELF/version.s
@@ -1,17 +1,23 @@
-// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
.version "1234"
.version "123"
-// CHECK: (('sh_name', 0x0000000c) # '.note'
-// CHECK-NEXT: ('sh_type', 0x00000007)
-// CHECK-NEXT: ('sh_flags', 0x00000000)
-// CHECK-NEXT: ('sh_addr', 0x00000000)
-// CHECK-NEXT: ('sh_offset', 0x00000034)
-// CHECK-NEXT: ('sh_size', 0x00000024)
-// CHECK-NEXT: ('sh_link', 0x00000000)
-// CHECK-NEXT: ('sh_info', 0x00000000)
-// CHECK-NEXT: ('sh_addralign', 0x00000004)
-// CHECK-NEXT: ('sh_entsize', 0x00000000)
-// CHECK-NEXT: ('_section_data', '05000000 00000000 01000000 31323334 00000000 04000000 00000000 01000000 31323300')
-// CHECK-NEXT: ),
+// CHECK: Section {
+// CHECK: Name: .note
+// CHECK-NEXT: Type: SHT_NOTE
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x34
+// CHECK-NEXT: Size: 36
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 05000000 00000000 01000000 31323334
+// CHECK-NEXT: 0010: 00000000 04000000 00000000 01000000
+// CHECK-NEXT: 0020: 31323300
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/weak-relocation.s b/test/MC/ELF/weak-relocation.s
index 88e841e..0f5bba2 100644
--- a/test/MC/ELF/weak-relocation.s
+++ b/test/MC/ELF/weak-relocation.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s
// Test that weak symbols always produce relocations
@@ -7,9 +7,8 @@ foo:
bar:
call foo
-//CHECK: # Relocation 0
-//CHECK-NEXT: (('r_offset', 0x0000000000000001)
-//CHECK-NEXT: ('r_sym', 0x00000005)
-//CHECK-NEXT: ('r_type', 0x00000002)
-//CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-//CHECK-NEXT: ),
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[0-9]+}}) .text {
+// CHECK-NEXT: 0x1 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/weak.s b/test/MC/ELF/weak.s
index 07a8391..2ed3eb7 100644
--- a/test/MC/ELF/weak.s
+++ b/test/MC/ELF/weak.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// Test that this produces a weak undefined symbol.
@@ -9,22 +9,22 @@
.weak bar
bar:
-//CHECK: # Symbol 4
-//CHECK-NEXT: (('st_name', 0x00000005) # 'bar'
-//CHECK-NEXT: ('st_bind', 0x2)
-//CHECK-NEXT: ('st_type', 0x0)
-//CHECK-NEXT: ('st_other', 0x00)
-//CHECK-NEXT: ('st_shndx', 0x0001)
-//CHECK-NEXT: ('st_value', 0x0000000000000004)
-//CHECK-NEXT: ('st_size', 0x0000000000000000)
-//CHECK-NEXT: ),
-//CHECK-NEXT: # Symbol 5
-//CHECK: (('st_name', 0x00000001) # 'foo'
-//CHECK-NEXT: ('st_bind', 0x2)
-//CHECK-NEXT: ('st_type', 0x0)
-//CHECK-NEXT: ('st_other', 0x00)
-//CHECK-NEXT: ('st_shndx', 0x0000)
-//CHECK-NEXT: ('st_value', 0x0000000000000000)
-//CHECK-NEXT: ('st_size', 0x0000000000000000)
-//CHECK-NEXT: ),
-//CHECK-NEXT: ])
+// CHECK: Symbol {
+// CHECK: Name: bar
+// CHECK-NEXT: Value: 0x4
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text
+// CHECK-NEXT: }
+// CHECK: Symbol {
+// CHECK: Name: foo
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/weakref-plt.s b/test/MC/ELF/weakref-plt.s
index 2e50093..d6486dc 100644
--- a/test/MC/ELF/weakref-plt.s
+++ b/test/MC/ELF/weakref-plt.s
@@ -1,8 +1,14 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
.weakref bar,foo
call bar@PLT
-// CHECK: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x2)
+// CHECK: Symbol {
+// CHECK: Name: foo
+// CHECK-NEXT: Value:
+// CHECK-NEXT: Size:
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Other:
+// CHECK-NEXT: Section:
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/weakref-reloc.s b/test/MC/ELF/weakref-reloc.s
index 4bbf264..48bda87 100644
--- a/test/MC/ELF/weakref-reloc.s
+++ b/test/MC/ELF/weakref-reloc.s
@@ -1,49 +1,44 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
// Test that the relocations point to the correct symbols. We used to get the
// symbol index wrong for weakrefs when creating _GLOBAL_OFFSET_TABLE_.
- .weakref bar,foo
+ .weakref bar,foo
call zed@PLT
- call bar
+ call bar
-// CHECK: # Relocation 0
-// CHECK-NEXT: (('r_offset', 0x0000000000000001)
-// CHECK-NEXT: ('r_sym', 0x00000006)
-// CHECK-NEXT: ('r_type', 0x00000004)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Relocation 1
-// CHECK-NEXT: (('r_offset', 0x0000000000000006)
-// CHECK-NEXT: ('r_sym', 0x00000005)
-// CHECK-NEXT: ('r_type', 0x00000002)
-// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc)
-// CHECK-NEXT: ),
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[0-9]+}}) {{[^ ]+}} {
+// CHECK-NEXT: 0x1 R_X86_64_PLT32 zed 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x6 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
-// CHECK: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000009) # '_GLOBAL_OFFSET_TABLE_'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x2)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000005) # 'zed'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
+// CHECK: Symbols [
+// CHECK: Symbol {
+// CHECK: Name: _GLOBAL_OFFSET_TABLE_ (9)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: foo (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: zed (5)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
diff --git a/test/MC/ELF/weakref.s b/test/MC/ELF/weakref.s
index e12d2c7..8717364 100644
--- a/test/MC/ELF/weakref.s
+++ b/test/MC/ELF/weakref.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
// This is a long test that checks that the aliases created by weakref are
// never in the symbol table and that the only case it causes a symbol to
@@ -69,166 +69,158 @@ bar15:
.long bar15
.long foo15
-// CHECK: # Symbol 0
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 1
-// CHECK-NEXT: (('st_name', 0x00000015) # 'bar6'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000018)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 2
-// CHECK-NEXT: (('st_name', 0x0000001a) # 'bar7'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000018)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 3
-// CHECK-NEXT: (('st_name', 0x0000001f) # 'bar8'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x000000000000001c)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 4
-// CHECK-NEXT: (('st_name', 0x00000024) # 'bar9'
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000020)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 5
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 6
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0003)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 7
-// CHECK-NEXT: (('st_name', 0x00000000) # ''
-// CHECK-NEXT: ('st_bind', 0x0)
-// CHECK-NEXT: ('st_type', 0x3)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0004)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 8
-// CHECK-NEXT: (('st_name', 0x00000029) # 'bar10'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000028)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 9
-// CHECK-NEXT: (('st_name', 0x0000002f) # 'bar11'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000030)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 10
-// CHECK-NEXT: (('st_name', 0x00000035) # 'bar12'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000030)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 11
-// CHECK-NEXT: (('st_name', 0x0000003b) # 'bar13'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000034)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 12
-// CHECK-NEXT: (('st_name', 0x00000041) # 'bar14'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000038)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 13
-// CHECK-NEXT: (('st_name', 0x00000047) # 'bar15'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0001)
-// CHECK-NEXT: ('st_value', 0x0000000000000040)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 14
-// CHECK-NEXT: (('st_name', 0x00000001) # 'bar2'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 15
-// CHECK-NEXT: (('st_name', 0x00000006) # 'bar3'
-// CHECK-NEXT: ('st_bind', 0x2)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 16
-// CHECK-NEXT: (('st_name', 0x0000000b) # 'bar4'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: # Symbol 17
-// CHECK-NEXT: (('st_name', 0x00000010) # 'bar5'
-// CHECK-NEXT: ('st_bind', 0x1)
-// CHECK-NEXT: ('st_type', 0x0)
-// CHECK-NEXT: ('st_other', 0x00)
-// CHECK-NEXT: ('st_shndx', 0x0000)
-// CHECK-NEXT: ('st_value', 0x0000000000000000)
-// CHECK-NEXT: ('st_size', 0x0000000000000000)
-// CHECK-NEXT: ),
-// CHECK-NEXT: ])
+// CHECK: Symbols [
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar6 (21)
+// CHECK-NEXT: Value: 0x18
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar7 (26)
+// CHECK-NEXT: Value: 0x18
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar8 (31)
+// CHECK-NEXT: Value: 0x1C
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar9 (36)
+// CHECK-NEXT: Value: 0x20
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .text (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .data (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .data (0x3)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: .bss (0)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: Section
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .bss (0x4)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar10 (41)
+// CHECK-NEXT: Value: 0x28
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar11 (47)
+// CHECK-NEXT: Value: 0x30
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar12 (53)
+// CHECK-NEXT: Value: 0x30
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar13 (59)
+// CHECK-NEXT: Value: 0x34
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar14 (65)
+// CHECK-NEXT: Value: 0x38
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar15 (71)
+// CHECK-NEXT: Value: 0x40
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .text (0x1)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar2 (1)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar3 (6)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Weak
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar4 (11)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: Symbol {
+// CHECK-NEXT: Name: bar5 (16)
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: (0x0)
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/x86_64-reloc-sizetest.s b/test/MC/ELF/x86_64-reloc-sizetest.s
index acca2f5..bd67ee0 100644
--- a/test/MC/ELF/x86_64-reloc-sizetest.s
+++ b/test/MC/ELF/x86_64-reloc-sizetest.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple x86_64-linux-gnu -filetype=obj %s | elf-dump | FileCheck %s
+// RUN: llvm-mc -triple x86_64-linux-gnu -filetype=obj %s | llvm-readobj -r | FileCheck %s
// Tests that relocation value fits in the provided size
// Original bug http://llvm.org/bugs/show_bug.cgi?id=10568
@@ -6,8 +6,8 @@
L: movq $(L + 2147483648),%rax
-// CHECK: Relocation 0
-// CHECK-NEXT: ('r_offset', 0x0000000000000003)
-// CHECK-NEXT: ('r_sym'
-// CHECK-NEXT: ('r_type', 0x0000000b)
-// CHECK-NEXT: ('r_addend', 0x0000000080000000
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{[0-9]+}}) .text {
+// CHECK-NEXT: 0x3 R_X86_64_32S {{[^ ]+}} 0x80000000
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
diff --git a/test/MC/ELF/zero.s b/test/MC/ELF/zero.s
index 46ffe17..be92eb8 100644
--- a/test/MC/ELF/zero.s
+++ b/test/MC/ELF/zero.s
@@ -1,16 +1,23 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
.zero 4
.zero 1,42
-// CHECK: ('sh_name', 0x00000001) # '.text'
-// CHECK: ('sh_type', 0x00000001)
-// CHECK: ('sh_flags', 0x0000000000000006)
-// CHECK: ('sh_addr', 0x0000000000000000)
-// CHECK: ('sh_offset', 0x0000000000000040)
-// CHECK: ('sh_size', 0x0000000000000005)
-// CHECK: ('sh_link', 0x00000000)
-// CHECK: ('sh_info', 0x00000000)
-// CHECK: ('sh_addralign', 0x0000000000000004)
-// CHECK: ('sh_entsize', 0x0000000000000000)
-// CHECK: ('_section_data', '00000000 2a')
+// CHECK: Section {
+// CHECK: Name: .text
+// CHECK-NEXT: Type: SHT_PROGBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_EXECINSTR
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
+// CHECK-NEXT: Offset: 0x40
+// CHECK-NEXT: Size: 5
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 00000000 2A
+// CHECK-NEXT: )
+// CHECK-NEXT: }
diff --git a/test/MC/Mips/ef_frame.ll b/test/MC/Mips/ef_frame.ll
deleted file mode 100644
index 91c8b43..0000000
--- a/test/MC/Mips/ef_frame.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; This tests .eh_frame CIE descriptor for the.
-; Data alignment factor
-
-; RUN: llc -filetype=obj -mcpu=mips64r2 -mattr=n64 -march=mips64el %s -o - \
-; RUN: | llvm-objdump -s - | FileCheck %s
-
-; N64
-; CHECK: Contents of section .eh_frame:
-; CHECK-NEXT: 0000 1c000000 00000000 017a504c 52000178 .........zPLR..x
-; CHECK-NEXT: 0010 1f0b0000 00000000 00000000 000c1d00 ................
-; CHECK-NEXT: 0020 2c000000 24000000 00000000 00000000 ,...$...........
-; CHECK-NEXT: 0030 7c000000 00000000 08000000 00000000 |...............
-; CHECK-NEXT: 0040 00440e10 489f019c 02000000 00000000 .D..H...........
-
-; ModuleID = 'simple_throw.cpp'
-
-@_ZTIi = external constant i8*
-@str = private unnamed_addr constant [7 x i8] c"All ok\00"
-
-define i32 @main() {
-entry:
- %exception.i = tail call i8* @__cxa_allocate_exception(i64 4) nounwind
- %0 = bitcast i8* %exception.i to i32*
- store i32 5, i32* %0, align 4
- invoke void @__cxa_throw(i8* %exception.i, i8* bitcast (i8** @_ZTIi to i8*), i8* null) noreturn
- to label %.noexc unwind label %return
-
-.noexc: ; preds = %entry
- unreachable
-
-return: ; preds = %entry
- %1 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
- catch i8* null
- %2 = extractvalue { i8*, i32 } %1, 0
- %3 = tail call i8* @__cxa_begin_catch(i8* %2) nounwind
- %puts = tail call i32 @puts(i8* getelementptr inbounds ([7 x i8]* @str, i64 0, i64 0))
- tail call void @__cxa_end_catch()
- ret i32 0
-}
-
-declare i32 @__gxx_personality_v0(...)
-
-declare i8* @__cxa_begin_catch(i8*)
-
-declare void @__cxa_end_catch()
-
-declare i8* @__cxa_allocate_exception(i64)
-
-declare void @__cxa_throw(i8*, i8*, i8*)
-
-declare i32 @puts(i8* nocapture) nounwind
-
diff --git a/test/MC/Mips/eh-frame.s b/test/MC/Mips/eh-frame.s
new file mode 100644
index 0000000..93ff0b8
--- /dev/null
+++ b/test/MC/Mips/eh-frame.s
@@ -0,0 +1,167 @@
+// Test the bits of .eh_frame on mips that are already implemented correctly.
+
+// FIXME: This test would be a lot cleaner if llvm-objdump had the
+// --dwarf=frames option.
+
+// RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips
+// RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS32 %s
+
+// RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mipsel
+// RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS32EL %s
+
+// RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips64
+// RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS64 %s
+
+// RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips64el
+// RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS64EL %s
+
+func:
+ .cfi_startproc
+ .cfi_endproc
+
+// MIPS32: RELOCATION RECORDS FOR [.eh_frame]:
+// MIPS32-NEXT: R_MIPS_32
+// MIPS32: Contents of section .eh_frame:
+// MIPS32-NEXT: 0000
+
+// Length
+// MIPS32: 00000010
+
+// CIE ID
+// MIPS32: 00000000
+
+// Version
+// MIPS32: 01
+
+// Augmentation String
+// MIPS32: 7a5200
+
+// Code Alignment Factor
+// MIPS32: 01
+
+// Data Alignment Factor (-4)
+// MIPS32: 7c
+
+// Return Address Register
+// MIPS32: 1f
+
+// Augmentation Size
+// MIPS32: 01
+
+// MIPS32: .........zR..|..
+// MIPS32-NEXT: 0010
+
+// Augmentation (fde pointer encoding: DW_EH_PE_sdata4)
+// MIPS32: 0b
+// FIXME: The instructions are different from the ones produces by gas.
+
+// MIPS32EL: RELOCATION RECORDS FOR [.eh_frame]:
+// MIPS32EL-NEXT: R_MIPS_32
+// MIPS32EL: Contents of section .eh_frame:
+// MIPS32EL-NEXT: 0000
+
+// Length
+// MIPS32EL: 10000000
+
+// CIE ID
+// MIPS32EL: 00000000
+
+// Version
+// MIPS32EL: 01
+
+// Augmentation String
+// MIPS32EL: 7a5200
+
+// Code Alignment Factor
+// MIPS32EL: 01
+
+// Data Alignment Factor (-4)
+// MIPS32EL: 7c
+
+// Return Address Register
+// MIPS32EL: 1f
+
+// Augmentation Size
+// MIPS32EL: 01
+
+// MIPS32EL: .........zR..|..
+// MIPS32EL-NEXT: 0010
+
+// Augmentation (fde pointer encoding: DW_EH_PE_sdata4)
+// MIPS32EL: 0b
+// FIXME: The instructions are different from the ones produces by gas.
+
+// MIPS64: RELOCATION RECORDS FOR [.eh_frame]:
+// MIPS64-NEXT: R_MIPS_64
+// MIPS64: Contents of section .eh_frame:
+// MIPS64-NEXT: 0000
+
+// Length
+// MIPS64: 00000010
+
+// CIE ID
+// MIPS64: 00000000
+
+// Version
+// MIPS64: 01
+
+// Augmentation String
+// MIPS64: 7a5200
+
+// Code Alignment Factor
+// MIPS64: 01
+
+// Data Alignment Factor (-8). GAS uses -4. Should be ok as long as all
+// offsets we need are a multiple of 8.
+// MIPS64: 78
+
+// Return Address Register
+// MIPS64: 1f
+
+// Augmentation Size
+// MIPS64: 01
+
+// MIPS64: .........zR..x..
+// MIPS64-NEXT: 0010
+
+// Augmentation (fde pointer encoding: DW_EH_PE_sdata8)
+// MIPS64: 0c
+// FIXME: The instructions are different from the ones produces by gas.
+
+
+// MIPS64EL: RELOCATION RECORDS FOR [.eh_frame]:
+// MIPS64EL-NEXT: R_MIPS_64
+// MIPS64EL: Contents of section .eh_frame:
+// MIPS64EL-NEXT: 0000
+
+// Length
+// MIPS64EL: 10000000
+
+// CIE ID
+// MIPS64EL: 00000000
+
+// Version
+// MIPS64EL: 01
+
+// Augmentation String
+// MIPS64EL: 7a5200
+
+// Code Alignment Factor
+// MIPS64EL: 01
+
+// Data Alignment Factor (-8). GAS uses -4. Should be ok as long as all
+// offsets we need are a multiple of 8.
+// MIPS64EL: 78
+
+// Return Address Register
+// MIPS64EL: 1f
+
+// Augmentation Size
+// MIPS64EL: 01
+
+// MIPS64EL: .........zR..x..
+// MIPS64EL-NEXT: 0010
+
+// Augmentation (fde pointer encoding: DW_EH_PE_sdata8)
+// MIPS64EL: 0c
+// FIXME: The instructions are different from the ones produces by gas.
diff --git a/test/MC/Mips/elf-N64.ll b/test/MC/Mips/elf-N64.ll
index ae6de78..a1ea34a 100644
--- a/test/MC/Mips/elf-N64.ll
+++ b/test/MC/Mips/elf-N64.ll
@@ -1,4 +1,4 @@
-; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 -disable-mips-delay-filler %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 -disable-mips-delay-filler %s -o - | llvm-readobj -r | FileCheck %s
; Check for N64 relocation production.
;
@@ -12,25 +12,12 @@ define i32 @main() nounwind {
entry:
; Check that the appropriate relocations were created.
-; R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
-; CHECK: ('r_type3', 0x05)
-; CHECK-NEXT: ('r_type2', 0x18)
-; CHECK-NEXT: ('r_type', 0x07)
-
-; R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
-; CHECK: ('r_type3', 0x06)
-; CHECK-NEXT: ('r_type2', 0x18)
-; CHECK-NEXT: ('r_type', 0x07)
-
-; R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE
-; CHECK: ('r_type3', 0x00)
-; CHECK-NEXT: ('r_type2', 0x00)
-; CHECK-NEXT: ('r_type', 0x14)
-
-; R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE
-; CHECK: ('r_type3', 0x00)
-; CHECK-NEXT: ('r_type2', 0x00)
-; CHECK-NEXT: ('r_type', 0x15)
+; CHECK: Relocations [
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_PAGE/R_MIPS_NONE/R_MIPS_NONE
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE
+; CHECK: ]
%puts = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @str, i64 0, i64 0))
ret i32 0
diff --git a/test/MC/Mips/elf-bigendian.ll b/test/MC/Mips/elf-bigendian.ll
index 7111deb..a92fe33 100644
--- a/test/MC/Mips/elf-bigendian.ll
+++ b/test/MC/Mips/elf-bigendian.ll
@@ -1,24 +1,37 @@
-; DISABLE: llc -filetype=obj -mtriple mips-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck %s
+; DISABLE: llc -filetype=obj -mtriple mips-unknown-linux %s -o - | llvm-readobj -h -s -sd | FileCheck %s
; RUN: false
; XFAIL: *
; Check that this is big endian.
-; CHECK: ('e_indent[EI_DATA]', 0x02)
+; CHECK: ElfHeader {
+; CHECK: Ident {
+; CHECK: DataEncoding: BigEndian
+; CHECK: }
+; CHECK: }
; Make sure that a section table (text) entry is correct.
-; CHECK: (('sh_name', 0x{{[0]*}}5) # '.text'
-; CHECK-NEXT: ('sh_type', 0x{{[0]*}}1)
-; CHECK-NEXT: ('sh_flags', 0x{{[0]*}}6)
-; CHECK-NEXT: ('sh_addr', 0x{{[0-9,a-f]+}})
-; CHECK-NEXT: ('sh_offset', 0x{{[0-9,a-f]+}})
-; CHECK-NEXT: ('sh_size', 0x{{[0-9,a-f]+}})
-; CHECK-NEXT: ('sh_link', 0x{{[0]+}})
-; CHECK-NEXT: ('sh_info', 0x{{[0]+}})
-; CHECK-NEXT: ('sh_addralign', 0x{{[0]*}}4)
-; CHECK-NEXT: ('sh_entsize', 0x{{[0]+}})
+; CHECK: Sections [
+; CHECK: Section {
+; CHECK: Index:
+; CHECK: Name: .text
+; CHECK-NEXT: Type: SHT_PROGBITS
+; CHECK-NEXT: Flags [ (0x6)
+; CHECK-NEXT: SHF_ALLOC
+; CHECK-NEXT: SHF_EXECINSTR
+; CHECK-NEXT: ]
+; CHECK-NEXT: Address: 0x{{[0-9,A-F]+}}
+; CHECK-NEXT: Offset: 0x{{[0-9,A-F]+}}
+; CHECK-NEXT: Size: {{[0-9]+}}
+; CHECK-NEXT: Link: 0
+; CHECK-NEXT: Info: 0
+; CHECK-NEXT: AddressAlignment: 4
+; CHECK-NEXT: EntrySize: 0
; See that at least first 3 instructions are correct: GP prologue
-; CHECK-NEXT: ('_section_data', '3c1c0000 279c0000 0399e021 {{[0-9,a-f, ]*}}')
+; CHECK-NEXT: SectionData (
+; CHECK-NEXT: 0000: 3C1C0000 279C0000 0399E021 {{[0-9,A-F, ]*}}
+; CHECK: )
+; CHECK: }
; ModuleID = '../br1.c'
target datalayout = "E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32"
diff --git a/test/MC/Mips/elf-gprel-32-64.ll b/test/MC/Mips/elf-gprel-32-64.ll
index b946822..47003fa 100644
--- a/test/MC/Mips/elf-gprel-32-64.ll
+++ b/test/MC/Mips/elf-gprel-32-64.ll
@@ -1,5 +1,5 @@
; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 %s -o - \
-; RUN: | elf-dump --dump-section-data \
+; RUN: | llvm-readobj -r \
; RUN: | FileCheck %s
define i32 @test(i32 %c) nounwind {
@@ -30,8 +30,11 @@ return:
; Check that the appropriate relocations were created.
; R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
-; CHECK: (('sh_name', 0x{{[a-z0-9]+}}) # '.rela.rodata'
-; CHECK: ('r_type3', 0x00)
-; CHECK-NEXT: ('r_type2', 0x12)
-; CHECK-NEXT: ('r_type', 0x0c)
-
+; CHECK: Relocations [
+; CHECK: Section ({{[a-z0-9]+}}) .rodata {
+; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
+; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
+; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
+; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
+; CHECK-NEXT: }
+; CHECK-NEXT: ]
diff --git a/test/MC/Mips/elf-reginfo.ll b/test/MC/Mips/elf-reginfo.ll
index 1d7a188..a255af9 100644
--- a/test/MC/Mips/elf-reginfo.ll
+++ b/test/MC/Mips/elf-reginfo.ll
@@ -1,7 +1,7 @@
; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 %s -o - \
- ; RUN: | elf-dump --dump-section-data | FileCheck --check-prefix=CHECK_64 %s
+ ; RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_64 %s
; RUN: llc -filetype=obj -march=mipsel -mcpu=mips32 %s -o - \
- ; RUN: | elf-dump --dump-section-data | FileCheck --check-prefix=CHECK_32 %s
+ ; RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_32 %s
; Check for register information sections.
;
@@ -13,14 +13,18 @@ entry:
; Check that the appropriate relocations were created.
; check for .MIPS.options
-; CHECK_64: (('sh_name', 0x{{[0-9|a-f]+}}) # '.MIPS.options'
-; CHECK_64-NEXT: ('sh_type', 0x7000000d)
-; CHECK_64-NEXT: ('sh_flags', 0x0000000008000002)
+; CHECK_64: Sections [
+; CHECK_64: Section {
+; CHECK_64: Name: .MIPS.options
+; CHECK_64-NEXT: Type: SHT_MIPS_OPTIONS
+; CHECK_64-NEXT: Flags [ (0x8000002)
; check for .reginfo
-; CHECK_32: (('sh_name', 0x{{[0-9|a-f]+}}) # '.reginfo'
-; CHECK_32-NEXT: ('sh_type', 0x70000006)
-; CHECK_32-NEXT: ('sh_flags', 0x00000002)
+; CHECK_32: Sections [
+; CHECK_32: Section {
+; CHECK_32: Name: .reginfo
+; CHECK_32-NEXT: Type: SHT_MIPS_REGINFO
+; CHECK_32-NEXT: Flags [ (0x2)
%puts = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @str, i64 0, i64 0))
@@ -28,4 +32,3 @@ entry:
}
declare i32 @puts(i8* nocapture) nounwind
-
diff --git a/test/MC/Mips/elf-relsym.ll b/test/MC/Mips/elf-relsym.ll
index 0f74437..6da9262 100644
--- a/test/MC/Mips/elf-relsym.ll
+++ b/test/MC/Mips/elf-relsym.ll
@@ -1,11 +1,21 @@
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | llvm-readobj -t | FileCheck %s
; Check that the appropriate symbols were created.
-; CHECK: (('st_name', 0x{{[0-9|a-f]+}}) # '$.str'
-; CHECK: (('st_name', 0x{{[0-9|a-f]+}}) # '$.str1'
-; CHECK: (('st_name', 0x{{[0-9|a-f]+}}) # '$CPI0_0'
-; CHECK: (('st_name', 0x{{[0-9|a-f]+}}) # '$CPI0_1'
+; CHECK: Symbols [
+; CHECK: Symbol {
+; CHECK: Name: $.str
+; CHECK: }
+; CHECK: Symbol {
+; CHECK: Name: $.str1
+; CHECK: }
+; CHECK: Symbol {
+; CHECK: Name: $CPI0_0
+; CHECK: }
+; CHECK: Symbol {
+; CHECK: Name: $CPI0_1
+; CHECK: }
+; CHECK: ]
@.str = private unnamed_addr constant [6 x i8] c"abcde\00", align 1
@gc1 = external global i8*
diff --git a/test/MC/Mips/elf-tls.ll b/test/MC/Mips/elf-tls.ll
index b4183b8..9f604e0 100644
--- a/test/MC/Mips/elf-tls.ll
+++ b/test/MC/Mips/elf-tls.ll
@@ -1,10 +1,14 @@
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s
; Check that the appropriate relocations were created.
-; CHECK: ('r_type', 0x2b)
-; CHECK: ('r_type', 0x2c)
-; CHECK: ('r_type', 0x2d)
+; CHECK: Relocations [
+; CHECK: Section (1) .text {
+; CHECK: R_MIPS_TLS_LDM
+; CHECK: R_MIPS_TLS_DTPREL_HI16
+; CHECK: R_MIPS_TLS_DTPREL_LO16
+; CHECK: }
+; CHECK: ]
@t1 = thread_local global i32 0, align 4
diff --git a/test/MC/Mips/elf_basic.s b/test/MC/Mips/elf_basic.s
index ffc3b11..6c1e769 100644
--- a/test/MC/Mips/elf_basic.s
+++ b/test/MC/Mips/elf_basic.s
@@ -1,35 +1,41 @@
// 32 bit big endian
-// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32 %s
+// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32 %s
// 32 bit little endian
-// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-LE32 %s
+// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-LE32 %s
// 64 bit big endian
-// RUN: llvm-mc -filetype=obj -arch=mips64 -triple mips64-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64 %s
+// RUN: llvm-mc -filetype=obj -arch=mips64 -triple mips64-unknown-linux %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE64 %s
// 64 bit little endian
-// RUN: llvm-mc -filetype=obj -arch=mips64el -triple mips64el-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-LE64 %s
+// RUN: llvm-mc -filetype=obj -arch=mips64el -triple mips64el-unknown-linux %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-LE64 %s
// Check that we produce 32 bit with each endian.
-// This is 32 bit.
-// CHECK-BE32: ('e_indent[EI_CLASS]', 0x01)
-// This is big endian.
-// CHECK-BE32: ('e_indent[EI_DATA]', 0x02)
+// CHECK-BE32: ElfHeader {
+// CHECK-BE32: Ident {
+// CHECK-BE32: Class: 32-bit
+// CHECK-BE32: DataEncoding: BigEndian
+// CHECK-BE32: }
+// CHECK-BE32: }
-// This is 32 bit.
-// CHECK-LE32: ('e_indent[EI_CLASS]', 0x01)
-// This is little endian.
-// CHECK-LE32: ('e_indent[EI_DATA]', 0x01)
+// CHECK-LE32: ElfHeader {
+// CHECK-LE32: Ident {
+// CHECK-LE32: Class: 32-bit
+// CHECK-LE32: DataEncoding: LittleEndian
+// CHECK-LE32: }
+// CHECK-LE32: }
// Check that we produce 64 bit with each endian.
-// This is 64 bit.
-// CHECK-BE64: ('e_indent[EI_CLASS]', 0x02)
-// This is big endian.
-// CHECK-BE64: ('e_indent[EI_DATA]', 0x02)
+// CHECK-BE64: ElfHeader {
+// CHECK-BE64: Ident {
+// CHECK-BE64: Class: 64-bit
+// CHECK-BE64: DataEncoding: BigEndian
+// CHECK-BE64: }
+// CHECK-BE64: }
-// This is 64 bit.
-// CHECK-LE64: ('e_indent[EI_CLASS]', 0x02)
-// This is little endian.
-// CHECK-LE64: ('e_indent[EI_DATA]', 0x01)
-
-// Check that we are setting EI_OSABI to ELFOSABI_LINUX.
-// CHECK-LE64: ('e_indent[EI_OSABI]', 0x03)
+// CHECK-LE64: ElfHeader {
+// CHECK-LE64: Ident {
+// CHECK-LE64: Class: 64-bit
+// CHECK-LE64: DataEncoding: LittleEndian
+// CHECK-LE64: OS/ABI: GNU/Linux
+// CHECK-LE64: }
+// CHECK-LE64: }
diff --git a/test/MC/Mips/elf_eflags.ll b/test/MC/Mips/elf_eflags.ll
index 315cb81..6d16a42 100644
--- a/test/MC/Mips/elf_eflags.ll
+++ b/test/MC/Mips/elf_eflags.ll
@@ -13,52 +13,52 @@
; EF_MIPS_ARCH_32R2 (0x70000000)
; EF_MIPS_ARCH_64R2 (0x80000000)
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32 %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32_PIC %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2 %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2_PIC %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS_PIC %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32 -relocation-model=static %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32 %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32 %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32_PIC %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -relocation-model=static %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32R2 %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32R2_PIC %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips -relocation-model=static %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS_PIC %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64 %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64_PIC %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64r2 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64R2 %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64r2 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64R2_PIC %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 -relocation-model=static %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE64 %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE64_PIC %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64r2 -relocation-model=static %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE64R2 %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64r2 %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-BE64R2_PIC %s
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+mips16 -relocation-model=pic %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-LE32R2-MIPS16 %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+mips16 -relocation-model=pic %s -o - | llvm-readobj -h | FileCheck -check-prefix=CHECK-LE32R2-MIPS16 %s
; 32(R1) bit with NO_REORDER and static
-; CHECK-BE32: ('e_flags', 0x50001001)
+; CHECK-BE32: Flags [ (0x50001001)
;
; 32(R1) bit with NO_REORDER and PIC
-; CHECK-BE32_PIC: ('e_flags', 0x50001003)
+; CHECK-BE32_PIC: Flags [ (0x50001003)
;
; 32R2 bit with NO_REORDER and static
-; CHECK-BE32R2: ('e_flags', 0x70001001)
+; CHECK-BE32R2: Flags [ (0x70001001)
;
; 32R2 bit with NO_REORDER and PIC
-; CHECK-BE32R2_PIC: ('e_flags', 0x70001003)
+; CHECK-BE32R2_PIC: Flags [ (0x70001003)
;
; 32R2 bit MICROMIPS with NO_REORDER and static
-; CHECK-BE32R2-MICROMIPS: ('e_flags', 0x72001001)
+; CHECK-BE32R2-MICROMIPS: Flags [ (0x72001001)
;
; 32R2 bit MICROMIPS with NO_REORDER and PIC
-;CHECK-BE32R2-MICROMIPS_PIC: ('e_flags', 0x72001003)
+;CHECK-BE32R2-MICROMIPS_PIC: Flags [ (0x72001003)
;
; 64(R1) bit with NO_REORDER and static
-; CHECK-BE64: ('e_flags', 0x60000001)
+; CHECK-BE64: Flags [ (0x60000001)
;
; 64(R1) bit with NO_REORDER and PIC
-; CHECK-BE64_PIC: ('e_flags', 0x60000003)
+; CHECK-BE64_PIC: Flags [ (0x60000003)
;
; 64R2 bit with NO_REORDER and static
-; CHECK-BE64R2: ('e_flags', 0x80000001)
+; CHECK-BE64R2: Flags [ (0x80000001)
;
; 64R2 bit with NO_REORDER and PIC
-; CHECK-BE64R2_PIC: ('e_flags', 0x80000003)
+; CHECK-BE64R2_PIC: Flags [ (0x80000003)
;
; 32R2 bit MIPS16 with PIC
-; CHECK-LE32R2-MIPS16: ('e_flags', 0x74001002)
+; CHECK-LE32R2-MIPS16: Flags [ (0x74001002)
define i32 @main() nounwind {
entry:
diff --git a/test/MC/Mips/elf_st_other.ll b/test/MC/Mips/elf_st_other.ll
index f188ce7..bc56c00 100644
--- a/test/MC/Mips/elf_st_other.ll
+++ b/test/MC/Mips/elf_st_other.ll
@@ -1,13 +1,12 @@
; This tests value of ELF st_other field for function symbol table entries.
; For microMIPS value should be equal to STO_MIPS_MICROMIPS.
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips %s -o - | llvm-readobj -t | FileCheck %s
define i32 @main() nounwind {
entry:
ret i32 0
}
-; CHECK: 'main'
-; CHECK: ('st_other', 0x80)
-
+; CHECK: Name: main
+; CHECK: Other: 128
diff --git a/test/MC/Mips/expr1.s b/test/MC/Mips/expr1.s
new file mode 100644
index 0000000..67664c1
--- /dev/null
+++ b/test/MC/Mips/expr1.s
@@ -0,0 +1,26 @@
+# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
+# Check that the assembler can handle the expressions as operands.
+# CHECK: .text
+# CHECK: .globl foo
+# CHECK: foo:
+# CHECK: lw $4, %lo(foo)($4) # encoding: [A,A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, 56($4) # encoding: [0x38,0x00,0x84,0x8c]
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: .space 64
+
+ .globl foo
+ .ent foo
+foo:
+ lw $4,%lo(foo)($4)
+ lw $4,((10 + 4) * 4)($4)
+ lw $4,%lo (2 * 4) + foo($4)
+ lw $4,%lo((2 * 4) + foo)($4)
+ lw $4,(((%lo ((2 * 4) + foo))))($4)
+ .space 64
+ .end foo
diff --git a/test/MC/Mips/higher_highest.ll b/test/MC/Mips/higher_highest.ll
index 0c66522..6c3d71f 100644
--- a/test/MC/Mips/higher_highest.ll
+++ b/test/MC/Mips/higher_highest.ll
@@ -1,14 +1,16 @@
-; DISABLE: llc -march=mips64el -mcpu=mips64 -mattr=n64 -force-mips-long-branch -filetype=obj < %s -o - | elf-dump --dump-section-data | FileCheck %s
+; DISABLE: llc -march=mips64el -mcpu=mips64 -mattr=n64 -force-mips-long-branch -filetype=obj < %s -o - | llvm-readobj -r | FileCheck %s
; RUN: false
; XFAIL: *
; Disabled because currently we don't have a way to generate these relocations.
;
; Check that the R_MIPS_HIGHER and R_MIPS_HIGHEST relocations were created.
-; CHECK: ('r_type', 0x1d)
-; CHECK: ('r_type', 0x1d)
-; CHECK: ('r_type', 0x1c)
-; CHECK: ('r_type', 0x1c)
+; CHECK: Relocations [
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_HIGHEST
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_HIGHEST
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_HIGHER
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_HIGHER
+; CHECK: ]
@g0 = external global i32
diff --git a/test/MC/Mips/micromips-alu-instructions.s b/test/MC/Mips/micromips-alu-instructions.s
new file mode 100644
index 0000000..c541e1a
--- /dev/null
+++ b/test/MC/Mips/micromips-alu-instructions.s
@@ -0,0 +1,64 @@
+# RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips | FileCheck %s
+# Check that the assembler can handle the documented syntax
+# for arithmetic and logical instructions.
+#------------------------------------------------------------------------------
+# Arithmetic and Logical Instructions
+#------------------------------------------------------------------------------
+# CHECK: add $9, $6, $7 # encoding: [0x10,0x49,0xe6,0x00]
+# CHECK: addi $9, $6, 17767 # encoding: [0x67,0x45,0x26,0x11]
+# CHECK: addiu $9, $6, -15001 # encoding: [0x67,0xc5,0x26,0x31]
+# CHECK: addi $9, $6, 17767 # encoding: [0x67,0x45,0x26,0x11]
+# CHECK: addiu $9, $6, -15001 # encoding: [0x67,0xc5,0x26,0x31]
+# CHECK: addu $9, $6, $7 # encoding: [0x50,0x49,0xe6,0x00]
+# CHECK: sub $9, $6, $7 # encoding: [0x90,0x49,0xe6,0x00]
+# CHECK: subu $4, $3, $5 # encoding: [0xd0,0x21,0xa3,0x00]
+# CHECK: neg $6, $7 # encoding: [0x90,0x31,0xe0,0x00]
+# CHECK: negu $6, $7 # encoding: [0xd0,0x31,0xe0,0x00]
+# CHECK: move $7, $8 # encoding: [0x50,0x39,0x08,0x00]
+# CHECK: slt $3, $3, $5 # encoding: [0x50,0x1b,0xa3,0x00]
+# CHECK: slti $3, $3, 103 # encoding: [0x67,0x00,0x63,0x90]
+# CHECK: slti $3, $3, 103 # encoding: [0x67,0x00,0x63,0x90]
+# CHECK: sltiu $3, $3, 103 # encoding: [0x67,0x00,0x63,0xb0]
+# CHECK: sltu $3, $3, $5 # encoding: [0x90,0x1b,0xa3,0x00]
+# CHECK: and $9, $6, $7 # encoding: [0x50,0x4a,0xe6,0x00]
+# CHECK: andi $9, $6, 17767 # encoding: [0x67,0x45,0x26,0xd1]
+# CHECK: andi $9, $6, 17767 # encoding: [0x67,0x45,0x26,0xd1]
+# CHECK: or $3, $4, $5 # encoding: [0x90,0x1a,0xa4,0x00]
+# CHECK: ori $9, $6, 17767 # encoding: [0x67,0x45,0x26,0x51]
+# CHECK: xor $3, $3, $5 # encoding: [0x10,0x1b,0xa3,0x00]
+# CHECK: xori $9, $6, 17767 # encoding: [0x67,0x45,0x26,0x71]
+# CHECK: xori $9, $6, 17767 # encoding: [0x67,0x45,0x26,0x71]
+# CHECK: nor $9, $6, $7 # encoding: [0xd0,0x4a,0xe6,0x00]
+# CHECK: not $7, $8 # encoding: [0xd0,0x3a,0x08,0x00]
+# CHECK: mul $9, $6, $7 # encoding: [0x10,0x4a,0xe6,0x00]
+# CHECK: mult $9, $7 # encoding: [0x3c,0x8b,0xe9,0x00]
+# CHECK: multu $9, $7 # encoding: [0x3c,0x9b,0xe9,0x00]
+ add $9, $6, $7
+ add $9, $6, 17767
+ addu $9, $6, -15001
+ addi $9, $6, 17767
+ addiu $9, $6,-15001
+ addu $9, $6, $7
+ sub $9, $6, $7
+ subu $4, $3, $5
+ neg $6, $7
+ negu $6, $7
+ move $7, $8
+ slt $3, $3, $5
+ slt $3, $3, 103
+ slti $3, $3, 103
+ sltiu $3, $3, 103
+ sltu $3, $3, $5
+ and $9, $6, $7
+ and $9, $6, 17767
+ andi $9, $6, 17767
+ or $3, $4, $5
+ ori $9, $6, 17767
+ xor $3, $3, $5
+ xor $9, $6, 17767
+ xori $9, $6, 17767
+ nor $9, $6, $7
+ nor $7, $8, $zero
+ mul $9, $6, $7
+ mult $9, $7
+ multu $9, $7
diff --git a/test/MC/Mips/micromips-loadstore-instructions.s b/test/MC/Mips/micromips-loadstore-instructions.s
new file mode 100644
index 0000000..623e2ac
--- /dev/null
+++ b/test/MC/Mips/micromips-loadstore-instructions.s
@@ -0,0 +1,22 @@
+# RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips | FileCheck %s
+# Check that the assembler can handle the documented syntax
+# for load and store instructions.
+#------------------------------------------------------------------------------
+# Load and Store Instructions
+#------------------------------------------------------------------------------
+# CHECK: lb $5, 8($4) # encoding: [0x08,0x00,0xa4,0x1c]
+# CHECK: lbu $6, 8($4) # encoding: [0x08,0x00,0xc4,0x14]
+# CHECK: lh $2, 8($4) # encoding: [0x08,0x00,0x44,0x3c]
+# CHECK: lhu $4, 8($2) # encoding: [0x08,0x00,0x82,0x34]
+# CHECK: lw $6, 4($5) # encoding: [0x04,0x00,0xc5,0xfc]
+# CHECK: sb $5, 8($4) # encoding: [0x08,0x00,0xa4,0x18]
+# CHECK: sh $2, 8($4) # encoding: [0x08,0x00,0x44,0x38]
+# CHECK: sw $5, 4($6) # encoding: [0x04,0x00,0xa6,0xf8]
+ lb $5, 8($4)
+ lbu $6, 8($4)
+ lh $2, 8($4)
+ lhu $4, 8($2)
+ lw $6, 4($5)
+ sb $5, 8($4)
+ sh $2, 8($4)
+ sw $5, 4($6)
diff --git a/test/MC/Mips/micromips-shift-instructions.s b/test/MC/Mips/micromips-shift-instructions.s
new file mode 100644
index 0000000..3b5060f
--- /dev/null
+++ b/test/MC/Mips/micromips-shift-instructions.s
@@ -0,0 +1,22 @@
+# RUN: llvm-mc %s -triple=mipsel -show-encoding -mcpu=mips32r2 -mattr=micromips | FileCheck %s
+# Check that the assembler can handle the documented syntax
+# for shift instructions.
+#------------------------------------------------------------------------------
+# Shift Instructions
+#------------------------------------------------------------------------------
+# CHECK: sll $4, $3, 7 # encoding: [0x00,0x38,0x83,0x00]
+# CHECK: sllv $2, $3, $5 # encoding: [0x10,0x10,0x65,0x00]
+# CHECK: sra $4, $3, 7 # encoding: [0x80,0x38,0x83,0x00]
+# CHECK: srav $2, $3, $5 # encoding: [0x90,0x10,0x65,0x00]
+# CHECK: srl $4, $3, 7 # encoding: [0x40,0x38,0x83,0x00]
+# CHECK: srlv $2, $3, $5 # encoding: [0x50,0x10,0x65,0x00]
+# CHECK: rotr $9, $6, 7 # encoding: [0xc0,0x38,0x26,0x01]
+# CHECK: rotrv $9, $6, $7 # encoding: [0xd0,0x48,0xc7,0x00]
+ sll $4, $3, 7
+ sllv $2, $3, $5
+ sra $4, $3, 7
+ srav $2, $3, $5
+ srl $4, $3, 7
+ srlv $2, $3, $5
+ rotr $9, $6, 7
+ rotrv $9, $6, $7
diff --git a/test/MC/Mips/mips-alu-instructions.s b/test/MC/Mips/mips-alu-instructions.s
index 816138e..586e88b 100644
--- a/test/MC/Mips/mips-alu-instructions.s
+++ b/test/MC/Mips/mips-alu-instructions.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for arithmetic and logical instructions.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Logical instructions
#------------------------------------------------------------------------------
@@ -13,6 +12,7 @@
# CHECK: ins $19, $9, 6, 7 # encoding: [0x84,0x61,0x33,0x7d]
# CHECK: nor $9, $6, $7 # encoding: [0x27,0x48,0xc7,0x00]
# CHECK: or $3, $3, $5 # encoding: [0x25,0x18,0x65,0x00]
+# CHECK: ori $4, $5, 17767 # encoding: [0x67,0x45,0xa4,0x34]
# CHECK: ori $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x34]
# CHECK: rotr $9, $6, 7 # encoding: [0xc2,0x49,0x26,0x00]
# CHECK: rotrv $9, $6, $7 # encoding: [0x46,0x48,0xe6,0x00]
@@ -40,6 +40,7 @@
ins $19, $9, 6,7
nor $9, $6, $7
or $3, $3, $5
+ or $4, $5, 17767
ori $9, $6, 17767
rotr $9, $6, 7
rotrv $9, $6, $7
diff --git a/test/MC/Mips/mips-expansions.s b/test/MC/Mips/mips-expansions.s
index cfc15e8..1622965 100644
--- a/test/MC/Mips/mips-expansions.s
+++ b/test/MC/Mips/mips-expansions.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for macro instructions
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Load immediate instructions
#------------------------------------------------------------------------------
@@ -16,6 +15,22 @@
# CHECK: lui $7, 1 # encoding: [0x01,0x00,0x07,0x3c]
# CHECK: ori $7, $7, 2 # encoding: [0x02,0x00,0xe7,0x34]
# CHECK: addu $7, $7, $8 # encoding: [0x21,0x38,0xe8,0x00]
+# CHECK: lui $10, %hi(symbol) # encoding: [A,A,0x0a,0x3c]
+# CHECK: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
+# CHECK: addu $10, $10, $4 # encoding: [0x21,0x50,0x44,0x01]
+# CHECK: lw $10, %lo(symbol)($10) # encoding: [A,A,0x4a,0x8d]
+# CHECK: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lui $1, %hi(symbol) # encoding: [A,A,0x01,0x3c]
+# CHECK: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
+# CHECK: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00]
+# CHECK: sw $10, %lo(symbol)($1) # encoding: [A,A,0x2a,0xac]
+# CHECK: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lui $10, 10 # encoding: [0x0a,0x00,0x0a,0x3c]
+# CHECK: addu $10, $10, $4 # encoding: [0x21,0x50,0x44,0x01]
+# CHECK: lw $10, 123($10) # encoding: [0x7b,0x00,0x4a,0x8d]
+# CHECK: lui $1, 2 # encoding: [0x02,0x00,0x01,0x3c]
+# CHECK: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00]
+# CHECK: sw $10, 57920($1) # encoding: [0x40,0xe2,0x2a,0xac]
li $5,123
li $6,-2345
@@ -25,3 +40,9 @@
la $7,65538
la $a0, 20($a1)
la $7,65538($8)
+
+ lw $t2, symbol($a0)
+ sw $t2, symbol($t1)
+
+ lw $t2, 655483($a0)
+ sw $t2, 123456($t1)
diff --git a/test/MC/Mips/mips-fpu-instructions.s b/test/MC/Mips/mips-fpu-instructions.s
index a126c6f..e515872 100644
--- a/test/MC/Mips/mips-fpu-instructions.s
+++ b/test/MC/Mips/mips-fpu-instructions.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for FPU instructions.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# FP aritmetic instructions
#------------------------------------------------------------------------------
@@ -157,6 +156,8 @@
# CHECK: mtc0 $9, $8, 3 # encoding: [0x03,0x40,0x89,0x40]
# CHECK: mfc2 $5, $7, 4 # encoding: [0x04,0x38,0x05,0x48]
# CHECK: mtc2 $9, $4, 5 # encoding: [0x05,0x20,0x89,0x48]
+# CHECK: movf $2, $1, $fcc0 # encoding: [0x01,0x10,0x20,0x00]
+# CHECK: movt $2, $1, $fcc0 # encoding: [0x01,0x10,0x21,0x00]
cfc1 $a2,$0
mfc1 $a2,$f7
@@ -176,3 +177,5 @@
mtc0 $9, $8, 3
mfc2 $5, $7, 4
mtc2 $9, $4, 5
+ movf $2, $1, $fcc0
+ movt $2, $1, $fcc0
diff --git a/test/MC/Mips/mips-jump-instructions.s b/test/MC/Mips/mips-jump-instructions.s
index bc2d720..597f687 100644
--- a/test/MC/Mips/mips-jump-instructions.s
+++ b/test/MC/Mips/mips-jump-instructions.s
@@ -1,30 +1,57 @@
-# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
+# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \
+# RUN: FileCheck -check-prefix=CHECK32 %s
+# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips64r2 | \
+# RUN: FileCheck -check-prefix=CHECK64 %s
+
# Check that the assembler can handle the documented syntax
# for jumps and branches.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Branch instructions
#------------------------------------------------------------------------------
-# CHECK: b 1332 # encoding: [0x34,0x05,0x00,0x10]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bc1f 1332 # encoding: [0x34,0x05,0x00,0x45]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bc1t 1332 # encoding: [0x34,0x05,0x01,0x45]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: beq $9, $6, 1332 # encoding: [0x34,0x05,0x26,0x11]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bgez $6, 1332 # encoding: [0x34,0x05,0xc1,0x04]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bgezal $6, 1332 # encoding: [0x34,0x05,0xd1,0x04]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bgtz $6, 1332 # encoding: [0x34,0x05,0xc0,0x1c]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: blez $6, 1332 # encoding: [0x34,0x05,0xc0,0x18]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bne $9, $6, 1332 # encoding: [0x34,0x05,0x26,0x15]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: bal 1332 # encoding: [0x34,0x05,0x11,0x04]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: b 1332 # encoding: [0x4d,0x01,0x00,0x10]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bc1f 1332 # encoding: [0x4d,0x01,0x00,0x45]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bc1t 1332 # encoding: [0x4d,0x01,0x01,0x45]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: beq $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x11]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bgez $6, 1332 # encoding: [0x4d,0x01,0xc1,0x04]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bgezal $6, 1332 # encoding: [0x4d,0x01,0xd1,0x04]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bgtz $6, 1332 # encoding: [0x4d,0x01,0xc0,0x1c]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: blez $6, 1332 # encoding: [0x4d,0x01,0xc0,0x18]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bne $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x15]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: bal 1332 # encoding: [0x4d,0x01,0x11,0x04]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+
+# CHECK64: b 1332 # encoding: [0x4d,0x01,0x00,0x10]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bc1f 1332 # encoding: [0x4d,0x01,0x00,0x45]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bc1t 1332 # encoding: [0x4d,0x01,0x01,0x45]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: beq $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x11]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bgez $6, 1332 # encoding: [0x4d,0x01,0xc1,0x04]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bgezal $6, 1332 # encoding: [0x4d,0x01,0xd1,0x04]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bgtz $6, 1332 # encoding: [0x4d,0x01,0xc0,0x1c]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: blez $6, 1332 # encoding: [0x4d,0x01,0xc0,0x18]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bne $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x15]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: bal 1332 # encoding: [0x4d,0x01,0x11,0x04]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+
+.set noreorder
+
b 1332
nop
bc1f 1332
@@ -50,19 +77,43 @@ end_of_code:
#------------------------------------------------------------------------------
# Jump instructions
#------------------------------------------------------------------------------
-# CHECK: j 1328 # encoding: [0x30,0x05,0x00,0x08]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jal 1328 # encoding: [0x30,0x05,0x00,0x0c]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jalr $10, $11 # encoding: [0x09,0x50,0x60,0x01]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
-# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
-# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
+# CHECK32: j 1328 # encoding: [0x4c,0x01,0x00,0x08]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jalr $10, $11 # encoding: [0x09,0x50,0x60,0x01]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32: jalr $4, $25 # encoding: [0x09,0x20,0x20,0x03]
+# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
+
+# CHECK64: j 1328 # encoding: [0x4c,0x01,0x00,0x08]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jalr $10, $11 # encoding: [0x09,0x50,0x60,0x01]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64: jalr $4, $25 # encoding: [0x09,0x20,0x20,0x03]
+# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
j 1328
@@ -78,3 +129,8 @@ end_of_code:
jr $7
nop
j $7
+ nop
+ jal $25
+ nop
+ jal $4,$25
+ nop
diff --git a/test/MC/Mips/mips-memory-instructions.s b/test/MC/Mips/mips-memory-instructions.s
index b5f1267..c8b0559 100644
--- a/test/MC/Mips/mips-memory-instructions.s
+++ b/test/MC/Mips/mips-memory-instructions.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for loads and stores.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Memory store instructions
#------------------------------------------------------------------------------
diff --git a/test/MC/Mips/mips-relocations.s b/test/MC/Mips/mips-relocations.s
index ff71c75..6f095d1 100644
--- a/test/MC/Mips/mips-relocations.s
+++ b/test/MC/Mips/mips-relocations.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for relocations.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
# CHECK: lui $2, %hi(_gp_disp) # encoding: [A,A,0x02,0x3c]
# CHECK: # fixup A - offset: 0, value: _gp_disp@ABS_HI, kind: fixup_Mips_HI16
# CHECK: addiu $2, $2, %lo(_gp_disp) # encoding: [A,A,0x42,0x24]
diff --git a/test/MC/Mips/mips64-alu-instructions.s b/test/MC/Mips/mips64-alu-instructions.s
index 1b4ebdf..db6c972 100644
--- a/test/MC/Mips/mips64-alu-instructions.s
+++ b/test/MC/Mips/mips64-alu-instructions.s
@@ -1,7 +1,6 @@
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips64r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for arithmetic and logical instructions.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Logical instructions
#------------------------------------------------------------------------------
@@ -13,6 +12,7 @@
# CHECK: ins $19, $9, 6, 7 # encoding: [0x84,0x61,0x33,0x7d]
# CHECK: nor $9, $6, $7 # encoding: [0x27,0x48,0xc7,0x00]
# CHECK: or $3, $3, $5 # encoding: [0x25,0x18,0x65,0x00]
+# CHECK: ori $4, $5, 17767 # encoding: [0x67,0x45,0xa4,0x34]
# CHECK: ori $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x34]
# CHECK: rotr $9, $6, 7 # encoding: [0xc2,0x49,0x26,0x00]
# CHECK: rotrv $9, $6, $7 # encoding: [0x46,0x48,0xe6,0x00]
@@ -40,6 +40,7 @@
ins $19, $9, 6,7
nor $9, $6, $7
or $3, $3, $5
+ or $4, $5, 17767
ori $9, $6, 17767
rotr $9, $6, 7
rotrv $9, $6, $7
diff --git a/test/MC/Mips/mips_directives.s b/test/MC/Mips/mips_directives.s
index 65d584d..45247cd 100644
--- a/test/MC/Mips/mips_directives.s
+++ b/test/MC/Mips/mips_directives.s
@@ -1,11 +1,20 @@
# RUN: llvm-mc -show-encoding -triple mips-unknown-unknown %s | FileCheck %s
#
+# CHECK: .text
+# CHECK: $BB0_2:
$BB0_2:
.ent directives_test
.frame $sp,0,$ra
.mask 0x00000000,0
.fmask 0x00000000,0
+# CHECK: b 1332 # encoding: [0x10,0x00,0x01,0x4d]
+# CHECK: j 1328 # encoding: [0x08,0x00,0x01,0x4c]
+# CHECK: jal 1328 # encoding: [0x0c,0x00,0x01,0x4c]
+
.set noreorder
+ b 1332
+ j 1328
+ jal 1328
.set nomacro
.set noat
$JTI0_0:
@@ -15,5 +24,20 @@ $JTI0_0:
# CHECK-NEXT: .4byte 2013265916
.set at=$12
.set macro
+# CHECK: b 1332 # encoding: [0x10,0x00,0x01,0x4d]
+# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK: j 1328 # encoding: [0x08,0x00,0x01,0x4c]
+# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
+# CHECK: jal 1328 # encoding: [0x0c,0x00,0x01,0x4c]
+# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
.set reorder
+ b 1332
+ j 1328
+ jal 1328
.set at=$a0
+ .set STORE_MASK,$t7
+ .set FPU_MASK,$f7
+#CHECK: abs.s $f6, $f7 # encoding: [0x46,0x00,0x39,0x85]
+#CHECK: and $3, $15, $15 # encoding: [0x01,0xef,0x18,0x24]
+ abs.s $f6,FPU_MASK
+ and $3,$t7,STORE_MASK
diff --git a/test/MC/Mips/nabi-regs.s b/test/MC/Mips/nabi-regs.s
index 9371208..050fb81 100644
--- a/test/MC/Mips/nabi-regs.s
+++ b/test/MC/Mips/nabi-regs.s
@@ -8,7 +8,6 @@
# RUN: -mcpu=mips64r2 -arch=mips64 | \
# RUN: FileCheck %s
-# CHECK: .section __TEXT,__text,regular,pure_instructions
.text
foo:
diff --git a/test/MC/Mips/r-mips-got-disp.ll b/test/MC/Mips/r-mips-got-disp.ll
index 73396ac..7e78a46 100644
--- a/test/MC/Mips/r-mips-got-disp.ll
+++ b/test/MC/Mips/r-mips-got-disp.ll
@@ -1,8 +1,9 @@
-; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 < %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 < %s -o - | llvm-readobj -r | FileCheck %s
; Check that the R_MIPS_GOT_DISP relocations were created.
-; CHECK: ('r_type', 0x13)
+; CHECK: Relocations [
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_DISP
@shl = global i64 1, align 8
@.str = private unnamed_addr constant [8 x i8] c"0x%llx\0A\00", align 1
diff --git a/test/MC/Mips/set-at-directive.s b/test/MC/Mips/set-at-directive.s
index 98a3a35..828175a 100644
--- a/test/MC/Mips/set-at-directive.s
+++ b/test/MC/Mips/set-at-directive.s
@@ -3,7 +3,6 @@
# Check that the assembler can handle the documented syntax
# for ".set at" and set the correct value.
-# CHECK: .section __TEXT,__text,regular,pure_instructions
.text
foo:
# CHECK: jr $1 # encoding: [0x08,0x00,0x20,0x00]
diff --git a/test/MC/Mips/sym-offset.ll b/test/MC/Mips/sym-offset.ll
index 5162c91..c7450f7 100644
--- a/test/MC/Mips/sym-offset.ll
+++ b/test/MC/Mips/sym-offset.ll
@@ -1,4 +1,4 @@
-; DISABLED: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck %s
+; DISABLED: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | llvm-readobj -s -sd | FileCheck %s
; RUN: false
; XFAIL: *
@@ -13,7 +13,9 @@ entry:
; 8841000e lwl at,14(v0)
; 9841000b lwr at,11(v0)
-; CHECK: ('_section_data', '00001c3c 00009c27 21e09903 0000828f 0e004188 0b004198
+; CHECK: SectionData (
+; CHECK: 0000: 00001C3C 00009C27 21E09903 0000828F
+; CHECK-NEXT: 0010: 0E004188 0B004198
%call = tail call i32 @memcmp(i8* getelementptr inbounds ([11 x i8]* @string1, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @string2, i32 0, i32 0), i32 4) nounwind readonly
%cmp = icmp eq i32 %call, 0
diff --git a/test/MC/Mips/xgot.ll b/test/MC/Mips/xgot.ll
index bfe9b9a..e2a500f 100644
--- a/test/MC/Mips/xgot.ll
+++ b/test/MC/Mips/xgot.ll
@@ -1,4 +1,4 @@
-; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mxgot %s -o - | elf-dump --dump-section-data | FileCheck %s
+; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mxgot %s -o - | llvm-readobj -r | FileCheck %s
@.str = private unnamed_addr constant [16 x i8] c"ext_1=%d, i=%d\0A\00", align 1
@ext_1 = external global i32
@@ -9,29 +9,16 @@ entry:
; Check that the appropriate relocations were created.
; For the xgot case we want to see R_MIPS_[GOT|CALL]_[HI|LO]16.
-; R_MIPS_HI16
-; CHECK: ('r_type', 0x05)
-
-; R_MIPS_LO16
-; CHECK: ('r_type', 0x06)
-
-; R_MIPS_GOT_HI16
-; CHECK: ('r_type', 0x16)
-
-; R_MIPS_GOT_LO16
-; CHECK: ('r_type', 0x17)
-
-; R_MIPS_GOT
-; CHECK: ('r_type', 0x09)
-
-; R_MIPS_LO16
-; CHECK: ('r_type', 0x06)
-
-; R_MIPS_CALL_HI16
-; CHECK: ('r_type', 0x1e)
-
-; R_MIPS_CALL_LO16
-; CHECK: ('r_type', 0x1f)
+; CHECK: Relocations [
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_HI16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_LO16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_HI16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_LO16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_LO16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_CALL_HI16
+; CHECK: 0x{{[0-9,A-F]+}} R_MIPS_CALL_LO16
+; CHECK: ]
%0 = load i32* @ext_1, align 4
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str, i32 0, i32 0), i32 %0) nounwind
diff --git a/test/MC/PowerPC/ppc64-initial-cfa.ll b/test/MC/PowerPC/ppc64-initial-cfa.ll
index 16236c9..23a7738 100644
--- a/test/MC/PowerPC/ppc64-initial-cfa.ll
+++ b/test/MC/PowerPC/ppc64-initial-cfa.ll
@@ -1,7 +1,7 @@
; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -filetype=obj -relocation-model=static %s -o - | \
-; RUN: elf-dump --dump-section-data | FileCheck %s -check-prefix=STATIC
+; RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=STATIC
; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -filetype=obj -relocation-model=pic %s -o - | \
-; RUN: elf-dump --dump-section-data | FileCheck %s -check-prefix=PIC
+; RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=PIC
; FIXME: this file should be in .s form, change when asm parser is available.
@@ -10,69 +10,75 @@ entry:
ret void
}
-; STATIC: ('sh_name', 0x{{.*}}) # '.eh_frame'
-; STATIC-NEXT: ('sh_type', 0x00000001)
-; STATIC-NEXT: ('sh_flags', 0x0000000000000002)
-; STATIC-NEXT: ('sh_addr', 0x{{.*}})
-; STATIC-NEXT: ('sh_offset', 0x{{.*}})
-; STATIC-NEXT: ('sh_size', 0x0000000000000028)
-; STATIC-NEXT: ('sh_link', 0x00000000)
-; STATIC-NEXT: ('sh_info', 0x00000000)
-; STATIC-NEXT: ('sh_addralign', 0x0000000000000008)
-; STATIC-NEXT: ('sh_entsize', 0x0000000000000000)
-; STATIC-NEXT: ('_section_data', '00000010 00000000 017a5200 01784101 1b0c0100 00000010 00000018 00000000 00000010 00000000')
+; STATIC: Section {
+; STATIC: Name: .eh_frame
+; STATIC-NEXT: Type: SHT_PROGBITS
+; STATIC-NEXT: Flags [ (0x2)
+; STATIC-NEXT: SHF_ALLOC
+; STATIC-NEXT: ]
+; STATIC-NEXT: Address:
+; STATIC-NEXT: Offset:
+; STATIC-NEXT: Size: 40
+; STATIC-NEXT: Link: 0
+; STATIC-NEXT: Info: 0
+; STATIC-NEXT: AddressAlignment: 8
+; STATIC-NEXT: EntrySize:
+; STATIC-NEXT: Relocations [
+; STATIC-NEXT: 0x1C R_PPC64_REL32 .text 0x0
+; STATIC-NEXT: ]
+; STATIC-NEXT: SectionData (
+; STATIC-NEXT: 0000: 00000010 00000000 017A5200 01784101
+; STATIC-NEXT: 0010: 1B0C0100 00000010 00000018 00000000
+; STATIC-NEXT: 0020: 00000010 00000000
+; STATIC-NEXT: )
+; STATIC-NEXT: }
-; STATIC: ('sh_name', 0x{{.*}}) # '.rela.eh_frame'
-; STATIC-NEXT: ('sh_type', 0x00000004)
-; STATIC-NEXT: ('sh_flags', 0x0000000000000000)
-; STATIC-NEXT: ('sh_addr', 0x{{.*}})
-; STATIC-NEXT: ('sh_offset', 0x{{.*}})
-; STATIC-NEXT: ('sh_size', 0x0000000000000018)
-; STATIC-NEXT: ('sh_link', 0x{{.*}})
-; STATIC-NEXT: ('sh_info', 0x{{.*}})
-; STATIC-NEXT: ('sh_addralign', 0x0000000000000008)
-; STATIC-NEXT: ('sh_entsize', 0x0000000000000018)
-; STATIC-NEXT: ('_relocations', [
+; STATIC: Section {
+; STATIC: Name: .rela.eh_frame
+; STATIC-NEXT: Type: SHT_RELA
+; STATIC-NEXT: Flags [ (0x0)
+; STATIC-NEXT: ]
+; STATIC-NEXT: Address:
+; STATIC-NEXT: Offset:
+; STATIC-NEXT: Size: 24
+; STATIC-NEXT: Link:
+; STATIC-NEXT: Info:
+; STATIC-NEXT: AddressAlignment: 8
+; STATIC-NEXT: EntrySize: 24
-; Static build should create R_PPC64_REL32 relocations
-; STATIC-NEXT: # Relocation 0
-; STATIC-NEXT: (('r_offset', 0x000000000000001c)
-; STATIC-NEXT: ('r_sym', 0x{{.*}})
-; STATIC-NEXT: ('r_type', 0x0000001a)
-; STATIC-NEXT: ('r_addend', 0x0000000000000000)
-; STATIC-NEXT: ),
-; STATIC-NEXT: ])
+; PIC: Section {
+; PIC: Name: .eh_frame
+; PIC-NEXT: Type: SHT_PROGBITS
+; PIC-NEXT: Flags [ (0x2)
+; PIC-NEXT: SHF_ALLOC
+; PIC-NEXT: ]
+; PIC-NEXT: Address:
+; PIC-NEXT: Offset:
+; PIC-NEXT: Size: 40
+; PIC-NEXT: Link: 0
+; PIC-NEXT: Info: 0
+; PIC-NEXT: AddressAlignment: 8
+; PIC-NEXT: EntrySize: 0
+; PIC-NEXT: Relocations [
+; PIC-NEXT: 0x1C R_PPC64_REL32 .text 0x0
+; PIC-NEXT: ]
+; PIC-NEXT: SectionData (
+; PIC-NEXT: 0000: 00000010 00000000 017A5200 01784101
+; PIC-NEXT: 0010: 1B0C0100 00000010 00000018 00000000
+; PIC-NEXT: 0020: 00000010 00000000
+; PIC-NEXT: )
+; PIC-NEXT: }
-; PIC: ('sh_name', 0x{{.*}}) # '.eh_frame'
-; PIC-NEXT: ('sh_type', 0x00000001)
-; PIC-NEXT: ('sh_flags', 0x0000000000000002)
-; PIC-NEXT: ('sh_addr', 0x{{.*}})
-; PIC-NEXT: ('sh_offset', 0x{{.*}})
-; PIC-NEXT: ('sh_size', 0x0000000000000028)
-; PIC-NEXT: ('sh_link', 0x00000000)
-; PIC-NEXT: ('sh_info', 0x00000000)
-; PIC-NEXT: ('sh_addralign', 0x0000000000000008)
-; PIC-NEXT: ('sh_entsize', 0x0000000000000000)
-; PIC-NEXT: ('_section_data', '00000010 00000000 017a5200 01784101 1b0c0100 00000010 00000018 00000000 00000010 00000000')
-
-; PIC: ('sh_name', 0x{{.*}}) # '.rela.eh_frame'
-; PIC-NEXT: ('sh_type', 0x00000004)
-; PIC-NEXT: ('sh_flags', 0x0000000000000000)
-; PIC-NEXT: ('sh_addr', 0x{{.*}})
-; PIC-NEXT: ('sh_offset', 0x{{.*}})
-; PIC-NEXT: ('sh_size', 0x0000000000000018)
-; PIC-NEXT: ('sh_link', 0x{{.*}})
-; PIC-NEXT: ('sh_info', 0x{{.*}})
-; PIC-NEXT: ('sh_addralign', 0x0000000000000008)
-; PIC-NEXT: ('sh_entsize', 0x0000000000000018)
-; PIC-NEXT: ('_relocations', [
-
-; PIC build should create R_PPC64_REL32 relocations
-; PIC-NEXT: # Relocation 0
-; PIC-NEXT: (('r_offset', 0x000000000000001c)
-; PIC-NEXT: ('r_sym', 0x{{.*}})
-; PIC-NEXT: ('r_type', 0x0000001a)
-; PIC-NEXT: ('r_addend', 0x0000000000000000)
-; PIC-NEXT: ),
-; PIC-NEXT: ])
+; PIC: Section {
+; PIC: Name: .rela.eh_frame
+; PIC-NEXT: Type: SHT_RELA
+; PIC-NEXT: Flags [ (0x0)
+; PIC-NEXT: ]
+; PIC-NEXT: Address:
+; PIC-NEXT: Offset:
+; PIC-NEXT: Size: 24
+; PIC-NEXT: Link:
+; PIC-NEXT: Info:
+; PIC-NEXT: AddressAlignment: 8
+; PIC-NEXT: EntrySize: 24
diff --git a/test/MC/PowerPC/ppc64-relocs-01.ll b/test/MC/PowerPC/ppc64-relocs-01.ll
index 4919e91..ac8d303 100644
--- a/test/MC/PowerPC/ppc64-relocs-01.ll
+++ b/test/MC/PowerPC/ppc64-relocs-01.ll
@@ -1,6 +1,6 @@
;; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -O3 -code-model=small \
;; RUN: -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck %s
+;; RUN: llvm-readobj -r | FileCheck %s
;; FIXME: this file need to be in .s form, change when asm parse is done.
@@ -22,45 +22,28 @@ entry:
ret double %add
}
+;; CHECK: Relocations [
+
;; The relocations in .rela.text are the 'number64' load using a
;; R_PPC64_TOC16_DS against the .toc and the 'sin' external function
;; address using a R_PPC64_REL24
-;; CHECK: '.rela.text'
-;; CHECK: Relocation 0
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000006
-;; CHECK-NEXT: 'r_type', 0x0000003f
-;; CHECK: Relocation 1
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x0000000a
-;; CHECK-NEXT: 'r_type', 0x0000000a
+;; CHECK: Section ({{[0-9]+}}) .text {
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_DS .toc
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_REL24 sin
+;; CHECK-NEXT: }
;; The .opd entry for the 'access_int64' function creates 2 relocations:
;; 1. A R_PPC64_ADDR64 against the .text segment plus addend (the function
; address itself);
;; 2. And a R_PPC64_TOC against no symbol (the linker will replace for the
;; module's TOC base).
-;; CHECK: '.rela.opd'
-;; CHECK: Relocation 0
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000002
-;; CHECK-NEXT: 'r_type', 0x00000026
-;; CHECK: Relocation 1
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000000
-;; CHECK-NEXT: 'r_type', 0x00000033
+;; CHECK: Section ({{[0-9]+}}) .opd {
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_ADDR64 .text 0x0
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC - 0x0
;; Finally the TOC creates the relocation for the 'number64'.
-;; CHECK: '.rela.toc'
-;; CHECK: Relocation 0
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000008
-;; CHECK-NEXT: 'r_type', 0x00000026
+;; CHECK: Section ({{[0-9]+}}) .toc {
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_ADDR64 number64 0x0
+;; CHECK-NEXT: }
-;; Check if the relocation references are for correct symbols.
-;; CHECK: Symbol 7
-;; CHECK-NEXT: 'access_int64'
-;; CHECK: Symbol 8
-;; CHECK-NEXT: 'number64'
-;; CHECK: Symbol 10
-;; CHECK-NEXT: 'sin'
+;; CHECK-NEXT: ]
diff --git a/test/MC/PowerPC/ppc64-tls-relocs-01.ll b/test/MC/PowerPC/ppc64-tls-relocs-01.ll
index 5e37311..4e901e8 100644
--- a/test/MC/PowerPC/ppc64-tls-relocs-01.ll
+++ b/test/MC/PowerPC/ppc64-tls-relocs-01.ll
@@ -1,5 +1,5 @@
;; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -filetype=obj %s -o - | \
-;; RUN: elf-dump --dump-section-data | FileCheck %s
+;; RUN: llvm-readobj -r | FileCheck %s
;; FIXME: this file should be in .s form, change when asm parser is available.
@@ -12,17 +12,8 @@ entry:
;; Check for a pair of R_PPC64_TPREL16_HA / R_PPC64_TPREL16_LO relocs
;; against the thread-local symbol 't'.
-;; CHECK: '.rela.text'
-;; CHECK: Relocation 0
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000008
-;; CHECK-NEXT: 'r_type', 0x00000048
-;; CHECK: Relocation 1
-;; CHECK-NEXT: 'r_offset',
-;; CHECK-NEXT: 'r_sym', 0x00000008
-;; CHECK-NEXT: 'r_type', 0x00000046
-
-;; Check that we got the correct symbol.
-;; CHECK: Symbol 8
-;; CHECK-NEXT: 't'
-
+;; CHECK: Relocations [
+;; CHECK: Section ({{[0-9]+}}) .text {
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TPREL16_HA t
+;; CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TPREL16_LO t
+;; CHECK-NEXT: }
diff --git a/test/MC/ELF/fde-reloc.s b/test/MC/X86/fde-reloc.s
index 63ac976..63ac976 100644
--- a/test/MC/ELF/fde-reloc.s
+++ b/test/MC/X86/fde-reloc.s
diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s
index 8bfa58a..b2f337d 100644
--- a/test/MC/X86/intel-syntax.s
+++ b/test/MC/X86/intel-syntax.s
@@ -247,4 +247,79 @@ _main:
mov [16][eax][ebx*4], ecx
// CHECK: movl %ecx, -16(%eax,%ebx,4)
mov [eax][ebx*4 - 16], ecx
- ret
+
+// CHECK: prefetchnta 12800(%esi)
+ prefetchnta [esi + (200*64)]
+// CHECK: prefetchnta 32(%esi)
+ prefetchnta [esi + (64/2)]
+// CHECK: prefetchnta 128(%esi)
+ prefetchnta [esi + (64/2*4)]
+// CHECK: prefetchnta 8(%esi)
+ prefetchnta [esi + (64/(2*4))]
+// CHECK: prefetchnta 48(%esi)
+ prefetchnta [esi + (64/(2*4)+40)]
+
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax][ebx*4 - 2*8], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax][4*ebx - 2*8], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax + 4*ebx - 2*8], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [12 + eax + (4*ebx) - 2*14], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax][ebx*4 - 2*2*2*2], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax][ebx*4 - (2*8)], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax][ebx*4 - 2 * 8 + 4 - 4], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax + ebx*4 - 2 * 8 + 4 - 4], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax + ebx*4 - 2 * ((8 + 4) - 4)], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [-2 * ((8 + 4) - 4) + eax + ebx*4], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [((-2) * ((8 + 4) - 4)) + eax + ebx*4], ecx
+// CHECK: movl %ecx, -16(%eax,%ebx,4)
+ mov [eax + ((-2) * ((8 + 4) - 4)) + ebx*4], ecx
+// CHECK: movl %ecx, 96(%eax,%ebx,4)
+ mov [eax + ((-2) * ((8 + 4) * -4)) + ebx*4], ecx
+// CHECK: movl %ecx, -8(%eax,%ebx,4)
+ mov [eax][-8][ebx*4], ecx
+// CHECK: movl %ecx, -2(%eax,%ebx,4)
+ mov [eax][16/-8][ebx*4], ecx
+// CHECK: movl %ecx, -2(%eax,%ebx,4)
+ mov [eax][(16)/-8][ebx*4], ecx
+
+// CHECK: setb %al
+ setc al
+// CHECK: sete %al
+ setz al
+// CHECK: setbe %al
+ setna al
+// CHECK: setae %al
+ setnb al
+// CHECK: setae %al
+ setnc al
+// CHECK: setle %al
+ setng al
+// CHECK: setge %al
+ setnl al
+// CHECK: setne %al
+ setnz al
+// CHECK: setp %al
+ setpe al
+// CHECK: setnp %al
+ setpo al
+// CHECK: setb %al
+ setnae al
+// CHECK: seta %al
+ setnbe al
+// CHECK: setl %al
+ setnge al
+// CHECK: setg %al
+ setnle al
+// CHECK: jne _foo
+ jnz _foo
+ ret
diff --git a/test/MC/X86/x86-32-ms-inline-asm.s b/test/MC/X86/x86-32-ms-inline-asm.s
index 5524c70..d912915 100644
--- a/test/MC/X86/x86-32-ms-inline-asm.s
+++ b/test/MC/X86/x86-32-ms-inline-asm.s
@@ -57,6 +57,26 @@ _t21: ## @t21
// CHECK: movl 4(%esi,%eax,2), %eax
// CHECK: # encoding: [0x8b,0x44,0x46,0x04]
+ mov eax, 4[esi + 2*eax + 4]
+// CHECK: movl 8(%esi,%eax,2), %eax
+// CHECK: # encoding: [0x8b,0x44,0x46,0x08]
+ mov eax, 4[esi][2*eax + 4]
+// CHECK: movl 8(%esi,%eax,2), %eax
+// CHECK: # encoding: [0x8b,0x44,0x46,0x08]
+ mov eax, 4[esi + 2*eax][4]
+// CHECK: movl 8(%esi,%eax,2), %eax
+// CHECK: # encoding: [0x8b,0x44,0x46,0x08]
+ mov eax, 4[esi][2*eax][4]
+// CHECK: movl 8(%esi,%eax,2), %eax
+// CHECK: # encoding: [0x8b,0x44,0x46,0x08]
+ mov eax, 4[esi][2*eax][4][8]
+// CHECK: movl 16(%esi,%eax,2), %eax
+// CHECK: # encoding: [0x8b,0x44,0x46,0x10]
+
+ prefetchnta 64[eax]
+// CHECK: prefetchnta 64(%eax)
+// CHECK: # encoding: [0x0f,0x18,0x40,0x40]
+
pusha
// CHECK: pushal
// CHECK: # encoding: [0x60]
diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s
index c5f1d15..521a077 100644
--- a/test/MC/X86/x86-64.s
+++ b/test/MC/X86/x86-64.s
@@ -1228,3 +1228,11 @@ sysexitl
// CHECK: sysexitq
// CHECK: encoding: [0x48,0x0f,0x35]
sysexitq
+
+// CHECK: clac
+// CHECK: encoding: [0x0f,0x01,0xca]
+clac
+
+// CHECK: stac
+// CHECK: encoding: [0x0f,0x01,0xcb]
+stac
diff --git a/test/MC/X86/x86_64-rand-encoding.s b/test/MC/X86/x86_64-rand-encoding.s
new file mode 100644
index 0000000..3a8cb81
--- /dev/null
+++ b/test/MC/X86/x86_64-rand-encoding.s
@@ -0,0 +1,49 @@
+// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
+
+// CHECK: rdrandw %ax
+// CHECK: encoding: [0x66,0x0f,0xc7,0xf0]
+ rdrand %ax
+
+// CHECK: rdrandl %eax
+// CHECK: encoding: [0x0f,0xc7,0xf0]
+ rdrand %eax
+
+// CHECK: rdrandq %rax
+// CHECK: encoding: [0x48,0x0f,0xc7,0xf0]
+ rdrand %rax
+
+// CHECK: rdrandw %r11w
+// CHECK: encoding: [0x66,0x41,0x0f,0xc7,0xf3]
+ rdrand %r11w
+
+// CHECK: rdrandl %r11d
+// CHECK: encoding: [0x41,0x0f,0xc7,0xf3]
+ rdrand %r11d
+
+// CHECK: rdrandq %r11
+// CHECK: encoding: [0x49,0x0f,0xc7,0xf3]
+ rdrand %r11
+
+// CHECK: rdseedw %ax
+// CHECK: encoding: [0x66,0x0f,0xc7,0xf8]
+ rdseed %ax
+
+// CHECK: rdseedl %eax
+// CHECK: encoding: [0x0f,0xc7,0xf8]
+ rdseed %eax
+
+// CHECK: rdseedq %rax
+// CHECK: encoding: [0x48,0x0f,0xc7,0xf8]
+ rdseed %rax
+
+// CHECK: rdseedw %r11w
+// CHECK: encoding: [0x66,0x41,0x0f,0xc7,0xfb]
+ rdseed %r11w
+
+// CHECK: rdseedl %r11d
+// CHECK: encoding: [0x41,0x0f,0xc7,0xfb]
+ rdseed %r11d
+
+// CHECK: rdseedq %r11
+// CHECK: encoding: [0x49,0x0f,0xc7,0xfb]
+ rdseed %r11
diff --git a/test/MC/X86/x86_64-rtm-encoding.s b/test/MC/X86/x86_64-rtm-encoding.s
index 44d6bac..d9975d6 100644
--- a/test/MC/X86/x86_64-rtm-encoding.s
+++ b/test/MC/X86/x86_64-rtm-encoding.s
@@ -8,6 +8,10 @@
// CHECK: encoding: [0x0f,0x01,0xd5]
xend
+// CHECK: xtest
+// CHECK: encoding: [0x0f,0x01,0xd6]
+ xtest
+
// CHECK: xabort
// CHECK: encoding: [0xc6,0xf8,0x0d]
xabort $13