diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-07-01 13:22:02 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-07-01 13:22:02 +0000 |
commit | 9df3605dea17e84f8183581f6103bd0c79e2a606 (patch) | |
tree | 70a2f36ce9eb9bb213603cd7f2f120af53fc176f /test/tools | |
parent | 08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (diff) |
Notes
Diffstat (limited to 'test/tools')
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 Binary files differnew file mode 100644 index 0000000000000..b494f6ade24c8 --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64 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: ] |