summaryrefslogtreecommitdiff
path: root/test/tools
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-07-01 13:22:02 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-07-01 13:22:02 +0000
commit9df3605dea17e84f8183581f6103bd0c79e2a606 (patch)
tree70a2f36ce9eb9bb213603cd7f2f120af53fc176f /test/tools
parent08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (diff)
Notes
Diffstat (limited to 'test/tools')
-rw-r--r--test/tools/llvm-cvtres/symbols.test33
-rw-r--r--test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s192
-rw-r--r--test/tools/llvm-dwarfdump/X86/apple_names_verify_data.s64
-rw-r--r--test/tools/llvm-dwarfdump/X86/apple_names_verify_form.s58
-rw-r--r--test/tools/llvm-dwarfdump/X86/apple_names_verify_num_atoms.s59
-rw-r--r--test/tools/llvm-dwarfdump/X86/no_apple_names_verify.s33
-rw-r--r--test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s174
-rw-r--r--test/tools/llvm-nm/X86/demangle.ll37
-rw-r--r--test/tools/llvm-nm/wasm/weak-symbols.yaml2
-rw-r--r--test/tools/llvm-objdump/ARM/invalid-instruction.s9
-rw-r--r--test/tools/llvm-objdump/WebAssembly/lit.local.cfg2
-rw-r--r--test/tools/llvm-objdump/WebAssembly/relocations.test8
-rw-r--r--test/tools/llvm-pdbdump/partial-type-stream.test30
-rw-r--r--test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64bin0 -> 141 bytes
-rw-r--r--test/tools/llvm-readobj/file-headers.test18
-rw-r--r--test/tools/llvm-readobj/peplus.test1
-rw-r--r--test/tools/llvm-readobj/symbols.test4
17 files changed, 358 insertions, 366 deletions
diff --git a/test/tools/llvm-cvtres/symbols.test b/test/tools/llvm-cvtres/symbols.test
new file mode 100644
index 0000000000000..2ca3a193ac404
--- /dev/null
+++ b/test/tools/llvm-cvtres/symbols.test
@@ -0,0 +1,33 @@
+// Check COFF emission of cvtres
+// The input was generated with the following command, using the original Windows
+// rc.exe:
+// > rc /fo test_resource.res /nologo test_resource.rc
+// The object file we are comparing against was generated with this command using
+// the original Windows cvtres.exe.
+// > cvtres /machine:X86 /readonly /nologo /out:test_resource.obj.coff \
+// test_resource.res
+
+RUN: llvm-cvtres /verbose /out:%t %p/Inputs/test_resource.res
+RUN: llvm-readobj -symbols %t | FileCheck %s
+
+CHECK: Name: $R000000
+CHECK-NEXT: Value: 0
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000018
+CHECK-NEXT: Value: 24
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000340
+CHECK-NEXT: Value: 832
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000668
+CHECK-NEXT: Value: 1640
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000698
+CHECK-NEXT: Value: 1688
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000720
+CHECK-NEXT: Value: 1824
+CHECK-NEXT: Section: .rsrc$02
+CHECK: Name: $R000750
+CHECK-NEXT: Value: 1872
+CHECK-NEXT: Section: .rsrc$02
diff --git a/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s b/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s
deleted file mode 100644
index 7b61a946281b3..0000000000000
--- a/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s
+++ /dev/null
@@ -1,192 +0,0 @@
-# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
-# RUN: | not llvm-dwarfdump -verify - \
-# RUN: | FileCheck %s
-
-# CHECK: Verifying .apple_names...
-# CHECK-NEXT: error: Bucket[0] has invalid hash index: [-2]
-
-# This test is meant to verify that the -verify option
-# in llvm-dwarfdump, correctly identifies
-# an invalid hash index for bucket[0] in the .apple_names section.
-
- .section __TEXT,__text,regular,pure_instructions
- .file 1 "basic.c"
- .comm _i,4,2 ## @i
- .section __DWARF,__debug_str,regular,debug
-Linfo_string:
- .asciz "basic.c" ## string offset=42
- .asciz "i" ## string offset=84
- .asciz "int" ## string offset=86
- .section __DWARF,__debug_loc,regular,debug
-Lsection_debug_loc:
- .section __DWARF,__debug_abbrev,regular,debug
-Lsection_abbrev:
- .byte 1 ## Abbreviation Code
- .byte 17 ## DW_TAG_compile_unit
- .byte 1 ## DW_CHILDREN_yes
- .byte 37 ## DW_AT_producer
- .byte 14 ## DW_FORM_strp
- .byte 19 ## DW_AT_language
- .byte 5 ## DW_FORM_data2
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 16 ## DW_AT_stmt_list
- .byte 23 ## DW_FORM_sec_offset
- .byte 27 ## DW_AT_comp_dir
- .byte 14 ## DW_FORM_strp
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 2 ## Abbreviation Code
- .byte 52 ## DW_TAG_variable
- .byte 0 ## DW_CHILDREN_no
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 73 ## DW_AT_type
- .byte 19 ## DW_FORM_ref4
- .byte 63 ## DW_AT_external
- .byte 25 ## DW_FORM_flag_present
- .byte 58 ## DW_AT_decl_file
- .byte 11 ## DW_FORM_data1
- .byte 59 ## DW_AT_decl_line
- .byte 11 ## DW_FORM_data1
- .byte 2 ## DW_AT_location
- .byte 24 ## DW_FORM_exprloc
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 3 ## Abbreviation Code
- .byte 36 ## DW_TAG_base_type
- .byte 0 ## DW_CHILDREN_no
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 62 ## DW_AT_encoding
- .byte 11 ## DW_FORM_data1
- .byte 11 ## DW_AT_byte_size
- .byte 11 ## DW_FORM_data1
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 0 ## EOM(3)
- .section __DWARF,__debug_info,regular,debug
-Lsection_info:
-Lcu_begin0:
- .long 55 ## Length of Unit
- .short 4 ## DWARF version number
-Lset0 = Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
- .long Lset0
- .byte 8 ## Address Size (in bytes)
- .byte 1 ## Abbrev [1] 0xb:0x30 DW_TAG_compile_unit
- .long 0 ## DW_AT_producer
- .short 12 ## DW_AT_language
- .long 42 ## DW_AT_name
-Lset1 = Lline_table_start0-Lsection_line ## DW_AT_stmt_list
- .long Lset1
- .long 50 ## DW_AT_comp_dir
- .byte 2 ## Abbrev [2] 0x1e:0x15 DW_TAG_variable
- .long 84 ## DW_AT_name
- .long 51 ## DW_AT_type
- ## DW_AT_external
- .byte 1 ## DW_AT_decl_file
- .byte 1 ## DW_AT_decl_line
- .byte 9 ## DW_AT_location
- .byte 3
- .quad _i
- .byte 3 ## Abbrev [3] 0x33:0x7 DW_TAG_base_type
- .long 86 ## DW_AT_name
- .byte 5 ## DW_AT_encoding
- .byte 4 ## DW_AT_byte_size
- .byte 0 ## End Of Children Mark
- .section __DWARF,__debug_ranges,regular,debug
-Ldebug_range:
- .section __DWARF,__debug_macinfo,regular,debug
-Ldebug_macinfo:
-Lcu_macro_begin0:
- .byte 0 ## End Of Macro List Mark
- .section __DWARF,__apple_names,regular,debug
-Lnames_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 1 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .long -2 ## Bucket 0 -- error: Bucket[0] has invalid hash index: [-2]
- .long 177678 ## Hash in Bucket 0
- .long LNames0-Lnames_begin ## Offset in Bucket 0
-LNames0:
- .long 84 ## i
- .long 1 ## Num DIEs
- .long 30
- .long 0
- .section __DWARF,__apple_objc,regular,debug
-Lobjc_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
- .section __DWARF,__apple_namespac,regular,debug
-Lnamespac_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
- .section __DWARF,__apple_types,regular,debug
-Ltypes_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 1 ## Header Hash Count
- .long 20 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 3 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .short 3 ## DW_ATOM_die_tag
- .short 5 ## DW_FORM_data2
- .short 4 ## DW_ATOM_type_flags
- .short 11 ## DW_FORM_data1
- .long 0 ## Bucket 0
- .long 193495088 ## Hash in Bucket 0
- .long Ltypes0-Ltypes_begin ## Offset in Bucket 0
-Ltypes0:
- .long 86 ## int
- .long 1 ## Num DIEs
- .long 51
- .short 36
- .byte 0
- .long 0
- .section __DWARF,__apple_exttypes,regular,debug
-Lexttypes_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 7 ## DW_ATOM_ext_types
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
-
-.subsections_via_symbols
- .section __DWARF,__debug_line,regular,debug
-Lsection_line:
-Lline_table_start0:
diff --git a/test/tools/llvm-dwarfdump/X86/apple_names_verify_data.s b/test/tools/llvm-dwarfdump/X86/apple_names_verify_data.s
new file mode 100644
index 0000000000000..6d548543e4b9a
--- /dev/null
+++ b/test/tools/llvm-dwarfdump/X86/apple_names_verify_data.s
@@ -0,0 +1,64 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | not llvm-dwarfdump -verify - \
+# RUN: | FileCheck %s
+
+# CHECK: Verifying .apple_names...
+# CHECK-NEXT: error: Bucket[0] has invalid hash index: 4294967294
+# CHECK-NEXT: error: Hash[0] has invalid HashData offset: 0x000000b4
+# CHECK-NEXT: error: .apple_names Bucket[1] Hash[1] = 0x0002b60f Str[0] = 0x0000005a DIE[0] = 0x00000001 is not a valid DIE offset for "j".
+
+# This test is meant to verify that the -verify option
+# in llvm-dwarfdump, correctly identifies
+# an invalid hash index for bucket[0] in the .apple_names section,
+# an invalid HashData offset for Hash[0], as well as
+# an invalid DIE offset in the .debug_info section.
+# We're reading an invalid DIE due to the incorrect interpretation of DW_FORM for the DIE.
+# Instead of DW_FORM_data4 the Atom[0].form is: DW_FORM_flag_present.
+
+ .section __TEXT,__text,regular,pure_instructions
+ .file 1 "basic.c"
+ .comm _i,4,2 ## @i
+ .comm _j,4,2 ## @j
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "Apple LLVM version 8.1.0 (clang-802.0.35)" ## string offset=0
+ .asciz "basic.c" ## string offset=42
+ .asciz "/Users/sgravani/Development/tests" ## string offset=50
+ .asciz "i" ## string offset=84
+ .asciz "int" ## string offset=86
+ .asciz "j" ## string offset=90
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+ .section __DWARF,__apple_names,regular,debug
+Lnames_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 2 ## Header Bucket Count
+ .long 2 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 1 ## HeaderData Atom Count
+ .short 1 ## DW_ATOM_die_offset
+ .short 25 ## DW_FORM_data4 -- error: .apple_names Bucket[1] Hash[1] = 0x0002b60f Str[0] = 0x0000005a DIE[0] = 0x00000001 is not a valid DIE offset for "j".
+ .long -2 ## Bucket 0 -- error: Bucket[0] has invalid hash index: 4294967294
+ .long 1 ## Bucket 1
+ .long 177678 ## Hash in Bucket 0
+ .long 177679 ## Hash in Bucket 1
+ .long Lsection_line ## Offset in Bucket 0 -- error: Hash[0] has invalid HashData offset: 0x000000b4
+ .long LNames1-Lnames_begin ## Offset in Bucket 1
+LNames0:
+ .long 84 ## i
+ .long 1 ## Num DIEs
+ .long 30
+ .long 0
+LNames1:
+ .long 90 ## j
+ .long 1 ## Num DIEs
+ .long 58
+ .long 0
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
diff --git a/test/tools/llvm-dwarfdump/X86/apple_names_verify_form.s b/test/tools/llvm-dwarfdump/X86/apple_names_verify_form.s
new file mode 100644
index 0000000000000..ed4bf57069ced
--- /dev/null
+++ b/test/tools/llvm-dwarfdump/X86/apple_names_verify_form.s
@@ -0,0 +1,58 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | not llvm-dwarfdump -verify - \
+# RUN: | FileCheck %s
+
+# CHECK: Verifying .apple_names...
+# CHECK-NEXT: error: unsupported form; failed to read HashData
+
+# This test is meant to verify that the -verify option
+# in llvm-dwarfdump, correctly identifies that Atom[0].form is unsupported.
+# As a result, the hashdata cannot be read.
+
+ .section __TEXT,__text,regular,pure_instructions
+ .file 1 "basic.c"
+ .comm _i,4,2 ## @i
+ .comm _j,4,2 ## @j
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "Apple LLVM version 8.1.0 (clang-802.0.35)" ## string offset=0
+ .asciz "basic.c" ## string offset=42
+ .asciz "/Users/sgravani/Development/tests" ## string offset=50
+ .asciz "i" ## string offset=84
+ .asciz "int" ## string offset=86
+ .asciz "j" ## string offset=90
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+ .section __DWARF,__apple_names,regular,debug
+Lnames_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 2 ## Header Bucket Count
+ .long 2 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 1 ## HeaderData Atom Count
+ .short 1 ## DW_ATOM_die_offset
+ .short 400 ## DW_FORM_data4 -- error: unsupported form; failed to read HashData
+ .long 0 ## Bucket 0
+ .long 1 ## Bucket 1
+ .long 177678 ## Hash in Bucket 0
+ .long 177679 ## Hash in Bucket 1
+ .long LNames0-Lnames_begin ## Offset in Bucket 0
+ .long LNames1-Lnames_begin ## Offset in Bucket 1
+LNames0:
+ .long 84 ## i
+ .long 1 ## Num DIEs
+ .long 30
+ .long 0
+LNames1:
+ .long 90 ## j
+ .long 1 ## Num DIEs
+ .long 58
+ .long 0
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
diff --git a/test/tools/llvm-dwarfdump/X86/apple_names_verify_num_atoms.s b/test/tools/llvm-dwarfdump/X86/apple_names_verify_num_atoms.s
new file mode 100644
index 0000000000000..dffb39c20f085
--- /dev/null
+++ b/test/tools/llvm-dwarfdump/X86/apple_names_verify_num_atoms.s
@@ -0,0 +1,59 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | not llvm-dwarfdump -verify - \
+# RUN: | FileCheck %s
+
+# CHECK: Verifying .apple_names...
+# CHECK-NEXT: error: no atoms; failed to read HashData
+
+# This test is meant to verify that the -verify option
+# in llvm-dwarfdump, correctly identifies that there is not Atom.
+# As a result, the hashdata cannot be read.
+
+ .section __TEXT,__text,regular,pure_instructions
+ .file 1 "basic.c"
+ .comm _i,4,2 ## @i
+ .comm _j,4,2 ## @j
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "Apple LLVM version 8.1.0 (clang-802.0.35)" ## string offset=0
+ .asciz "basic.c" ## string offset=42
+ .asciz "/Users/sgravani/Development/tests" ## string offset=50
+ .asciz "i" ## string offset=84
+ .asciz "int" ## string offset=86
+ .asciz "j" ## string offset=90
+
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+ .section __DWARF,__apple_names,regular,debug
+Lnames_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 2 ## Header Bucket Count
+ .long 2 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 0 ## HeaderData Atom Count -- error: no atoms; failed to read HashData
+ .short 1 ## DW_ATOM_die_offset
+ .short 6 ## DW_FORM_data4
+ .long 0 ## Bucket 0
+ .long 1 ## Bucket 1
+ .long 177678 ## Hash in Bucket 0
+ .long 177679 ## Hash in Bucket 1
+ .long LNames0-Lnames_begin ## Offset in Bucket 0
+ .long LNames1-Lnames_begin ## Offset in Bucket 1
+LNames0:
+ .long 84 ## i
+ .long 1 ## Num DIEs
+ .long 30
+ .long 0
+LNames1:
+ .long 90 ## j
+ .long 1 ## Num DIEs
+ .long 58
+ .long 0
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
diff --git a/test/tools/llvm-dwarfdump/X86/no_apple_names_verify.s b/test/tools/llvm-dwarfdump/X86/no_apple_names_verify.s
new file mode 100644
index 0000000000000..76606bd40adde
--- /dev/null
+++ b/test/tools/llvm-dwarfdump/X86/no_apple_names_verify.s
@@ -0,0 +1,33 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | llvm-dwarfdump -verify - \
+# RUN: | FileCheck %s
+
+# CHECK-NOT: Verifying .apple_names...
+
+# This test is meant to verify that the -verify option
+# in llvm-dwarfdump doesn't produce any .apple_names related
+# output when there's no such section in the object.
+# The test was manually modified to exclude the
+# .apple_names section from the apple_names_verify_num_atoms.s
+# test file in the same directory.
+
+ .section __TEXT,__text,regular,pure_instructions
+ .file 1 "basic.c"
+ .comm _i,4,2 ## @i
+ .comm _j,4,2 ## @j
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "Apple LLVM version 8.1.0 (clang-802.0.35)" ## string offset=0
+ .asciz "basic.c" ## string offset=42
+ .asciz "/Users/sgravani/Development/tests" ## string offset=50
+ .asciz "i" ## string offset=84
+ .asciz "int" ## string offset=86
+ .asciz "j" ## string offset=90
+
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
diff --git a/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s b/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s
deleted file mode 100644
index 472ff71794c66..0000000000000
--- a/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s
+++ /dev/null
@@ -1,174 +0,0 @@
-# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
-# RUN: | not llvm-dwarfdump -verify - \
-# RUN: | FileCheck %s
-
-# CHECK-NOT: Verifying .apple_names...
-
-# This test is meant to verify that the -verify option
-# in llvm-dwarfdump doesn't produce any .apple_names related
-# output when there's no such section int he object.
-# The test was manually modified to exclude the
-# .apple_names section from the apple_names_verify_buckets.s
-# test file in the same directory.
-
- .section __TEXT,__text,regular,pure_instructions
- .file 1 "basic.c"
- .comm _i,4,2 ## @i
- .section __DWARF,__debug_str,regular,debug
-Linfo_string:
- .asciz "basic.c" ## string offset=42
- .asciz "i" ## string offset=84
- .asciz "int" ## string offset=86
- .section __DWARF,__debug_loc,regular,debug
-Lsection_debug_loc:
- .section __DWARF,__debug_abbrev,regular,debug
-Lsection_abbrev:
- .byte 1 ## Abbreviation Code
- .byte 17 ## DW_TAG_compile_unit
- .byte 1 ## DW_CHILDREN_yes
- .byte 37 ## DW_AT_producer
- .byte 14 ## DW_FORM_strp
- .byte 19 ## DW_AT_language
- .byte 5 ## DW_FORM_data2
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 16 ## DW_AT_stmt_list
- .byte 23 ## DW_FORM_sec_offset
- .byte 27 ## DW_AT_comp_dir
- .byte 14 ## DW_FORM_strp
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 2 ## Abbreviation Code
- .byte 52 ## DW_TAG_variable
- .byte 0 ## DW_CHILDREN_no
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 73 ## DW_AT_type
- .byte 19 ## DW_FORM_ref4
- .byte 63 ## DW_AT_external
- .byte 25 ## DW_FORM_flag_present
- .byte 58 ## DW_AT_decl_file
- .byte 11 ## DW_FORM_data1
- .byte 59 ## DW_AT_decl_line
- .byte 11 ## DW_FORM_data1
- .byte 2 ## DW_AT_location
- .byte 24 ## DW_FORM_exprloc
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 3 ## Abbreviation Code
- .byte 36 ## DW_TAG_base_type
- .byte 0 ## DW_CHILDREN_no
- .byte 3 ## DW_AT_name
- .byte 14 ## DW_FORM_strp
- .byte 62 ## DW_AT_encoding
- .byte 11 ## DW_FORM_data1
- .byte 11 ## DW_AT_byte_size
- .byte 11 ## DW_FORM_data1
- .byte 0 ## EOM(1)
- .byte 0 ## EOM(2)
- .byte 0 ## EOM(3)
- .section __DWARF,__debug_info,regular,debug
-Lsection_info:
-Lcu_begin0:
- .long 55 ## Length of Unit
- .short 4 ## DWARF version number
-Lset0 = Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
- .long Lset0
- .byte 8 ## Address Size (in bytes)
- .byte 1 ## Abbrev [1] 0xb:0x30 DW_TAG_compile_unit
- .long 0 ## DW_AT_producer
- .short 12 ## DW_AT_language
- .long 42 ## DW_AT_name
-Lset1 = Lline_table_start0-Lsection_line ## DW_AT_stmt_list
- .long Lset1
- .long 50 ## DW_AT_comp_dir
- .byte 2 ## Abbrev [2] 0x1e:0x15 DW_TAG_variable
- .long 84 ## DW_AT_name
- .long 51 ## DW_AT_type
- ## DW_AT_external
- .byte 1 ## DW_AT_decl_file
- .byte 1 ## DW_AT_decl_line
- .byte 9 ## DW_AT_location
- .byte 3
- .quad _i
- .byte 3 ## Abbrev [3] 0x33:0x7 DW_TAG_base_type
- .long 86 ## DW_AT_name
- .byte 5 ## DW_AT_encoding
- .byte 4 ## DW_AT_byte_size
- .byte 0 ## End Of Children Mark
- .section __DWARF,__debug_ranges,regular,debug
-Ldebug_range:
- .section __DWARF,__debug_macinfo,regular,debug
-Ldebug_macinfo:
-Lcu_macro_begin0:
- .byte 0 ## End Of Macro List Mark
- .section __DWARF,__apple_objc,regular,debug
-Lobjc_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
- .section __DWARF,__apple_namespac,regular,debug
-Lnamespac_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
- .section __DWARF,__apple_types,regular,debug
-Ltypes_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 1 ## Header Hash Count
- .long 20 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 3 ## HeaderData Atom Count
- .short 1 ## DW_ATOM_die_offset
- .short 6 ## DW_FORM_data4
- .short 3 ## DW_ATOM_die_tag
- .short 5 ## DW_FORM_data2
- .short 4 ## DW_ATOM_type_flags
- .short 11 ## DW_FORM_data1
- .long 0 ## Bucket 0
- .long 193495088 ## Hash in Bucket 0
- .long Ltypes0-Ltypes_begin ## Offset in Bucket 0
-Ltypes0:
- .long 86 ## int
- .long 1 ## Num DIEs
- .long 51
- .short 36
- .byte 0
- .long 0
- .section __DWARF,__apple_exttypes,regular,debug
-Lexttypes_begin:
- .long 1212240712 ## Header Magic
- .short 1 ## Header Version
- .short 0 ## Header Hash Function
- .long 1 ## Header Bucket Count
- .long 0 ## Header Hash Count
- .long 12 ## Header Data Length
- .long 0 ## HeaderData Die Offset Base
- .long 1 ## HeaderData Atom Count
- .short 7 ## DW_ATOM_ext_types
- .short 6 ## DW_FORM_data4
- .long -1 ## Bucket 0
-
-.subsections_via_symbols
- .section __DWARF,__debug_line,regular,debug
-Lsection_line:
-Lline_table_start0:
diff --git a/test/tools/llvm-nm/X86/demangle.ll b/test/tools/llvm-nm/X86/demangle.ll
new file mode 100644
index 0000000000000..283e604046a8c
--- /dev/null
+++ b/test/tools/llvm-nm/X86/demangle.ll
@@ -0,0 +1,37 @@
+; RUN: llc -filetype=obj -mtriple=x86_64-pc-linux -o %t.o %s
+; RUN: llvm-nm %t.o | FileCheck --check-prefix="MANGLED" %s
+; RUN: llvm-nm -C %t.o | FileCheck --check-prefix="DEMANGLED" %s
+; RUN: llvm-nm --demangle %t.o | FileCheck --check-prefix="DEMANGLED" %s
+
+; RUN: llc -filetype=obj -mtriple=x86_64-apple-darwin9 -o %t.macho %s
+; RUN: llvm-nm %t.macho | FileCheck --check-prefix="MACHO-MANGLED" %s
+; RUN: llvm-nm -C %t.macho | FileCheck --check-prefix="DEMANGLED" %s
+
+; RUN: llc -filetype=obj -mtriple=x86_64-pc-win32 -o %t.coff %s
+; RUN: llvm-nm %t.coff | FileCheck --check-prefix="COFF-MANGLED" %s
+; RUN: llvm-nm -C %t.coff | FileCheck --check-prefix="COFF-DEMANGLED" %s
+
+define i32 @_Z3fooi(i32) #0 {
+entry:
+ ret i32 1
+}
+
+define float @_Z3barf(float) #0 {
+entry:
+ ret float 0.000000e+00
+}
+
+; MANGLED: 0000000000000010 T _Z3barf
+; MANGLED: 0000000000000000 T _Z3fooi
+
+; MACHO-MANGLED: 0000000000000010 T __Z3barf
+; MACHO-MANGLED: 0000000000000000 T __Z3fooi
+
+; COFF-MANGLED: 00000010 T _Z3barf
+; COFF-MANGLED: 00000000 T _Z3fooi
+
+; DEMANGLED: 0000000000000010 T bar(float)
+; DEMANGLED: 0000000000000000 T foo(int)
+
+; COFF-DEMANGLED: 00000010 T bar(float)
+; COFF-DEMANGLED: 00000000 T foo(int)
diff --git a/test/tools/llvm-nm/wasm/weak-symbols.yaml b/test/tools/llvm-nm/wasm/weak-symbols.yaml
index 682a874ea5905..d46ca1afe8ead 100644
--- a/test/tools/llvm-nm/wasm/weak-symbols.yaml
+++ b/test/tools/llvm-nm/wasm/weak-symbols.yaml
@@ -33,6 +33,8 @@ Sections:
Index: 0x00000002
- Type: CUSTOM
Name: linking
+ DataSize: 0
+ DataAlignment: 2
SymbolInfo:
- Name: weak_global_func
Flags: 1
diff --git a/test/tools/llvm-objdump/ARM/invalid-instruction.s b/test/tools/llvm-objdump/ARM/invalid-instruction.s
new file mode 100644
index 0000000000000..a63300cadffea
--- /dev/null
+++ b/test/tools/llvm-objdump/ARM/invalid-instruction.s
@@ -0,0 +1,9 @@
+@RUN: llvm-mc -triple arm-unknown-linux -filetype=obj %s | llvm-objdump -d - | FileCheck %s
+
+.text
+ b l0
+ .inst 0xffffffff
+l0:
+
+@CHECK: 0: 00 00 00 ea b #0 <l0>
+@CHECK-NEXT: 4: ff ff ff ff <unknown>
diff --git a/test/tools/llvm-objdump/WebAssembly/lit.local.cfg b/test/tools/llvm-objdump/WebAssembly/lit.local.cfg
new file mode 100644
index 0000000000000..0dd8c920ff1eb
--- /dev/null
+++ b/test/tools/llvm-objdump/WebAssembly/lit.local.cfg
@@ -0,0 +1,2 @@
+if 'WebAssembly' not in config.root.targets:
+ config.unsupported = True
diff --git a/test/tools/llvm-objdump/WebAssembly/relocations.test b/test/tools/llvm-objdump/WebAssembly/relocations.test
new file mode 100644
index 0000000000000..07a167c550f97
--- /dev/null
+++ b/test/tools/llvm-objdump/WebAssembly/relocations.test
@@ -0,0 +1,8 @@
+; RUN: llc -mtriple=wasm32-unknown-unknown-wasm -filetype=obj %s -o - | llvm-objdump -r - | FileCheck %s
+
+@foo1 = hidden global i32 1, align 4
+@foo2 = hidden global i32 1, align 4
+@bar = hidden global i32* @foo2, align 4
+
+; CHECK: RELOCATION RECORDS FOR [DATA]:
+; CHECK-NEXT: 0000000e R_WEBASSEMBLY_GLOBAL_ADDR_I32 1+0
diff --git a/test/tools/llvm-pdbdump/partial-type-stream.test b/test/tools/llvm-pdbdump/partial-type-stream.test
new file mode 100644
index 0000000000000..3a853c3914506
--- /dev/null
+++ b/test/tools/llvm-pdbdump/partial-type-stream.test
@@ -0,0 +1,30 @@
+; RUN: llvm-pdbutil dump -type-index=0x1019 %p/Inputs/ClassLayoutTest.pdb \
+; RUN: | FileCheck --check-prefix=NODEPS %s
+; RUN: llvm-pdbutil dump -type-index=0x1019 -dependents %p/Inputs/ClassLayoutTest.pdb \
+; RUN: | FileCheck --check-prefix=DEPS %s
+
+
+NODEPS: Types (TPI Stream)
+NODEPS-NEXT: ============================================================
+NODEPS-NEXT: Showing 1 records.
+NODEPS-NEXT: 0x1019 | LF_MFUNCTION [size = 28]
+NODEPS-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100E
+NODEPS-NEXT: class type = 0x1017, this type = 0x1018, this adjust = 0
+NODEPS-NEXT: calling conv = thiscall, options = None
+
+
+DEPS: Types (TPI Stream)
+DEPS-NEXT: ============================================================
+DEPS-NEXT: Showing 1 records and their dependents (4 records total)
+DEPS-NEXT: 0x100E | LF_ARGLIST [size = 8]
+DEPS-NEXT: 0x1017 | LF_CLASS [size = 60]
+DEPS-NEXT: class name: `MembersTest::A`
+DEPS-NEXT: unique name: `.?AVA@MembersTest@@`
+DEPS-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
+DEPS-NEXT: options: forward ref | has unique name
+DEPS-NEXT: 0x1018 | LF_POINTER [size = 12]
+DEPS-NEXT: referent = 0x1017, mode = pointer, opts = const, kind = ptr32
+DEPS-NEXT: 0x1019 | LF_MFUNCTION [size = 28]
+DEPS-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100E
+DEPS-NEXT: class type = 0x1017, this type = 0x1018, this adjust = 0
+DEPS-NEXT: calling conv = thiscall, options = None
diff --git a/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64 b/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64
new file mode 100644
index 0000000000000..b494f6ade24c8
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64
Binary files differ
diff --git a/test/tools/llvm-readobj/file-headers.test b/test/tools/llvm-readobj/file-headers.test
index 47fb24de1b603..6bc9714f2037e 100644
--- a/test/tools/llvm-readobj/file-headers.test
+++ b/test/tools/llvm-readobj/file-headers.test
@@ -1,5 +1,7 @@
RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-arm \
RUN: | FileCheck %s -check-prefix COFF-ARM
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-arm64 \
+RUN: | FileCheck %s -check-prefix COFF-ARM64
RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-i386 \
RUN: | FileCheck %s -check-prefix COFF32
RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-x86-64 \
@@ -47,6 +49,21 @@ COFF-ARM-NEXT: Characteristics [ (0x0)
COFF-ARM-NEXT: ]
COFF-ARM-NEXT: }
+COFF-ARM64: File: {{(.*[/\\])?}}trivial.obj.coff-arm64
+COFF-ARM64-NEXT: Format: COFF-ARM64
+COFF-ARM64-NEXT: Arch: aarch64
+COFF-ARM64-NEXT: AddressSize: 64bit
+COFF-ARM64-NEXT: ImageFileHeader {
+COFF-ARM64-NEXT: Machine: IMAGE_FILE_MACHINE_ARM64 (0xAA64)
+COFF-ARM64-NEXT: SectionCount: 1
+COFF-ARM64-NEXT: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
+COFF-ARM64-NEXT: PointerToSymbolTable: 0x44
+COFF-ARM64-NEXT: SymbolCount: 3
+COFF-ARM64-NEXT: OptionalHeaderSize: 0
+COFF-ARM64-NEXT: Characteristics [ (0x0)
+COFF-ARM64-NEXT: ]
+COFF-ARM64-NEXT: }
+
COFF32: File: {{(.*[/\\])?}}trivial.obj.coff-i386
COFF32-NEXT: Format: COFF-i386
COFF32-NEXT: Arch: i386
@@ -238,6 +255,7 @@ PE32-NEXT: IMAGE_FILE_EXECUTABLE_IMAGE (0x2)
PE32-NEXT: ]
PE32-NEXT: }
PE32-NEXT: ImageOptionalHeader {
+PE32-NEXT: Magic: 0x10B
PE32-NEXT: MajorLinkerVersion: 11
PE32-NEXT: MinorLinkerVersion: 0
PE32-NEXT: SizeOfCode: 512
diff --git a/test/tools/llvm-readobj/peplus.test b/test/tools/llvm-readobj/peplus.test
index 4d8d25db894c9..3619cd792d54a 100644
--- a/test/tools/llvm-readobj/peplus.test
+++ b/test/tools/llvm-readobj/peplus.test
@@ -16,6 +16,7 @@ CHECK: IMAGE_FILE_LARGE_ADDRESS_AWARE (0x20)
CHECK: ]
CHECK: }
CHECK: ImageOptionalHeader {
+CHECK: Magic: 0x20B
CHECK: MajorLinkerVersion: 11
CHECK: MinorLinkerVersion: 0
CHECK: SizeOfCode: 512
diff --git a/test/tools/llvm-readobj/symbols.test b/test/tools/llvm-readobj/symbols.test
index 1037c28660238..da8a70b031aba 100644
--- a/test/tools/llvm-readobj/symbols.test
+++ b/test/tools/llvm-readobj/symbols.test
@@ -75,17 +75,21 @@ WASM: Symbols [
WASM-NEXT: Symbol {
WASM-NEXT: Name: bar
WASM-NEXT: Type: GLOBAL_IMPORT (0x2)
+WASM-NEXT: Flags: 0x0
WASM-NEXT: }
WASM-NEXT: Symbol {
WASM-NEXT: Name: baz
WASM-NEXT: Type: GLOBAL_IMPORT (0x2)
+WASM-NEXT: Flags: 0x0
WASM-NEXT: }
WASM-NEXT: Symbol {
WASM-NEXT: Name: foo
WASM-NEXT: Type: FUNCTION_EXPORT (0x1)
+WASM-NEXT: Flags: 0x0
WASM-NEXT: }
WASM-NEXT: Symbol {
WASM-NEXT: Name: foo
WASM-NEXT: Type: DEBUG_FUNCTION_NAME (0x4)
+WASM-NEXT: Flags: 0x0
WASM-NEXT: }
WASM-NEXT: ]