From 37ed9c199ca639565f6ce88105f9e39e898d82d0 Mon Sep 17 00:00:00 2001 From: Stephen Hines Date: Mon, 1 Dec 2014 14:51:49 -0800 Subject: Update aosp/master LLVM for rebase to r222494. Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d --- test/tools/gold/Inputs/alias-1.ll | 1 + test/tools/gold/Inputs/bcsection.s | 2 + test/tools/gold/Inputs/comdat.ll | 20 ++ test/tools/gold/Inputs/common.ll | 1 + test/tools/gold/Inputs/invalid.bc | Bin 0 -> 272 bytes test/tools/gold/Inputs/linker-script.export | 5 + test/tools/gold/Inputs/linkonce-weak.ll | 3 + test/tools/gold/Inputs/pr19901-1.ll | 4 + test/tools/gold/Inputs/weak.ll | 2 + test/tools/gold/alias.ll | 13 + test/tools/gold/bad-alias.ll | 13 + test/tools/gold/bcsection.ll | 11 + test/tools/gold/comdat.ll | 65 ++++ test/tools/gold/common.ll | 29 ++ test/tools/gold/emit-llvm.ll | 67 ++++ test/tools/gold/invalid.ll | 7 + test/tools/gold/linker-script.ll | 17 + test/tools/gold/linkonce-weak.ll | 19 ++ test/tools/gold/lit.local.cfg | 4 + test/tools/gold/mtriple.ll | 13 + test/tools/gold/option.ll | 39 +++ test/tools/gold/pr19901.ll | 23 ++ test/tools/gold/slp-vectorize.ll | 30 ++ test/tools/gold/vectorize.ll | 30 ++ test/tools/gold/weak.ll | 16 + test/tools/llvm-cov/Inputs/README | 22 +- .../llvm-cov/Inputs/highlightedRanges.covmapping | Bin 0 -> 355 bytes .../llvm-cov/Inputs/highlightedRanges.profdata | Bin 0 -> 848 bytes .../llvm-cov/Inputs/lineExecutionCounts.covmapping | Bin 0 -> 162 bytes .../llvm-cov/Inputs/lineExecutionCounts.profdata | Bin 0 -> 656 bytes .../tools/llvm-cov/Inputs/regionMarkers.covmapping | Bin 0 -> 194 bytes test/tools/llvm-cov/Inputs/regionMarkers.profdata | Bin 0 -> 656 bytes test/tools/llvm-cov/Inputs/report.covmapping | Bin 0 -> 256 bytes test/tools/llvm-cov/Inputs/report.profdata | Bin 0 -> 800 bytes .../llvm-cov/Inputs/showExpansions.covmapping | Bin 0 -> 194 bytes test/tools/llvm-cov/Inputs/showExpansions.profdata | Bin 0 -> 672 bytes .../Inputs/templateInstantiations.covmapping | Bin 0 -> 244 bytes .../Inputs/templateInstantiations.profdata | Bin 0 -> 768 bytes test/tools/llvm-cov/lit.local.cfg | 4 + test/tools/llvm-cov/report.cpp | 24 ++ test/tools/llvm-cov/showExpansions.cpp | 29 ++ test/tools/llvm-cov/showHighlightedRanges.cpp | 48 +++ test/tools/llvm-cov/showLineExecutionCounts.cpp | 30 ++ test/tools/llvm-cov/showRegionMarkers.cpp | 26 ++ test/tools/llvm-cov/showTemplateInstantiations.cpp | 43 +++ test/tools/llvm-mc/line_end_with_space.test | 2 + .../AArch64/Inputs/ObjC.exe.macho-aarch64 | Bin 0 -> 49736 bytes .../AArch64/Inputs/ObjC.obj.macho-aarch64 | Bin 0 -> 2008 bytes .../AArch64/Inputs/hello.exe.macho-aarch64 | Bin 0 -> 49416 bytes .../AArch64/Inputs/hello.obj.macho-aarch64 | Bin 0 -> 604 bytes test/tools/llvm-objdump/AArch64/lit.local.cfg | 2 + .../AArch64/macho-symbolized-disassembly.test | 23 ++ .../llvm-objdump/ARM/Inputs/hello.exe.macho-arm | Bin 0 -> 49408 bytes .../llvm-objdump/ARM/Inputs/hello.obj.macho-arm | Bin 0 -> 744 bytes test/tools/llvm-objdump/ARM/lit.local.cfg | 2 + .../llvm-objdump/ARM/macho-arm-and-thumb.test | 15 + test/tools/llvm-objdump/ARM/macho-mattr-arm.test | 5 + test/tools/llvm-objdump/ARM/macho-mcpu-arm.test | 10 + .../ARM/macho-symbolized-disassembly.test | 8 + .../ARM/macho-symbolized-subtractor.test | 15 + .../llvm-objdump/Inputs/bad-ordinal.macho-x86_64 | Bin 0 -> 8496 bytes test/tools/llvm-objdump/Inputs/bind.macho-x86_64 | Bin 0 -> 8776 bytes test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 | Bin 0 -> 8376 bytes .../llvm-objdump/Inputs/compact-unwind.macho-i386 | Bin 0 -> 2140 bytes .../Inputs/compact-unwind.macho-x86_64 | Bin 0 -> 2272 bytes .../llvm-objdump/Inputs/exports-trie.macho-x86_64 | Bin 0 -> 8752 bytes .../llvm-objdump/Inputs/large-bss.obj.coff-i386 | Bin 0 -> 270 bytes .../llvm-objdump/Inputs/lazy-bind.macho-x86_64 | Bin 0 -> 8592 bytes .../Inputs/out-of-section-sym.elf-i386 | Bin 4450 -> 0 bytes test/tools/llvm-objdump/Inputs/rebase.macho-x86_64 | Bin 0 -> 8336 bytes .../tools/llvm-objdump/Inputs/trivial.obj.elf-i386 | Bin 449 -> 0 bytes .../Inputs/unwind-info-no-relocs.macho-x86_64 | Bin 0 -> 12600 bytes .../llvm-objdump/Inputs/unwind-info.macho-arm64 | Bin 0 -> 50024 bytes .../llvm-objdump/Inputs/unwind-info.macho-x86_64 | Bin 0 -> 9136 bytes .../llvm-objdump/Inputs/weak-bind.macho-x86_64 | Bin 0 -> 8856 bytes .../llvm-objdump/X86/Inputs/ObjC.exe.macho-x86_64 | Bin 0 -> 8944 bytes .../llvm-objdump/X86/Inputs/ObjC.obj.macho-x86_64 | Bin 0 -> 1732 bytes .../X86/Inputs/dylibLoadKinds.macho-x86_64 | Bin 0 -> 4280 bytes .../llvm-objdump/X86/Inputs/hello.exe.macho-i386 | Bin 0 -> 8476 bytes .../llvm-objdump/X86/Inputs/hello.exe.macho-x86_64 | Bin 0 -> 8496 bytes .../llvm-objdump/X86/Inputs/hello.obj.macho-i386 | Bin 0 -> 472 bytes .../llvm-objdump/X86/Inputs/hello.obj.macho-x86_64 | Bin 0 -> 844 bytes .../X86/Inputs/hello_cpp.exe.macho-x86_64 | Bin 0 -> 15100 bytes .../X86/Inputs/out-of-section-sym.elf-i386 | Bin 0 -> 4450 bytes .../llvm-objdump/X86/Inputs/trivial.obj.elf-i386 | Bin 0 -> 449 bytes .../llvm-objdump/X86/disassembly-show-raw.test | 14 + test/tools/llvm-objdump/X86/lit.local.cfg | 2 + .../llvm-objdump/X86/macho-private-headers.test | 368 +++++++++++++++++++++ .../X86/macho-symbolized-disassembly.test | 38 +++ .../X86/macho-symbolized-subtractor-i386.test | 10 + .../X86/macho-symbolized-subtractor.test | 10 + .../tools/llvm-objdump/X86/out-of-section-sym.test | 13 + test/tools/llvm-objdump/coff-large-bss.test | 3 + test/tools/llvm-objdump/disassembly-show-raw.test | 14 - test/tools/llvm-objdump/lit.local.cfg | 2 - test/tools/llvm-objdump/macho-bad-ordinal.test | 6 + test/tools/llvm-objdump/macho-bind.test | 10 + test/tools/llvm-objdump/macho-bind2.test | 5 + .../llvm-objdump/macho-compact-unwind-i386.test | 27 ++ .../llvm-objdump/macho-compact-unwind-x86_64.test | 27 ++ test/tools/llvm-objdump/macho-exports-trie.test | 11 + test/tools/llvm-objdump/macho-lazy-bind.test | 7 + test/tools/llvm-objdump/macho-rebase.test | 15 + .../llvm-objdump/macho-unwind-info-arm64.test | 28 ++ .../llvm-objdump/macho-unwind-info-no-relocs.test | 8 + .../llvm-objdump/macho-unwind-info-x86_64.test | 29 ++ test/tools/llvm-objdump/macho-weak-bind.test | 10 + test/tools/llvm-objdump/out-of-section-sym.test | 13 - test/tools/llvm-profdata/Inputs/bad-hash.profdata | 4 - test/tools/llvm-profdata/Inputs/bad-hash.proftext | 4 + test/tools/llvm-profdata/Inputs/bar3-1.profdata | 6 - test/tools/llvm-profdata/Inputs/bar3-1.proftext | 6 + test/tools/llvm-profdata/Inputs/c-general.profdata | Bin 1384 -> 0 bytes test/tools/llvm-profdata/Inputs/c-general.profraw | Bin 0 -> 1384 bytes test/tools/llvm-profdata/Inputs/compat.profdata.v1 | Bin 0 -> 792 bytes test/tools/llvm-profdata/Inputs/empty.profdata | 0 test/tools/llvm-profdata/Inputs/empty.proftext | 0 .../tools/llvm-profdata/Inputs/extra-word.profdata | 2 - .../tools/llvm-profdata/Inputs/extra-word.proftext | 2 + test/tools/llvm-profdata/Inputs/foo3-1.profdata | 6 - test/tools/llvm-profdata/Inputs/foo3-1.proftext | 6 + test/tools/llvm-profdata/Inputs/foo3-2.profdata | 6 - test/tools/llvm-profdata/Inputs/foo3-2.proftext | 6 + .../tools/llvm-profdata/Inputs/foo3bar3-1.profdata | 13 - .../tools/llvm-profdata/Inputs/foo3bar3-1.proftext | 13 + .../tools/llvm-profdata/Inputs/foo3bar3-2.profdata | 13 - test/tools/llvm-profdata/Inputs/foo4-1.profdata | 7 - test/tools/llvm-profdata/Inputs/foo4-2.profdata | 7 - .../Inputs/invalid-count-later.profdata | 4 - .../Inputs/invalid-count-later.proftext | 4 + test/tools/llvm-profdata/Inputs/no-counts.profdata | 3 - test/tools/llvm-profdata/Inputs/no-counts.proftext | 3 + test/tools/llvm-profdata/Inputs/overflow.profdata | 4 - .../llvm-profdata/Inputs/sample-profile.proftext | 12 + test/tools/llvm-profdata/c-general.test | 6 +- test/tools/llvm-profdata/compat.proftext | 47 +++ test/tools/llvm-profdata/count-mismatch.proftext | 40 +++ test/tools/llvm-profdata/errors.test | 16 - test/tools/llvm-profdata/general.proftext | 56 ++++ test/tools/llvm-profdata/hash-mismatch.proftext | 37 +++ test/tools/llvm-profdata/lit.local.cfg | 1 + test/tools/llvm-profdata/multiple-inputs.test | 51 +++ test/tools/llvm-profdata/overflow.proftext | 12 + test/tools/llvm-profdata/raw-two-profiles.test | 2 - test/tools/llvm-profdata/sample-profile-basic.test | 30 ++ test/tools/llvm-profdata/simple.test | 77 ----- test/tools/llvm-profdata/text-format-errors.test | 10 + .../llvm-readobj/Inputs/bad-relocs.obj.coff-i386 | Bin 0 -> 97 bytes .../llvm-readobj/Inputs/basereloc.obj.coff-i386 | Bin 0 -> 2560 bytes test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 | Bin 0 -> 340 bytes .../comdat-function-linetables.obj.coff-2012-i386 | Bin 0 -> 2005 bytes .../comdat-function-linetables.obj.coff-2013-i386 | Bin 0 -> 8501 bytes .../llvm-readobj/Inputs/directives.obj.coff-x86_64 | Bin 0 -> 244 bytes .../tools/llvm-readobj/Inputs/file-aux-record.yaml | 4 +- .../Inputs/file-multiple-aux-records.yaml | 4 +- .../llvm-readobj/Inputs/imports.exe.coff-i386 | Bin 0 -> 3072 bytes .../llvm-readobj/Inputs/imports.exe.coff-x86-64 | Bin 0 -> 4096 bytes .../Inputs/multifile-linetables.obj.coff-2012-i368 | Bin 1631 -> 1631 bytes .../multifile-linetables.obj.coff-2012-x86_64 | Bin 1799 -> 1799 bytes .../Inputs/multifile-linetables.obj.coff-2013-i368 | Bin 0 -> 1631 bytes .../multifile-linetables.obj.coff-2013-x86_64 | Bin 0 -> 1795 bytes .../multifunction-linetables.obj.coff-2012-i368 | Bin 2155 -> 2155 bytes .../multifunction-linetables.obj.coff-2012-x86_64 | Bin 2475 -> 2475 bytes .../multifunction-linetables.obj.coff-2013-i368 | Bin 0 -> 2155 bytes .../multifunction-linetables.obj.coff-2013-x86_64 | Bin 0 -> 2471 bytes .../tools/llvm-readobj/Inputs/relocs.obj.coff-i386 | Bin 305 -> 305 bytes .../llvm-readobj/Inputs/relocs.obj.coff-x86_64 | Bin 424 -> 424 bytes .../llvm-readobj/Inputs/relocs.obj.elf-aarch64 | Bin 2832 -> 3144 bytes test/tools/llvm-readobj/Inputs/relocs.py | 15 + .../llvm-readobj/Inputs/trivial.obj.elf-mipsel | Bin 0 -> 629 bytes test/tools/llvm-readobj/bigobj.test | 139 ++++++++ test/tools/llvm-readobj/codeview-linetables.test | 150 ++++++++- test/tools/llvm-readobj/coff-basereloc.test | 24 ++ test/tools/llvm-readobj/coff-directives.test | 2 + .../llvm-readobj/coff-file-sections-reading.test | 2 +- test/tools/llvm-readobj/cxx-cli-aux.test | 6 +- test/tools/llvm-readobj/file-headers.test | 122 ++++++- test/tools/llvm-readobj/imports.test | 88 +++++ test/tools/llvm-readobj/peplus.test | 2 +- test/tools/llvm-readobj/reloc-types.test | 12 +- test/tools/llvm-readobj/relocations.test | 8 + test/tools/llvm-readobj/sections-ext.test | 1 - test/tools/llvm-readobj/sections.test | 33 ++ test/tools/llvm-readobj/symbols.test | 5 +- test/tools/llvm-symbolizer/Inputs/dsym-test-exe | Bin 0 -> 4584 bytes .../Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/dsym-test-exe-second | Bin 0 -> 8833 bytes .../llvm-symbolizer/Inputs/dsym-test-exe-second | Bin 0 -> 4584 bytes .../Inputs/dsym-test-exe.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/dsym-test-exe | Bin 0 -> 8833 bytes test/tools/llvm-symbolizer/Inputs/dsym-test.c | 8 + test/tools/llvm-symbolizer/Inputs/ppc64 | Bin 0 -> 1624 bytes test/tools/llvm-symbolizer/dsym.test | 14 + test/tools/llvm-symbolizer/ppc64.test | 11 + .../llvm-vtabledump/Inputs/trivial.obj.coff-i386 | Bin 0 -> 2938 bytes .../llvm-vtabledump/Inputs/trivial.obj.elf-i386 | Bin 0 -> 1032 bytes test/tools/llvm-vtabledump/trivial.test | 58 ++++ 197 files changed, 2445 insertions(+), 231 deletions(-) create mode 100644 test/tools/gold/Inputs/alias-1.ll create mode 100644 test/tools/gold/Inputs/bcsection.s create mode 100644 test/tools/gold/Inputs/comdat.ll create mode 100644 test/tools/gold/Inputs/common.ll create mode 100644 test/tools/gold/Inputs/invalid.bc create mode 100644 test/tools/gold/Inputs/linker-script.export create mode 100644 test/tools/gold/Inputs/linkonce-weak.ll create mode 100644 test/tools/gold/Inputs/pr19901-1.ll create mode 100644 test/tools/gold/Inputs/weak.ll create mode 100644 test/tools/gold/alias.ll create mode 100644 test/tools/gold/bad-alias.ll create mode 100644 test/tools/gold/bcsection.ll create mode 100644 test/tools/gold/comdat.ll create mode 100644 test/tools/gold/common.ll create mode 100644 test/tools/gold/emit-llvm.ll create mode 100644 test/tools/gold/invalid.ll create mode 100644 test/tools/gold/linker-script.ll create mode 100644 test/tools/gold/linkonce-weak.ll create mode 100644 test/tools/gold/lit.local.cfg create mode 100644 test/tools/gold/mtriple.ll create mode 100644 test/tools/gold/option.ll create mode 100644 test/tools/gold/pr19901.ll create mode 100644 test/tools/gold/slp-vectorize.ll create mode 100644 test/tools/gold/vectorize.ll create mode 100644 test/tools/gold/weak.ll create mode 100644 test/tools/llvm-cov/Inputs/highlightedRanges.covmapping create mode 100644 test/tools/llvm-cov/Inputs/highlightedRanges.profdata create mode 100644 test/tools/llvm-cov/Inputs/lineExecutionCounts.covmapping create mode 100644 test/tools/llvm-cov/Inputs/lineExecutionCounts.profdata create mode 100644 test/tools/llvm-cov/Inputs/regionMarkers.covmapping create mode 100644 test/tools/llvm-cov/Inputs/regionMarkers.profdata create mode 100644 test/tools/llvm-cov/Inputs/report.covmapping create mode 100644 test/tools/llvm-cov/Inputs/report.profdata create mode 100644 test/tools/llvm-cov/Inputs/showExpansions.covmapping create mode 100644 test/tools/llvm-cov/Inputs/showExpansions.profdata create mode 100644 test/tools/llvm-cov/Inputs/templateInstantiations.covmapping create mode 100644 test/tools/llvm-cov/Inputs/templateInstantiations.profdata create mode 100644 test/tools/llvm-cov/report.cpp create mode 100644 test/tools/llvm-cov/showExpansions.cpp create mode 100644 test/tools/llvm-cov/showHighlightedRanges.cpp create mode 100644 test/tools/llvm-cov/showLineExecutionCounts.cpp create mode 100644 test/tools/llvm-cov/showRegionMarkers.cpp create mode 100644 test/tools/llvm-cov/showTemplateInstantiations.cpp create mode 100644 test/tools/llvm-mc/line_end_with_space.test create mode 100755 test/tools/llvm-objdump/AArch64/Inputs/ObjC.exe.macho-aarch64 create mode 100644 test/tools/llvm-objdump/AArch64/Inputs/ObjC.obj.macho-aarch64 create mode 100755 test/tools/llvm-objdump/AArch64/Inputs/hello.exe.macho-aarch64 create mode 100644 test/tools/llvm-objdump/AArch64/Inputs/hello.obj.macho-aarch64 create mode 100644 test/tools/llvm-objdump/AArch64/lit.local.cfg create mode 100644 test/tools/llvm-objdump/AArch64/macho-symbolized-disassembly.test create mode 100755 test/tools/llvm-objdump/ARM/Inputs/hello.exe.macho-arm create mode 100644 test/tools/llvm-objdump/ARM/Inputs/hello.obj.macho-arm create mode 100644 test/tools/llvm-objdump/ARM/lit.local.cfg create mode 100644 test/tools/llvm-objdump/ARM/macho-arm-and-thumb.test create mode 100644 test/tools/llvm-objdump/ARM/macho-mattr-arm.test create mode 100644 test/tools/llvm-objdump/ARM/macho-mcpu-arm.test create mode 100644 test/tools/llvm-objdump/ARM/macho-symbolized-disassembly.test create mode 100644 test/tools/llvm-objdump/ARM/macho-symbolized-subtractor.test create mode 100755 test/tools/llvm-objdump/Inputs/bad-ordinal.macho-x86_64 create mode 100755 test/tools/llvm-objdump/Inputs/bind.macho-x86_64 create mode 100755 test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 create mode 100644 test/tools/llvm-objdump/Inputs/compact-unwind.macho-i386 create mode 100644 test/tools/llvm-objdump/Inputs/compact-unwind.macho-x86_64 create mode 100755 test/tools/llvm-objdump/Inputs/exports-trie.macho-x86_64 create mode 100644 test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386 create mode 100755 test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64 delete mode 100644 test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 create mode 100755 test/tools/llvm-objdump/Inputs/rebase.macho-x86_64 delete mode 100644 test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 create mode 100755 test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 create mode 100755 test/tools/llvm-objdump/Inputs/unwind-info.macho-arm64 create mode 100755 test/tools/llvm-objdump/Inputs/unwind-info.macho-x86_64 create mode 100755 test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/ObjC.exe.macho-x86_64 create mode 100644 test/tools/llvm-objdump/X86/Inputs/ObjC.obj.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibLoadKinds.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-i386 create mode 100755 test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-x86_64 create mode 100644 test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-i386 create mode 100644 test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/hello_cpp.exe.macho-x86_64 create mode 100644 test/tools/llvm-objdump/X86/Inputs/out-of-section-sym.elf-i386 create mode 100644 test/tools/llvm-objdump/X86/Inputs/trivial.obj.elf-i386 create mode 100644 test/tools/llvm-objdump/X86/disassembly-show-raw.test create mode 100644 test/tools/llvm-objdump/X86/lit.local.cfg create mode 100644 test/tools/llvm-objdump/X86/macho-private-headers.test create mode 100644 test/tools/llvm-objdump/X86/macho-symbolized-disassembly.test create mode 100644 test/tools/llvm-objdump/X86/macho-symbolized-subtractor-i386.test create mode 100644 test/tools/llvm-objdump/X86/macho-symbolized-subtractor.test create mode 100644 test/tools/llvm-objdump/X86/out-of-section-sym.test create mode 100644 test/tools/llvm-objdump/coff-large-bss.test delete mode 100644 test/tools/llvm-objdump/disassembly-show-raw.test delete mode 100644 test/tools/llvm-objdump/lit.local.cfg create mode 100644 test/tools/llvm-objdump/macho-bad-ordinal.test create mode 100644 test/tools/llvm-objdump/macho-bind.test create mode 100644 test/tools/llvm-objdump/macho-bind2.test create mode 100644 test/tools/llvm-objdump/macho-compact-unwind-i386.test create mode 100644 test/tools/llvm-objdump/macho-compact-unwind-x86_64.test create mode 100644 test/tools/llvm-objdump/macho-exports-trie.test create mode 100644 test/tools/llvm-objdump/macho-lazy-bind.test create mode 100644 test/tools/llvm-objdump/macho-rebase.test create mode 100644 test/tools/llvm-objdump/macho-unwind-info-arm64.test create mode 100644 test/tools/llvm-objdump/macho-unwind-info-no-relocs.test create mode 100644 test/tools/llvm-objdump/macho-unwind-info-x86_64.test create mode 100644 test/tools/llvm-objdump/macho-weak-bind.test delete mode 100644 test/tools/llvm-objdump/out-of-section-sym.test delete mode 100644 test/tools/llvm-profdata/Inputs/bad-hash.profdata create mode 100644 test/tools/llvm-profdata/Inputs/bad-hash.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/bar3-1.profdata create mode 100644 test/tools/llvm-profdata/Inputs/bar3-1.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/c-general.profdata create mode 100644 test/tools/llvm-profdata/Inputs/c-general.profraw create mode 100644 test/tools/llvm-profdata/Inputs/compat.profdata.v1 delete mode 100644 test/tools/llvm-profdata/Inputs/empty.profdata create mode 100644 test/tools/llvm-profdata/Inputs/empty.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/extra-word.profdata create mode 100644 test/tools/llvm-profdata/Inputs/extra-word.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/foo3-1.profdata create mode 100644 test/tools/llvm-profdata/Inputs/foo3-1.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/foo3-2.profdata create mode 100644 test/tools/llvm-profdata/Inputs/foo3-2.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata create mode 100644 test/tools/llvm-profdata/Inputs/foo3bar3-1.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata delete mode 100644 test/tools/llvm-profdata/Inputs/foo4-1.profdata delete mode 100644 test/tools/llvm-profdata/Inputs/foo4-2.profdata delete mode 100644 test/tools/llvm-profdata/Inputs/invalid-count-later.profdata create mode 100644 test/tools/llvm-profdata/Inputs/invalid-count-later.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/no-counts.profdata create mode 100644 test/tools/llvm-profdata/Inputs/no-counts.proftext delete mode 100644 test/tools/llvm-profdata/Inputs/overflow.profdata create mode 100644 test/tools/llvm-profdata/Inputs/sample-profile.proftext create mode 100644 test/tools/llvm-profdata/compat.proftext create mode 100644 test/tools/llvm-profdata/count-mismatch.proftext delete mode 100644 test/tools/llvm-profdata/errors.test create mode 100644 test/tools/llvm-profdata/general.proftext create mode 100644 test/tools/llvm-profdata/hash-mismatch.proftext create mode 100644 test/tools/llvm-profdata/lit.local.cfg create mode 100644 test/tools/llvm-profdata/multiple-inputs.test create mode 100644 test/tools/llvm-profdata/overflow.proftext create mode 100644 test/tools/llvm-profdata/sample-profile-basic.test delete mode 100644 test/tools/llvm-profdata/simple.test create mode 100644 test/tools/llvm-profdata/text-format-errors.test create mode 100644 test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386 create mode 100644 test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386 create mode 100644 test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 create mode 100755 test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386 create mode 100755 test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386 create mode 100644 test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64 create mode 100644 test/tools/llvm-readobj/Inputs/imports.exe.coff-i386 create mode 100644 test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64 mode change 100644 => 100755 test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 mode change 100644 => 100755 test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 create mode 100644 test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368 create mode 100644 test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64 mode change 100644 => 100755 test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 mode change 100644 => 100755 test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 create mode 100644 test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368 create mode 100644 test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64 create mode 100644 test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel create mode 100644 test/tools/llvm-readobj/bigobj.test create mode 100644 test/tools/llvm-readobj/coff-basereloc.test create mode 100644 test/tools/llvm-readobj/coff-directives.test create mode 100644 test/tools/llvm-readobj/imports.test create mode 100755 test/tools/llvm-symbolizer/Inputs/dsym-test-exe create mode 100644 test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Info.plist create mode 100644 test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Resources/DWARF/dsym-test-exe-second create mode 100755 test/tools/llvm-symbolizer/Inputs/dsym-test-exe-second create mode 100644 test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Info.plist create mode 100644 test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Resources/DWARF/dsym-test-exe create mode 100644 test/tools/llvm-symbolizer/Inputs/dsym-test.c create mode 100755 test/tools/llvm-symbolizer/Inputs/ppc64 create mode 100644 test/tools/llvm-symbolizer/dsym.test create mode 100644 test/tools/llvm-symbolizer/ppc64.test create mode 100644 test/tools/llvm-vtabledump/Inputs/trivial.obj.coff-i386 create mode 100644 test/tools/llvm-vtabledump/Inputs/trivial.obj.elf-i386 create mode 100644 test/tools/llvm-vtabledump/trivial.test (limited to 'test/tools') diff --git a/test/tools/gold/Inputs/alias-1.ll b/test/tools/gold/Inputs/alias-1.ll new file mode 100644 index 0000000..96183aa --- /dev/null +++ b/test/tools/gold/Inputs/alias-1.ll @@ -0,0 +1 @@ +@a = global i32 42 diff --git a/test/tools/gold/Inputs/bcsection.s b/test/tools/gold/Inputs/bcsection.s new file mode 100644 index 0000000..ede1e5c --- /dev/null +++ b/test/tools/gold/Inputs/bcsection.s @@ -0,0 +1,2 @@ +.section .llvmbc +.incbin "bcsection.bc" diff --git a/test/tools/gold/Inputs/comdat.ll b/test/tools/gold/Inputs/comdat.ll new file mode 100644 index 0000000..e9e4704 --- /dev/null +++ b/test/tools/gold/Inputs/comdat.ll @@ -0,0 +1,20 @@ +$c2 = comdat any + +@v1 = weak_odr global i32 41, comdat $c2 +define weak_odr protected i32 @f1(i8* %this) comdat $c2 { +bb20: + store i8* %this, i8** null + br label %bb21 +bb21: + ret i32 41 +} + +@r21 = global i32* @v1 +@r22 = global i32(i8*)* @f1 + +@a21 = alias i32* @v1 +@a22 = alias bitcast (i32* @v1 to i16*) + +@a23 = alias i32(i8*)* @f1 +@a24 = alias bitcast (i32(i8*)* @f1 to i16*) +@a25 = alias i16* @a24 diff --git a/test/tools/gold/Inputs/common.ll b/test/tools/gold/Inputs/common.ll new file mode 100644 index 0000000..46f199e --- /dev/null +++ b/test/tools/gold/Inputs/common.ll @@ -0,0 +1 @@ +@a = common global i16 0, align 4 diff --git a/test/tools/gold/Inputs/invalid.bc b/test/tools/gold/Inputs/invalid.bc new file mode 100644 index 0000000..2e7ca8d Binary files /dev/null and b/test/tools/gold/Inputs/invalid.bc differ diff --git a/test/tools/gold/Inputs/linker-script.export b/test/tools/gold/Inputs/linker-script.export new file mode 100644 index 0000000..2062a08 --- /dev/null +++ b/test/tools/gold/Inputs/linker-script.export @@ -0,0 +1,5 @@ +{ + global: + f; + local: *; +}; diff --git a/test/tools/gold/Inputs/linkonce-weak.ll b/test/tools/gold/Inputs/linkonce-weak.ll new file mode 100644 index 0000000..f42af8f --- /dev/null +++ b/test/tools/gold/Inputs/linkonce-weak.ll @@ -0,0 +1,3 @@ +define weak_odr void @f() { + ret void +} diff --git a/test/tools/gold/Inputs/pr19901-1.ll b/test/tools/gold/Inputs/pr19901-1.ll new file mode 100644 index 0000000..2f71532 --- /dev/null +++ b/test/tools/gold/Inputs/pr19901-1.ll @@ -0,0 +1,4 @@ +target triple = "x86_64-unknown-linux-gnu" +define linkonce_odr hidden void @f() { + ret void +} diff --git a/test/tools/gold/Inputs/weak.ll b/test/tools/gold/Inputs/weak.ll new file mode 100644 index 0000000..53b1d16 --- /dev/null +++ b/test/tools/gold/Inputs/weak.ll @@ -0,0 +1,2 @@ +@a = weak global i32 41 +@c = global i32* @a diff --git a/test/tools/gold/alias.ll b/test/tools/gold/alias.ll new file mode 100644 index 0000000..dbf3af5 --- /dev/null +++ b/test/tools/gold/alias.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as %s -o %t.o +; RUN: llvm-as %p/Inputs/alias-1.ll -o %t2.o +; RUN: ld -shared -o %t3.o -plugin %llvmshlibdir/LLVMgold.so %t2.o %t.o \ +; RUN: -plugin-opt=emit-llvm +; RUN: llvm-dis < %t3.o -o - | FileCheck %s + +; CHECK-NOT: alias +; CHECK: @a = global i32 42 +; CHECK-NEXT: @b = global i32 1 +; CHECK-NOT: alias + +@a = weak alias i32* @b +@b = global i32 1 diff --git a/test/tools/gold/bad-alias.ll b/test/tools/gold/bad-alias.ll new file mode 100644 index 0000000..e0fc788 --- /dev/null +++ b/test/tools/gold/bad-alias.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: not ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t.o -o %t2.o 2>&1 | FileCheck %s + +; CHECK: Unable to determine comdat of alias! + +@g1 = global i32 1 +@g2 = global i32 2 + +@a = alias inttoptr(i32 sub (i32 ptrtoint (i32* @g1 to i32), + i32 ptrtoint (i32* @g2 to i32)) to i32*) diff --git a/test/tools/gold/bcsection.ll b/test/tools/gold/bcsection.ll new file mode 100644 index 0000000..8565d9d --- /dev/null +++ b/test/tools/gold/bcsection.ll @@ -0,0 +1,11 @@ +; RUN: llvm-as -o %T/bcsection.bc %s + +; RUN: llvm-mc -I=%T -filetype=obj -o %T/bcsection.bco %p/Inputs/bcsection.s +; RUN: llvm-nm -no-llvm-bc %T/bcsection.bco | count 0 +; RUN: ld -r -o %T/bcsection.o -plugin %llvmshlibdir/LLVMgold.so %T/bcsection.bco +; RUN: llvm-nm -no-llvm-bc %T/bcsection.o | FileCheck %s + +; CHECK: main +define i32 @main() { + ret i32 0 +} diff --git a/test/tools/gold/comdat.ll b/test/tools/gold/comdat.ll new file mode 100644 index 0000000..ba3abce --- /dev/null +++ b/test/tools/gold/comdat.ll @@ -0,0 +1,65 @@ +; RUN: llvm-as %s -o %t.o +; RUN: llvm-as %p/Inputs/comdat.ll -o %t2.o +; RUN: ld -shared -o %t3.o -plugin %llvmshlibdir/LLVMgold.so %t.o %t2.o \ +; RUN: -plugin-opt=emit-llvm +; RUN: llvm-dis %t3.o -o - | FileCheck %s + +$c1 = comdat any + +@v1 = weak_odr global i32 42, comdat $c1 +define weak_odr i32 @f1(i8*) comdat $c1 { +bb10: + br label %bb11 +bb11: + ret i32 42 +} + +@r11 = global i32* @v1 +@r12 = global i32 (i8*)* @f1 + +@a11 = alias i32* @v1 +@a12 = alias bitcast (i32* @v1 to i16*) + +@a13 = alias i32 (i8*)* @f1 +@a14 = alias bitcast (i32 (i8*)* @f1 to i16*) +@a15 = alias i16* @a14 + +; CHECK: $c1 = comdat any +; CHECK: $c2 = comdat any + +; CHECK: @v1 = weak_odr global i32 42, comdat $c1 + +; CHECK: @r11 = global i32* @v1{{$}} +; CHECK: @r12 = global i32 (i8*)* @f1{{$}} + +; CHECK: @r21 = global i32* @v1{{$}} +; CHECK: @r22 = global i32 (i8*)* @f1{{$}} + +; CHECK: @v11 = internal global i32 41, comdat $c2 + +; CHECK: @a11 = alias i32* @v1{{$}} +; CHECK: @a12 = alias bitcast (i32* @v1 to i16*) + +; CHECK: @a13 = alias i32 (i8*)* @f1{{$}} +; CHECK: @a14 = alias bitcast (i32 (i8*)* @f1 to i16*) + +; CHECK: @a21 = alias i32* @v11{{$}} +; CHECK: @a22 = alias bitcast (i32* @v11 to i16*) + +; CHECK: @a23 = alias i32 (i8*)* @f12{{$}} +; CHECK: @a24 = alias bitcast (i32 (i8*)* @f12 to i16*) + +; CHECK: define weak_odr protected i32 @f1(i8*) comdat $c1 { +; CHECK-NEXT: bb10: +; CHECK-NEXT: br label %bb11{{$}} +; CHECK: bb11: +; CHECK-NEXT: ret i32 42 +; CHECK-NEXT: } + +; CHECK: define internal i32 @f12(i8* %this) comdat $c2 { +; CHECK-NEXT: bb20: +; CHECK-NEXT: store i8* %this, i8** null +; CHECK-NEXT: br label %bb21 +; CHECK: bb21: +; CHECK-NEXT: ret i32 41 +; CHECK-NEXT: } diff --git a/test/tools/gold/common.ll b/test/tools/gold/common.ll new file mode 100644 index 0000000..f309231 --- /dev/null +++ b/test/tools/gold/common.ll @@ -0,0 +1,29 @@ +; RUN: llvm-as %s -o %t1.o +; RUN: llvm-as %p/Inputs/common.ll -o %t2.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t1.o %t2.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck %s + +@a = common global i8 0, align 8 + +; Shared library case, we merge @a as common and keep it for the symbol table. +; CHECK: @a = common global i16 0, align 8 + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: %t1.o %t2.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck --check-prefix=EXEC %s + +; All IR case, we internalize a after merging. +; EXEC: @a = internal global i16 0, align 8 + +; RUN: llc %p/Inputs/common.ll -o %t2.o -filetype=obj +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: %t1.o %t2.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck --check-prefix=MIXED %s + +; Mixed ELF and IR. We keep ours as common so the linker will finish the merge. +; MIXED: @a = common global i8 0, align 8 diff --git a/test/tools/gold/emit-llvm.ll b/test/tools/gold/emit-llvm.ll new file mode 100644 index 0000000..0a6dcfc --- /dev/null +++ b/test/tools/gold/emit-llvm.ll @@ -0,0 +1,67 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: --plugin-opt=generate-api-file \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o -o - | FileCheck %s +; RUN: FileCheck --check-prefix=API %s < %T/../apifile.txt + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: -m elf_x86_64 --plugin-opt=save-temps \ +; RUN: -shared %t.o -o %t3.o +; RUN: llvm-dis %t3.o.bc -o - | FileCheck %s +; RUN: llvm-dis %t3.o.opt.bc -o - | FileCheck --check-prefix=OPT %s + +target triple = "x86_64-unknown-linux-gnu" + +; CHECK: define internal void @f1() +; OPT-NOT: @f1 +define hidden void @f1() { + ret void +} + +; CHECK: define hidden void @f2() +; OPT: define hidden void @f2() +define hidden void @f2() { + ret void +} + +@llvm.used = appending global [1 x i8*] [ i8* bitcast (void ()* @f2 to i8*)] + +; CHECK: define void @f3() +; OPT: define void @f3() +define void @f3() { + call void @f4() + ret void +} + +; CHECK: define internal void @f4() +; OPT-NOT: @f4 +define linkonce_odr void @f4() { + ret void +} + +; CHECK: define linkonce_odr void @f5() +; OPT: define linkonce_odr void @f5() +define linkonce_odr void @f5() { + ret void +} +@g5 = global void()* @f5 + +; CHECK: define internal void @f6() unnamed_addr +; OPT: define internal void @f6() unnamed_addr +define linkonce_odr void @f6() unnamed_addr { + ret void +} +@g6 = global void()* @f6 + + +; API: f1 PREVAILING_DEF_IRONLY +; API: f2 PREVAILING_DEF_IRONLY +; API: f3 PREVAILING_DEF_IRONLY_EXP +; API: f4 PREVAILING_DEF_IRONLY_EXP +; API: f5 PREVAILING_DEF_IRONLY_EXP +; API: f6 PREVAILING_DEF_IRONLY_EXP +; API: g5 PREVAILING_DEF_IRONLY_EXP +; API: g6 PREVAILING_DEF_IRONLY_EXP diff --git a/test/tools/gold/invalid.ll b/test/tools/gold/invalid.ll new file mode 100644 index 0000000..8db7644 --- /dev/null +++ b/test/tools/gold/invalid.ll @@ -0,0 +1,7 @@ +; RUN: not ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %p/Inputs/invalid.bc -o %t2 2>&1 | FileCheck %s + +; test that only one error gets printed + +; CHECK: error: LLVM gold plugin has failed to create LTO module: Malformed block +; CHECK-NOT: error diff --git a/test/tools/gold/linker-script.ll b/test/tools/gold/linker-script.ll new file mode 100644 index 0000000..35a7694 --- /dev/null +++ b/test/tools/gold/linker-script.ll @@ -0,0 +1,17 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t.o -o %t2.o \ +; RUN: -version-script=%p/Inputs/linker-script.export +; RUN: llvm-dis %t2.o -o - | FileCheck %s + +; CHECK: define void @f() +define void @f() { + ret void +} + +; CHECK: define internal void @g() +define void @g() { + ret void +} diff --git a/test/tools/gold/linkonce-weak.ll b/test/tools/gold/linkonce-weak.ll new file mode 100644 index 0000000..765275b --- /dev/null +++ b/test/tools/gold/linkonce-weak.ll @@ -0,0 +1,19 @@ +; RUN: llvm-as %s -o %t.o +; RUN: llvm-as %p/Inputs/linkonce-weak.ll -o %t2.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t.o %t2.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck %s + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t2.o %t.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck %s + +define linkonce_odr void @f() { + ret void +} + +; Test that we get a weak_odr regardless of the order of the files +; CHECK: define weak_odr void @f() { diff --git a/test/tools/gold/lit.local.cfg b/test/tools/gold/lit.local.cfg new file mode 100644 index 0000000..a59549d --- /dev/null +++ b/test/tools/gold/lit.local.cfg @@ -0,0 +1,4 @@ +if (not 'ld_plugin' in config.available_features or + not 'X86' in config.root.targets or + not 'PowerPC' in config.root.targets): + config.unsupported = True diff --git a/test/tools/gold/mtriple.ll b/test/tools/gold/mtriple.ll new file mode 100644 index 0000000..6395af6 --- /dev/null +++ b/test/tools/gold/mtriple.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as %s -o %t.o +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so -m elf32ppc \ +; RUN: -plugin-opt=mtriple=powerpc-linux-gnu \ +; RUN: -plugin-opt=obj-path=%t3.o \ +; RUN: -shared %t.o -o %t2 +; RUN: llvm-readobj --file-headers %t2 | FileCheck --check-prefix=DSO %s +; RUN: llvm-readobj --file-headers %t3.o | FileCheck --check-prefix=REL %s + +; REL: Type: Relocatable +; REL-NEXT: Machine: EM_PPC + +; DSO: Type: SharedObject +; DSO-NEXT: Machine: EM_PPC diff --git a/test/tools/gold/option.ll b/test/tools/gold/option.ll new file mode 100644 index 0000000..8154e43 --- /dev/null +++ b/test/tools/gold/option.ll @@ -0,0 +1,39 @@ +; RUN: llvm-as %s -o %t.o +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so -m elf_x86_64 \ +; RUN: --plugin-opt=-jump-table-type=arity \ +; RUN: --plugin-opt=-mattr=+aes \ +; RUN: --plugin-opt=mcpu=core-avx2 \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-nm %t2.o | FileCheck %s + +; CHECK: t __llvm_jump_instr_table_0_1 +; CHECK: t __llvm_jump_instr_table_1_1 + +target triple = "x86_64-unknown-linux-gnu" +define i32 @g(i32 %a) unnamed_addr jumptable { + ret i32 %a +} + +define i32 (i32)* @get_g() { + ret i32 (i32)* @g +} + +define i32 @f() unnamed_addr jumptable { + ret i32 0 +} + +define i32 ()* @get_f() { + ret i32 ()* @f +} + +define <2 x i64> @test_aes(<2 x i64> %a0, <2 x i64> %a1) { + %res = call <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64> %a0, <2 x i64> %a1) + ret <2 x i64> %res +} +declare <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64>, <2 x i64>) nounwind readnone + +define <32 x i8> @test_avx2(<16 x i16> %a0, <16 x i16> %a1) { + %res = call <32 x i8> @llvm.x86.avx2.packuswb(<16 x i16> %a0, <16 x i16> %a1) + ret <32 x i8> %res +} +declare <32 x i8> @llvm.x86.avx2.packuswb(<16 x i16>, <16 x i16>) nounwind readnone diff --git a/test/tools/gold/pr19901.ll b/test/tools/gold/pr19901.ll new file mode 100644 index 0000000..304246b --- /dev/null +++ b/test/tools/gold/pr19901.ll @@ -0,0 +1,23 @@ +; RUN: llc %s -o %t.o -filetype=obj -relocation-model=pic +; RUN: llvm-as %p/Inputs/pr19901-1.ll -o %t2.o +; RUN: ld -shared -o %t.so -plugin %llvmshlibdir/LLVMgold.so %t2.o %t.o +; RUN: llvm-readobj -t %t.so | FileCheck %s + +; CHECK: Symbol { +; CHECK: Name: f +; CHECK-NEXT: Value: +; CHECK-NEXT: Size: +; CHECK-NEXT: Binding: Local +; CHECK-NEXT: Type: Function +; CHECK-NEXT: Other: 2 +; CHECK-NEXT: Section: .text +; CHECK-NEXT: } + +target triple = "x86_64-unknown-linux-gnu" +define i32 @g() { + call void @f() + ret i32 0 +} +define linkonce_odr hidden void @f() { + ret void +} diff --git a/test/tools/gold/slp-vectorize.ll b/test/tools/gold/slp-vectorize.ll new file mode 100644 index 0000000..d378902 --- /dev/null +++ b/test/tools/gold/slp-vectorize.ll @@ -0,0 +1,30 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=save-temps \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o.opt.bc -o - | FileCheck %s + +; test that the vectorizer is run. +; CHECK: fadd <4 x float> + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +define void @f(float* nocapture %x) { + %tmp = load float* %x, align 4 + %add = fadd float %tmp, 1.000000e+00 + store float %add, float* %x, align 4 + %arrayidx1 = getelementptr inbounds float* %x, i64 1 + %tmp1 = load float* %arrayidx1, align 4 + %add2 = fadd float %tmp1, 1.000000e+00 + store float %add2, float* %arrayidx1, align 4 + %arrayidx3 = getelementptr inbounds float* %x, i64 2 + %tmp2 = load float* %arrayidx3, align 4 + %add4 = fadd float %tmp2, 1.000000e+00 + store float %add4, float* %arrayidx3, align 4 + %arrayidx5 = getelementptr inbounds float* %x, i64 3 + %tmp3 = load float* %arrayidx5, align 4 + %add6 = fadd float %tmp3, 1.000000e+00 + store float %add6, float* %arrayidx5, align 4 + ret void +} diff --git a/test/tools/gold/vectorize.ll b/test/tools/gold/vectorize.ll new file mode 100644 index 0000000..3d305db --- /dev/null +++ b/test/tools/gold/vectorize.ll @@ -0,0 +1,30 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=save-temps \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o.opt.bc -o - | FileCheck %s + +; test that the vectorizer is run. +; CHECK: fadd <4 x float> + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +define void @f(float* nocapture %x, i64 %n) { +bb: + br label %bb1 + +bb1: + %i.0 = phi i64 [ 0, %bb ], [ %tmp4, %bb1 ] + %tmp = getelementptr inbounds float* %x, i64 %i.0 + %tmp2 = load float* %tmp, align 4 + %tmp3 = fadd float %tmp2, 1.000000e+00 + store float %tmp3, float* %tmp, align 4 + %tmp4 = add nsw i64 %i.0, 1 + %tmp5 = icmp slt i64 %tmp4, %n + br i1 %tmp5, label %bb1, label %bb6 + +bb6: + ret void +} diff --git a/test/tools/gold/weak.ll b/test/tools/gold/weak.ll new file mode 100644 index 0000000..e05e905 --- /dev/null +++ b/test/tools/gold/weak.ll @@ -0,0 +1,16 @@ +; RUN: llvm-as %s -o %t.o +; RUN: llvm-as %p/Inputs/weak.ll -o %t2.o + +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: -shared %t.o %t2.o -o %t3.o +; RUN: llvm-dis %t3.o -o - | FileCheck %s + +@a = weak global i32 42 +@b = global i32* @a + +; Test that @b and @c end up pointing to the same variable. + +; CHECK: @a = weak global i32 42 +; CHECK: @b = global i32* @a{{$}} +; CHECK: @c = global i32* @a{{$}} diff --git a/test/tools/llvm-cov/Inputs/README b/test/tools/llvm-cov/Inputs/README index 2cfb191..3773ba3 100644 --- a/test/tools/llvm-cov/Inputs/README +++ b/test/tools/llvm-cov/Inputs/README @@ -1,7 +1,21 @@ These inputs were pre-generated to allow for easier testing of llvm-cov. -test.gcno and test.gcda were create by running clang: - clang++ -g -ftest-coverage -fprofile-arcs test.cpp +The files used to test the gcov compatible code coverage tool were generated +using the following method: -test.cpp.gcov was created by running gcov 4.2.1: - gcov test.cpp + test.gcno and test.gcda were create by running clang: + clang++ -g -ftest-coverage -fprofile-arcs test.cpp + + test.cpp.gcov was created by running gcov 4.2.1: + gcov test.cpp + +The 'covmapping' files that are used to test llvm-cov contain raw sections +with the coverage mapping data generated by the compiler and linker. They are +created by running clang and llvm-cov: + clang++ -fprofile-instr-generate -fcoverage-mapping -o test test.cpp + llvm-cov convert-for-testing -o test.covmapping test + +The 'profdata' files were generated by running an instrumented version of the +program and merging the raw profile data using llvm-profdata. + ./test + llvm-profdata merge -o test.profdata default.profraw diff --git a/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping b/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping new file mode 100644 index 0000000..20eb0d7 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/highlightedRanges.profdata b/test/tools/llvm-cov/Inputs/highlightedRanges.profdata new file mode 100644 index 0000000..b465b00 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/highlightedRanges.profdata differ diff --git a/test/tools/llvm-cov/Inputs/lineExecutionCounts.covmapping b/test/tools/llvm-cov/Inputs/lineExecutionCounts.covmapping new file mode 100644 index 0000000..9774b89 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/lineExecutionCounts.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/lineExecutionCounts.profdata b/test/tools/llvm-cov/Inputs/lineExecutionCounts.profdata new file mode 100644 index 0000000..8712227 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/lineExecutionCounts.profdata differ diff --git a/test/tools/llvm-cov/Inputs/regionMarkers.covmapping b/test/tools/llvm-cov/Inputs/regionMarkers.covmapping new file mode 100644 index 0000000..3ebcb07 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/regionMarkers.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/regionMarkers.profdata b/test/tools/llvm-cov/Inputs/regionMarkers.profdata new file mode 100644 index 0000000..8712227 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/regionMarkers.profdata differ diff --git a/test/tools/llvm-cov/Inputs/report.covmapping b/test/tools/llvm-cov/Inputs/report.covmapping new file mode 100644 index 0000000..32d84bc Binary files /dev/null and b/test/tools/llvm-cov/Inputs/report.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/report.profdata b/test/tools/llvm-cov/Inputs/report.profdata new file mode 100644 index 0000000..aa47be0 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/report.profdata differ diff --git a/test/tools/llvm-cov/Inputs/showExpansions.covmapping b/test/tools/llvm-cov/Inputs/showExpansions.covmapping new file mode 100644 index 0000000..b8c7d97 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/showExpansions.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/showExpansions.profdata b/test/tools/llvm-cov/Inputs/showExpansions.profdata new file mode 100644 index 0000000..7925c60 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/showExpansions.profdata differ diff --git a/test/tools/llvm-cov/Inputs/templateInstantiations.covmapping b/test/tools/llvm-cov/Inputs/templateInstantiations.covmapping new file mode 100644 index 0000000..d243736 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/templateInstantiations.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/templateInstantiations.profdata b/test/tools/llvm-cov/Inputs/templateInstantiations.profdata new file mode 100644 index 0000000..6ccf526 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/templateInstantiations.profdata differ diff --git a/test/tools/llvm-cov/lit.local.cfg b/test/tools/llvm-cov/lit.local.cfg index 56c6f1f..650bc02 100644 --- a/test/tools/llvm-cov/lit.local.cfg +++ b/test/tools/llvm-cov/lit.local.cfg @@ -1 +1,5 @@ config.suffixes = ['.test', '.m', '.cpp'] + +# http://llvm.org/bugs/show_bug.cgi?id=20979 +if 'ubsan' in config.available_features: + config.unsupported = True diff --git a/test/tools/llvm-cov/report.cpp b/test/tools/llvm-cov/report.cpp new file mode 100644 index 0000000..297322a --- /dev/null +++ b/test/tools/llvm-cov/report.cpp @@ -0,0 +1,24 @@ +// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors 2>&1 | FileCheck %s + +// CHECK: Filename Regions Miss Cover Functions Executed +// CHECK: TOTAL 5 2 60.00% 4 75.00% + +void foo(bool cond) { + if (cond) { + } +} + +void bar() { +} + +void func() { +} + +int main() { + foo(false); + bar(); + return 0; +} + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-cov/showExpansions.cpp b/test/tools/llvm-cov/showExpansions.cpp new file mode 100644 index 0000000..30edd90 --- /dev/null +++ b/test/tools/llvm-cov/showExpansions.cpp @@ -0,0 +1,29 @@ +// RUN: llvm-cov show %S/Inputs/showExpansions.covmapping -instr-profile %S/Inputs/showExpansions.profdata -dump -show-expansions -filename-equivalence %s 2>&1 | FileCheck %s + +#define DO_SOMETHING_ELSE() \ + do { \ + } while (0) +#define ANOTHER_THING() \ + do { \ + if (0) { \ + } \ + } while (0) + +#define DO_SOMETHING(x) \ + do { \ + if (x) \ + DO_SOMETHING_ELSE(); \ + else \ + ANOTHER_THING(); \ + } while (0) +// CHECK-DAG: Expansion at line [[@LINE-4]], 7 -> 24 +// CHECK-DAG: Expansion at line [[@LINE-3]], 7 -> 20 + +int main(int argc, const char *argv[]) { + for (int i = 0; i < 100; ++i) + DO_SOMETHING(i); // CHECK-DAG: Expansion at line [[@LINE]], 5 -> 17 + return 0; +} + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-cov/showHighlightedRanges.cpp b/test/tools/llvm-cov/showHighlightedRanges.cpp new file mode 100644 index 0000000..cec7308 --- /dev/null +++ b/test/tools/llvm-cov/showHighlightedRanges.cpp @@ -0,0 +1,48 @@ +// RUN: llvm-cov show %S/Inputs/highlightedRanges.covmapping -instr-profile %S/Inputs/highlightedRanges.profdata -dump -filename-equivalence %s 2>&1 | FileCheck %s + +void func() { + return; + int i = 0; // CHECK: Highlighted line [[@LINE]], 3 -> 12 +} + +void func2(int x) { + if(x > 5) { + while(x >= 9) { + return; + --x; // CHECK: Highlighted line [[@LINE]], 7 -> 10 + } + int i = 0; // CHECK: Highlighted line [[@LINE]], 5 -> 14 + } +} + +void test() { + int x = 0; + + if (x) { // CHECK: Highlighted line [[@LINE]], 10 -> ? + x = 0; // CHECK: Highlighted line [[@LINE]], 1 -> ? + } else { // CHECK: Highlighted line [[@LINE]], 1 -> 4 + x = 1; + } + + // CHECK: Highlighted line [[@LINE+1]], 26 -> 29 + for (int i = 0; i < 0; ++i) { // CHECK: Highlighted line [[@LINE]], 31 -> ? + x = 1; // CHECK: Highlighted line [[@LINE]], 1 -> ? + } // CHECK: Highlighted line [[@LINE]], 1 -> 4 + + x = x < 10 ? x + + 1 + : x - 1; // CHECK: Highlighted line [[@LINE]], 16 -> 21 + x = x > 10 ? x + // CHECK: Highlighted line [[@LINE]], 16 -> ? + 1 // CHECK: Highlighted line [[@LINE]], 1 -> 17 + : x - 1; +} + +int main() { + test(); + func(); + func2(9); + return 0; +} + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-cov/showLineExecutionCounts.cpp b/test/tools/llvm-cov/showLineExecutionCounts.cpp new file mode 100644 index 0000000..34baa57 --- /dev/null +++ b/test/tools/llvm-cov/showLineExecutionCounts.cpp @@ -0,0 +1,30 @@ +// RUN: llvm-cov show %S/Inputs/lineExecutionCounts.covmapping -instr-profile %S/Inputs/lineExecutionCounts.profdata -no-colors -filename-equivalence %s | FileCheck -check-prefix=CHECK -check-prefix=WHOLE-FILE %s +// RUN: llvm-cov show %S/Inputs/lineExecutionCounts.covmapping -instr-profile %S/Inputs/lineExecutionCounts.profdata -no-colors -filename-equivalence -name=main %s | FileCheck -check-prefix=CHECK -check-prefix=FILTER %s + +// before any coverage // WHOLE-FILE: | [[@LINE]]|// before + // FILTER-NOT: | [[@LINE-1]]|// before +int main() { // CHECK: 1| [[@LINE]]|int main( + int x = 0; // CHECK: 1| [[@LINE]]| int x + // CHECK: 1| [[@LINE]]| + if (x) { // CHECK: 0| [[@LINE]]| if (x) + x = 0; // CHECK: 0| [[@LINE]]| x = 0 + } else { // CHECK: 1| [[@LINE]]| } else + x = 1; // CHECK: 1| [[@LINE]]| x = 1 + } // CHECK: 1| [[@LINE]]| } + // CHECK: 1| [[@LINE]]| + for (int i = 0; i < 100; ++i) { // CHECK: 100| [[@LINE]]| for ( + x = 1; // CHECK: 100| [[@LINE]]| x = 1 + } // CHECK: 100| [[@LINE]]| } + // CHECK: 1| [[@LINE]]| + x = x < 10 ? x + 1 : x - 1; // CHECK: 0| [[@LINE]]| x = + x = x > 10 ? // CHECK: 1| [[@LINE]]| x = + x - 1: // CHECK: 0| [[@LINE]]| x + x + 1; // CHECK: 1| [[@LINE]]| x + // CHECK: 1| [[@LINE]]| + return 0; // CHECK: 1| [[@LINE]]| return +} // CHECK: 1| [[@LINE]]|} +// after coverage // WHOLE-FILE: | [[@LINE]]|// after + // FILTER-NOT: | [[@LINE-1]]|// after + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-cov/showRegionMarkers.cpp b/test/tools/llvm-cov/showRegionMarkers.cpp new file mode 100644 index 0000000..136c3bf --- /dev/null +++ b/test/tools/llvm-cov/showRegionMarkers.cpp @@ -0,0 +1,26 @@ +// RUN: llvm-cov show %S/Inputs/regionMarkers.covmapping -instr-profile %S/Inputs/regionMarkers.profdata -show-regions -dump -filename-equivalence %s 2>&1 | FileCheck %s + +int main() { // CHECK: Marker at [[@LINE]]:12 = 1 + int x = 0; + + if (x) { // CHECK: Marker at [[@LINE]]:10 = 0 + x = 0; + } else { // CHECK: Marker at [[@LINE]]:10 = 1 + x = 1; + } + // CHECK: Marker at [[@LINE+2]]:19 = 101 + // CHECK: Marker at [[@LINE+1]]:28 = 100 + for (int i = 0; i < 100; ++i) { // CHECK: Marker at [[@LINE]]:33 = 100 + x = 1; + } + // CHECK: Marker at [[@LINE+1]]:16 = 1 + x = x < 10 ? x + 1 : x - 1; // CHECK: Marker at [[@LINE]]:24 = 0 + x = x > 10 ? + x - 1: // CHECK: Marker at [[@LINE]]:9 = 0 + x + 1; // CHECK: Marker at [[@LINE]]:9 = 1 + + return 0; +} + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-cov/showTemplateInstantiations.cpp b/test/tools/llvm-cov/showTemplateInstantiations.cpp new file mode 100644 index 0000000..2b72d83 --- /dev/null +++ b/test/tools/llvm-cov/showTemplateInstantiations.cpp @@ -0,0 +1,43 @@ +// RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %S/Inputs/templateInstantiations.profdata -no-colors -filename-equivalence %s | FileCheck -check-prefix=CHECK -check-prefix=ALL %s +// RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %S/Inputs/templateInstantiations.profdata -no-colors -filename-equivalence -name=_Z4funcIbEiT_ %s | FileCheck -check-prefix=CHECK -check-prefix=FILTER %s + +// before coverage // WHOLE-FILE: | [[@LINE]]|// before + // FILTER-NOT: | [[@LINE-1]]|// before +template // ALL: | [[@LINE]]|template +int func(T x) { // ALL-NEXT: 2| [[@LINE]]|int func(T x) { + if(x) // ALL-NEXT: 2| [[@LINE]]| if(x) + return 0; // ALL-NEXT: 1| [[@LINE]]| return 0; + else // ALL-NEXT: 1| [[@LINE]]| else + return 1; // ALL-NEXT: 1| [[@LINE]]| return 1; + int j = 1; // ALL-NEXT: 0| [[@LINE]]| int j = 1; +} // ALL-NEXT: 1| [[@LINE]]|} + + // CHECK: {{^ *(\| )?}}_Z4funcIbEiT_: + // CHECK-NEXT: 1| [[@LINE-9]]|int func(T x) { + // CHECK-NEXT: 1| [[@LINE-9]]| if(x) + // CHECK-NEXT: 1| [[@LINE-9]]| return 0; + // CHECK-NEXT: 1| [[@LINE-9]]| else + // CHECK-NEXT: 0| [[@LINE-9]]| return 1; + // CHECK-NEXT: 0| [[@LINE-9]]| int j = 1; + // CHECK-NEXT: 1| [[@LINE-9]]|} + + // ALL: {{^ *}}| _Z4funcIiEiT_: + // FILTER-NOT: {{^ *(\| )?}} _Z4funcIiEiT_: + // ALL-NEXT: 1| [[@LINE-19]]|int func(T x) { + // ALL-NEXT: 1| [[@LINE-19]]| if(x) + // ALL-NEXT: 0| [[@LINE-19]]| return 0; + // ALL-NEXT: 1| [[@LINE-19]]| else + // ALL-NEXT: 1| [[@LINE-19]]| return 1; + // ALL-NEXT: 0| [[@LINE-19]]| int j = 1; + // ALL-NEXT: 1| [[@LINE-19]]|} + +int main() { // ALL: 1| [[@LINE]]|int main() { + func(0); // ALL-NEXT: 1| [[@LINE]]| func(0); + func(true); // ALL-NEXT: 1| [[@LINE]]| func(true); + return 0; // ALL-NEXT: 1| [[@LINE]]| return 0; +} // ALL-NEXT: 1| [[@LINE]]|} +// after coverage // ALL-NEXT: | [[@LINE]]|// after + // FILTER-NOT: | [[@LINE-1]]|// after + +// llvm-cov doesn't work on big endian yet +// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc diff --git a/test/tools/llvm-mc/line_end_with_space.test b/test/tools/llvm-mc/line_end_with_space.test new file mode 100644 index 0000000..2ce3139 --- /dev/null +++ b/test/tools/llvm-mc/line_end_with_space.test @@ -0,0 +1,2 @@ +RUN: llvm-mc -disassemble %s + \ No newline at end of file diff --git a/test/tools/llvm-objdump/AArch64/Inputs/ObjC.exe.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/ObjC.exe.macho-aarch64 new file mode 100755 index 0000000..d28cbcb Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/ObjC.exe.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/Inputs/ObjC.obj.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/ObjC.obj.macho-aarch64 new file mode 100644 index 0000000..8366076 Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/ObjC.obj.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/Inputs/hello.exe.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/hello.exe.macho-aarch64 new file mode 100755 index 0000000..c30d358 Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/hello.exe.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/Inputs/hello.obj.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/hello.obj.macho-aarch64 new file mode 100644 index 0000000..704dbab Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/hello.obj.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/lit.local.cfg b/test/tools/llvm-objdump/AArch64/lit.local.cfg new file mode 100644 index 0000000..7184443 --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AArch64' in config.root.targets: + config.unsupported = True diff --git a/test/tools/llvm-objdump/AArch64/macho-symbolized-disassembly.test b/test/tools/llvm-objdump/AArch64/macho-symbolized-disassembly.test new file mode 100644 index 0000000..311ff51 --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/macho-symbolized-disassembly.test @@ -0,0 +1,23 @@ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.obj.macho-aarch64 | FileCheck %s -check-prefix=OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.exe.macho-aarch64 | FileCheck %s -check-prefix=EXE +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/ObjC.obj.macho-aarch64 | FileCheck %s -check-prefix=ObjC-OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/ObjC.exe.macho-aarch64 | FileCheck %s -check-prefix=ObjC-EXE + +OBJ: 000000000000001c adrp x0, L_.str@PAGE +OBJ: 0000000000000020 add x0, x0, L_.str@PAGEOFF +OBJ: 0000000000000024 bl _printf + +EXE: 0000000100007f58 add x0, x0, #4008 ; literal pool for: "Hello world +" +EXE: 0000000100007f5c bl 0x100007f78 ; symbol stub for: _printf + +ObjC-OBJ: 000000000000000c adrp x8, L_OBJC_SELECTOR_REFERENCES_3@PAGE +ObjC-OBJ: 0000000000000010 add x8, x8, L_OBJC_SELECTOR_REFERENCES_3@PAGEOFF +ObjC-OBJ:0000000000000044 bl _objc_msgSend + +ObjC-EXE: 0000000100007ed0 add x8, x8, #80 ; Objc selector ref: date +ObjC-EXE: 0000000100007ed8 add x9, x9, #96 ; Objc class ref: _OBJC_CLASS_$_NSDate +ObjC-EXE: 0000000100007f04 bl 0x100007f50 ; Objc message: +[NSObject new] +ObjC-EXE: 0000000100007f1c bl 0x100007f50 ; Objc message: -[x0 new] +ObjC-EXE: 0000000100007f2c add x0, x0, #32 ; Objc cfstring ref: @"The current date and time is: %@" +ObjC-EXE: 0000000100007f30 bl 0x100007f44 ; symbol stub for: _NSLog diff --git a/test/tools/llvm-objdump/ARM/Inputs/hello.exe.macho-arm b/test/tools/llvm-objdump/ARM/Inputs/hello.exe.macho-arm new file mode 100755 index 0000000..40d657b Binary files /dev/null and b/test/tools/llvm-objdump/ARM/Inputs/hello.exe.macho-arm differ diff --git a/test/tools/llvm-objdump/ARM/Inputs/hello.obj.macho-arm b/test/tools/llvm-objdump/ARM/Inputs/hello.obj.macho-arm new file mode 100644 index 0000000..fb8706b Binary files /dev/null and b/test/tools/llvm-objdump/ARM/Inputs/hello.obj.macho-arm differ diff --git a/test/tools/llvm-objdump/ARM/lit.local.cfg b/test/tools/llvm-objdump/ARM/lit.local.cfg new file mode 100644 index 0000000..236e1d3 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'ARM' in config.root.targets: + config.unsupported = True diff --git a/test/tools/llvm-objdump/ARM/macho-arm-and-thumb.test b/test/tools/llvm-objdump/ARM/macho-arm-and-thumb.test new file mode 100644 index 0000000..720b78f --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-arm-and-thumb.test @@ -0,0 +1,15 @@ +@ RUN: llvm-mc < %s -triple armv7-apple-darwin -filetype=obj | llvm-objdump -m -d - | FileCheck %s + +.thumb +.thumb_func _t +_t: +nop +nop +.align 2 +.arm +_a: +nop + +@ CHECK: 00 bf nop +@ CHECK-NEXT: 00 bf nop +@ CHECK: 00 f0 20 e3 nop diff --git a/test/tools/llvm-objdump/ARM/macho-mattr-arm.test b/test/tools/llvm-objdump/ARM/macho-mattr-arm.test new file mode 100644 index 0000000..1b17146 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-mattr-arm.test @@ -0,0 +1,5 @@ +@ RUN: llvm-mc < %s -triple armv8-apple-darwin10 -mattr=+fp-armv8 -filetype=obj -o - | llvm-objdump -d -m -mattr=+fp-armv8 - | FileCheck %s + +vcvtt.f64.f16 d3, s1 + +@ CHECK: e0 3b b2 ee vcvtt.f64.f16 d3, s1 diff --git a/test/tools/llvm-objdump/ARM/macho-mcpu-arm.test b/test/tools/llvm-objdump/ARM/macho-mcpu-arm.test new file mode 100644 index 0000000..7a3432d --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-mcpu-arm.test @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple thumbv7-apple-darwin -mcpu=cortex-a7 -filetype=obj | llvm-objdump -triple thumbv7-apple-darwin10 -m -d -mcpu=cortex-a7 - | FileCheck %s + +.thumb +.thumb_func _t +_t: +sdiv r1, r2, r3 +udiv r1, r2, r3 + +@ CHECK: 92 fb f3 f1 sdiv r1, r2, r3 +@ CHECK: b2 fb f3 f1 udiv r1, r2, r3 diff --git a/test/tools/llvm-objdump/ARM/macho-symbolized-disassembly.test b/test/tools/llvm-objdump/ARM/macho-symbolized-disassembly.test new file mode 100644 index 0000000..eeeab52 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-symbolized-disassembly.test @@ -0,0 +1,8 @@ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.obj.macho-arm | FileCheck %s -check-prefix=OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.exe.macho-arm | FileCheck %s -check-prefix=EXE + +OBJ: 00000006 movw r3, :lower16:((54-14)-4) +OBJ: 0000000a movt r3, :upper16:((54-14)-4) +OBJ: 00000024 bl _printf + +EXE: 0000bfa8 blx 0xbffc @ symbol stub for: _printf diff --git a/test/tools/llvm-objdump/ARM/macho-symbolized-subtractor.test b/test/tools/llvm-objdump/ARM/macho-symbolized-subtractor.test new file mode 100644 index 0000000..65df2a9 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-symbolized-subtractor.test @@ -0,0 +1,15 @@ +# RUN: llvm-mc < %s -triple armv7-apple-darwin -filetype=obj | llvm-objdump -m -d - | FileCheck %s + .thumb + .thumb_func _t +_t: + movw r3, :lower16:(Str-(PCinst+4)) + movt r3, :upper16:(Str-(PCinst+4)) + .thumb_func PCinst +PCinst: + add r3, pc + + .section __TEXT,__cstring,cstring_literals +Str: + .asciz "Hello world\n" +# CHECK: movw r3, :lower16:((Str-PCinst)-4) +# CHECK: movt r3, :upper16:((Str-PCinst)-4) diff --git a/test/tools/llvm-objdump/Inputs/bad-ordinal.macho-x86_64 b/test/tools/llvm-objdump/Inputs/bad-ordinal.macho-x86_64 new file mode 100755 index 0000000..3ab6227 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/bad-ordinal.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/bind.macho-x86_64 b/test/tools/llvm-objdump/Inputs/bind.macho-x86_64 new file mode 100755 index 0000000..51a58a7 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/bind.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 b/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 new file mode 100755 index 0000000..f756fbb Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/compact-unwind.macho-i386 b/test/tools/llvm-objdump/Inputs/compact-unwind.macho-i386 new file mode 100644 index 0000000..174d383 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/compact-unwind.macho-i386 differ diff --git a/test/tools/llvm-objdump/Inputs/compact-unwind.macho-x86_64 b/test/tools/llvm-objdump/Inputs/compact-unwind.macho-x86_64 new file mode 100644 index 0000000..fde1bb5 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/compact-unwind.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/exports-trie.macho-x86_64 b/test/tools/llvm-objdump/Inputs/exports-trie.macho-x86_64 new file mode 100755 index 0000000..5d75060 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/exports-trie.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386 b/test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386 new file mode 100644 index 0000000..79311d3 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386 differ diff --git a/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64 b/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64 new file mode 100755 index 0000000..02a4d12 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 b/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 deleted file mode 100644 index 4c71584..0000000 Binary files a/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 and /dev/null differ diff --git a/test/tools/llvm-objdump/Inputs/rebase.macho-x86_64 b/test/tools/llvm-objdump/Inputs/rebase.macho-x86_64 new file mode 100755 index 0000000..05062d8 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/rebase.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 b/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 deleted file mode 100644 index fdc4874..0000000 Binary files a/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 and /dev/null differ diff --git a/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 b/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 new file mode 100755 index 0000000..a1fd687 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/unwind-info.macho-arm64 b/test/tools/llvm-objdump/Inputs/unwind-info.macho-arm64 new file mode 100755 index 0000000..5b9ce9c Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/unwind-info.macho-arm64 differ diff --git a/test/tools/llvm-objdump/Inputs/unwind-info.macho-x86_64 b/test/tools/llvm-objdump/Inputs/unwind-info.macho-x86_64 new file mode 100755 index 0000000..9e6ad6b Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/unwind-info.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64 b/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64 new file mode 100755 index 0000000..6534116 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/ObjC.exe.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/ObjC.exe.macho-x86_64 new file mode 100755 index 0000000..4de8a1f Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/ObjC.exe.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/ObjC.obj.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/ObjC.obj.macho-x86_64 new file mode 100644 index 0000000..66edb3c Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/ObjC.obj.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibLoadKinds.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibLoadKinds.macho-x86_64 new file mode 100755 index 0000000..87d1f8c Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibLoadKinds.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-i386 b/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-i386 new file mode 100755 index 0000000..b1f7bd8 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-i386 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-x86_64 new file mode 100755 index 0000000..d004bed Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/hello.exe.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-i386 b/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-i386 new file mode 100644 index 0000000..b69d4be Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-i386 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-x86_64 new file mode 100644 index 0000000..2b59a1c Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/hello.obj.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/hello_cpp.exe.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/hello_cpp.exe.macho-x86_64 new file mode 100755 index 0000000..6b54b15 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/hello_cpp.exe.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/out-of-section-sym.elf-i386 b/test/tools/llvm-objdump/X86/Inputs/out-of-section-sym.elf-i386 new file mode 100644 index 0000000..4c71584 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/out-of-section-sym.elf-i386 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/trivial.obj.elf-i386 b/test/tools/llvm-objdump/X86/Inputs/trivial.obj.elf-i386 new file mode 100644 index 0000000..fdc4874 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/trivial.obj.elf-i386 differ diff --git a/test/tools/llvm-objdump/X86/disassembly-show-raw.test b/test/tools/llvm-objdump/X86/disassembly-show-raw.test new file mode 100644 index 0000000..e9956a5 --- /dev/null +++ b/test/tools/llvm-objdump/X86/disassembly-show-raw.test @@ -0,0 +1,14 @@ +// RUN: llvm-objdump -d %p/Inputs/trivial.obj.elf-i386 \ +// RUN: | FileCheck %s -check-prefix=WITHRAW +// RUN: llvm-objdump -d -no-show-raw-insn %p/Inputs/trivial.obj.elf-i386 \ +// RUN: | FileCheck %s -check-prefix=NORAW + +// Expect to find the raw incoding when run with raw output (default), but not +// when run explicitly with -no-show-raw-insn + +WITHRAW: a1 00 00 00 00 movl + +NORAW: movl +NORAW-NOT: a1 00 + + diff --git a/test/tools/llvm-objdump/X86/lit.local.cfg b/test/tools/llvm-objdump/X86/lit.local.cfg new file mode 100644 index 0000000..c8625f4 --- /dev/null +++ b/test/tools/llvm-objdump/X86/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'X86' in config.root.targets: + config.unsupported = True diff --git a/test/tools/llvm-objdump/X86/macho-private-headers.test b/test/tools/llvm-objdump/X86/macho-private-headers.test new file mode 100644 index 0000000..685b4f7 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-private-headers.test @@ -0,0 +1,368 @@ +// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s +// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=EXE +// RUN: llvm-objdump -p %p/Inputs/dylibLoadKinds.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=LOAD + +CHECK: Mach header +CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +CHECK: MH_MAGIC_64 X86_64 ALL 0x00 OBJECT 3 496 SUBSECTIONS_VIA_SYMBOLS +CHECK: Load command 0 +CHECK: cmd LC_SEGMENT_64 +CHECK: cmdsize 392 +CHECK: segname +CHECK: vmaddr 0x0000000000000000 +CHECK: vmsize 0x00000000000000a8 +CHECK: fileoff 528 +CHECK: filesize 168 +CHECK: maxprot rwx +CHECK: initprot rwx +CHECK: nsects 4 +CHECK: flags (none) +CHECK: Section +CHECK: sectname __text +CHECK: segname __TEXT +CHECK: addr 0x0000000000000000 +CHECK: size 0x000000000000003b +CHECK: offset 528 +CHECK: align 2^4 (16) +CHECK: reloff 696 +CHECK: nreloc 2 +CHECK: type S_REGULAR +CHECK: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __cstring +CHECK: segname __TEXT +CHECK: addr 0x000000000000003b +CHECK: size 0x000000000000000d +CHECK: offset 587 +CHECK: align 2^0 (1) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_CSTRING_LITERALS +CHECK: attributes (none) +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __compact_unwind +CHECK: segname __LD +CHECK: addr 0x0000000000000048 +CHECK: size 0x0000000000000020 +CHECK: offset 600 +CHECK: align 2^3 (8) +CHECK: reloff 712 +CHECK: nreloc 1 +CHECK: type S_REGULAR +CHECK: attributes DEBUG +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __eh_frame +CHECK: segname __TEXT +CHECK: addr 0x0000000000000068 +CHECK: size 0x0000000000000040 +CHECK: offset 632 +CHECK: align 2^3 (8) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_COALESCED +CHECK: attributes NO_TOC STRIP_STATIC_SYMS LIVE_SUPPORT +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Load command 1 +CHECK: cmd LC_SYMTAB +CHECK: cmdsize 24 +CHECK: symoff 720 +CHECK: nsyms 5 +CHECK: stroff 800 +CHECK: strsize 44 +CHECK: Load command 2 +CHECK: cmd LC_DYSYMTAB +CHECK: cmdsize 80 +CHECK: ilocalsym 0 +CHECK: nlocalsym 2 +CHECK: iextdefsym 2 +CHECK: nextdefsym 2 +CHECK: iundefsym 4 +CHECK: nundefsym 1 +CHECK: tocoff 0 +CHECK: ntoc 0 +CHECK: modtaboff 0 +CHECK: nmodtab 0 +CHECK: extrefsymoff 0 +CHECK: nextrefsyms 0 +CHECK: indirectsymoff 0 +CHECK: nindirectsyms 0 +CHECK: extreloff 0 +CHECK: nextrel 0 +CHECK: locreloff 0 +CHECK: nlocrel 0 + +EXE: Mach header +EXE: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +EXE: MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 16 1296 NOUNDEFS DYLDLINK TWOLEVEL PIE +EXE: Load command 0 +EXE: cmd LC_SEGMENT_64 +EXE: cmdsize 72 +EXE: segname __PAGEZERO +EXE: vmaddr 0x0000000000000000 +EXE: vmsize 0x0000000100000000 +EXE: fileoff 0 +EXE: filesize 0 +EXE: maxprot --- +EXE: initprot --- +EXE: nsects 0 +EXE: flags (none) +EXE: Load command 1 +EXE: cmd LC_SEGMENT_64 +EXE: cmdsize 552 +EXE: segname __TEXT +EXE: vmaddr 0x0000000100000000 +EXE: vmsize 0x0000000000001000 +EXE: fileoff 0 +EXE: filesize 4096 +EXE: maxprot rwx +EXE: initprot r-x +EXE: nsects 6 +EXE: flags (none) +EXE: Section +EXE: sectname __text +EXE: segname __TEXT +EXE: addr 0x0000000100000f30 +EXE: size 0x000000000000003b +EXE: offset 3888 +EXE: align 2^4 (16) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_REGULAR +EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS +EXE: reserved1 0 +EXE: reserved2 0 +EXE: Section +EXE: sectname __stubs +EXE: segname __TEXT +EXE: addr 0x0000000100000f6c +EXE: size 0x0000000000000006 +EXE: offset 3948 +EXE: align 2^1 (2) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_SYMBOL_STUBS +EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS +EXE: reserved1 0 (index into indirect symbol table) +EXE: reserved2 6 (size of stubs) +EXE: Section +EXE: sectname __stub_helper +EXE: segname __TEXT +EXE: addr 0x0000000100000f74 +EXE: size 0x000000000000001a +EXE: offset 3956 +EXE: align 2^2 (4) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_REGULAR +EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS +EXE: reserved1 0 +EXE: reserved2 0 +EXE: Section +EXE: sectname __cstring +EXE: segname __TEXT +EXE: addr 0x0000000100000f8e +EXE: size 0x000000000000000d +EXE: offset 3982 +EXE: align 2^0 (1) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_CSTRING_LITERALS +EXE: attributes (none) +EXE: reserved1 0 +EXE: reserved2 0 +EXE: Section +EXE: sectname __unwind_info +EXE: segname __TEXT +EXE: addr 0x0000000100000f9b +EXE: size 0x0000000000000048 +EXE: offset 3995 +EXE: align 2^0 (1) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_REGULAR +EXE: attributes (none) +EXE: reserved1 0 +EXE: reserved2 0 +EXE: Section +EXE: sectname __eh_frame +EXE: segname __TEXT +EXE: addr 0x0000000100000fe8 +EXE: size 0x0000000000000018 +EXE: offset 4072 +EXE: align 2^3 (8) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_REGULAR +EXE: attributes (none) +EXE: reserved1 0 +EXE: reserved2 0 +EXE: Load command 2 +EXE: cmd LC_SEGMENT_64 +EXE: cmdsize 232 +EXE: segname __DATA +EXE: vmaddr 0x0000000100001000 +EXE: vmsize 0x0000000000001000 +EXE: fileoff 4096 +EXE: filesize 4096 +EXE: maxprot rwx +EXE: initprot rw- +EXE: nsects 2 +EXE: flags (none) +EXE: Section +EXE: sectname __nl_symbol_ptr +EXE: segname __DATA +EXE: addr 0x0000000100001000 +EXE: size 0x0000000000000010 +EXE: offset 4096 +EXE: align 2^3 (8) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_NON_LAZY_SYMBOL_POINTERS +EXE: attributes (none) +EXE: reserved1 1 (index into indirect symbol table) +EXE: reserved2 0 +EXE: Section +EXE: sectname __la_symbol_ptr +EXE: segname __DATA +EXE: addr 0x0000000100001010 +EXE: size 0x0000000000000008 +EXE: offset 4112 +EXE: align 2^3 (8) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_LAZY_SYMBOL_POINTERS +EXE: attributes (none) +EXE: reserved1 3 (index into indirect symbol table) +EXE: reserved2 0 +EXE: Load command 3 +EXE: cmd LC_SEGMENT_64 +EXE: cmdsize 72 +EXE: segname __LINKEDIT +EXE: vmaddr 0x0000000100002000 +EXE: vmsize 0x0000000000001000 +EXE: fileoff 8192 +EXE: filesize 304 +EXE: maxprot rwx +EXE: initprot r-- +EXE: nsects 0 +EXE: flags (none) +EXE: Load command 4 +EXE: cmd LC_DYLD_INFO_ONLY +EXE: cmdsize 48 +EXE: rebase_off 8192 +EXE: rebase_size 8 +EXE: bind_off 8200 +EXE: bind_size 24 +EXE: weak_bind_off 0 +EXE: weak_bind_size 0 +EXE: lazy_bind_off 8224 +EXE: lazy_bind_size 16 +EXE: export_off 8240 +EXE: export_size 48 +EXE: Load command 5 +EXE: cmd LC_SYMTAB +EXE: cmdsize 24 +EXE: symoff 8360 +EXE: nsyms 4 +EXE: stroff 8440 +EXE: strsize 56 +EXE: Load command 6 +EXE: cmd LC_DYSYMTAB +EXE: cmdsize 80 +EXE: ilocalsym 0 +EXE: nlocalsym 0 +EXE: iextdefsym 0 +EXE: nextdefsym 2 +EXE: iundefsym 2 +EXE: nundefsym 2 +EXE: tocoff 0 +EXE: ntoc 0 +EXE: modtaboff 0 +EXE: nmodtab 0 +EXE: extrefsymoff 0 +EXE: nextrefsyms 0 +EXE: indirectsymoff 8424 +EXE: nindirectsyms 4 +EXE: extreloff 0 +EXE: nextrel 0 +EXE: locreloff 0 +EXE: nlocrel 0 +EXE: Load command 7 +EXE: cmd LC_LOAD_DYLINKER +EXE: cmdsize 32 +EXE: name /usr/lib/dyld (offset 12) +EXE: Load command 8 +EXE: cmd LC_UUID +EXE: cmdsize 24 +EXE: uuid 65C2DD41-79B0-3B34-871B-8CB3446AB762 +EXE: Load command 9 +EXE: cmd LC_VERSION_MIN_MACOSX +EXE: cmdsize 16 +EXE: version 10.9 +EXE: sdk 10.9 +EXE: Load command 10 +EXE: cmd LC_SOURCE_VERSION +EXE: cmdsize 16 +EXE: version 0.0 +EXE: Load command 11 +EXE: cmd LC_MAIN +EXE: cmdsize 24 +EXE: entryoff 3888 +EXE: stacksize 0 +EXE: Load command 12 +EXE: cmd LC_LOAD_DYLIB +EXE: cmdsize 56 +EXE: name /usr/lib/libSystem.B.dylib (offset 24) +EXE: current version 1197.1.1 +EXE: compatibility version 1.0.0 +EXE: Load command 13 +EXE: cmd LC_FUNCTION_STARTS +EXE: cmdsize 16 +EXE: dataoff 8288 +EXE: datasize 8 +EXE: Load command 14 +EXE: cmd LC_DATA_IN_CODE +EXE: cmdsize 16 +EXE: dataoff 8296 +EXE: datasize 0 +EXE: Load command 15 +EXE: cmd LC_DYLIB_CODE_SIGN_DRS +EXE: cmdsize 16 +EXE: dataoff 8296 +EXE: datasize 64 + + +LOAD: Load command 10 +LOAD: cmd LC_LOAD_DYLIB +LOAD: cmdsize 48 +LOAD: name /usr/lib/foo1.dylib (offset 24) +LOAD: current version 0.0.0 +LOAD: compatibility version 0.0.0 +LOAD: Load command 11 +LOAD: cmd LC_LOAD_WEAK_DYLIB +LOAD: cmdsize 48 +LOAD: name /usr/lib/foo2.dylib (offset 24) +LOAD: current version 0.0.0 +LOAD: compatibility version 0.0.0 +LOAD: Load command 12 +LOAD: cmd LC_REEXPORT_DYLIB +LOAD: cmdsize 48 +LOAD: name /usr/lib/foo3.dylib (offset 24) +LOAD: current version 0.0.0 +LOAD: compatibility version 0.0.0 +LOAD: Load command 13 +LOAD: cmd LC_LAZY_LOAD_DYLIB +LOAD: cmdsize 48 +LOAD: name /usr/lib/foo4.dylib (offset 24) +LOAD: current version 0.0.0 +LOAD: compatibility version 0.0.0 + diff --git a/test/tools/llvm-objdump/X86/macho-symbolized-disassembly.test b/test/tools/llvm-objdump/X86/macho-symbolized-disassembly.test new file mode 100644 index 0000000..1e1080a --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-symbolized-disassembly.test @@ -0,0 +1,38 @@ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s -check-prefix=OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.exe.macho-x86_64 | FileCheck %s -check-prefix=EXE +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/ObjC.obj.macho-x86_64 | FileCheck %s -check-prefix=ObjC-OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/ObjC.exe.macho-x86_64 | FileCheck %s -check-prefix=ObjC-EXE +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello_cpp.exe.macho-x86_64 | FileCheck %s -check-prefix=CXX-EXE + +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.obj.macho-i386 | FileCheck %s -check-prefix=i386-OBJ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/hello.exe.macho-i386 | FileCheck %s -check-prefix=i386-EXE + +OBJ: 0000000000000008 leaq L_.str(%rip), %rax ## literal pool for: "Hello world\n" +OBJ: 0000000000000026 callq _printf + +EXE: 0000000100000f38 leaq 0x4f(%rip), %rax ## literal pool for: "Hello world\n" +EXE: 0000000100000f56 callq 0x100000f6c ## symbol stub for: _printf + +ObjC-OBJ: 0000000000000008 leaq 0xb1(%rip), %rax ## Objc cfstring ref: @"The current date and time is: %@" +ObjC-OBJ: 0000000000000016 movq 0x4b(%rip), %rcx ## Objc class ref: NSObject +ObjC-OBJ: 000000000000001d movq 0x64(%rip), %rsi ## Objc selector ref: new +ObjC-OBJ: 0000000000000034 movq 0x35(%rip), %rax ## Objc class ref: NSDate +ObjC-OBJ: 000000000000003b movq 0x4e(%rip), %rsi ## Objc selector ref: date + +ObjC-EXE: 0000000100000ee8 leaq 0x159(%rip), %rax ## Objc cfstring ref: @"The current date and time is: %@" +ObjC-EXE: 0000000100000ef6 movq 0x13b(%rip), %rcx ## Objc class ref: _OBJC_CLASS_$_NSObject +ObjC-EXE: 0000000100000efd movq 0x124(%rip), %rsi ## Objc selector ref: new +ObjC-EXE: 0000000100000f0b callq 0x100000f4a ## Objc message: +[NSObject new] +ObjC-EXE: 0000000100000f14 movq 0x125(%rip), %rax ## Objc class ref: _OBJC_CLASS_$_NSDate +ObjC-EXE: 0000000100000f1b movq 0x10e(%rip), %rsi ## Objc selector ref: date +ObjC-EXE: 0000000100000f25 callq 0x100000f4a ## Objc message: +[NSDate date] +ObjC-EXE: 0000000100000f33 callq 0x100000f44 ## symbol stub for: _NSLog + +CXX-EXE: 00000001000014cb callq __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ + +// FIXME: Demangler depends on host's . +// std::__1::ostreambuf_iterator > std::__1::__pad_and_output >(std::__1::ostreambuf_iterator >, char const*, char const*, char const*, std::__1::ios_base&, char) + +i386-OBJ: 0000002f calll _printf + +i386-EXE: 00001f6f calll 0x1f84 ## symbol stub for: _printf diff --git a/test/tools/llvm-objdump/X86/macho-symbolized-subtractor-i386.test b/test/tools/llvm-objdump/X86/macho-symbolized-subtractor-i386.test new file mode 100644 index 0000000..a0f753b --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-symbolized-subtractor-i386.test @@ -0,0 +1,10 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -d - | FileCheck %s + +nop +x: +leal x-y(%eax), %ebx +.data +y: +.quad 0 + +# CHECK: leal x-y(%eax), %ebx diff --git a/test/tools/llvm-objdump/X86/macho-symbolized-subtractor.test b/test/tools/llvm-objdump/X86/macho-symbolized-subtractor.test new file mode 100644 index 0000000..a730b5c --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-symbolized-subtractor.test @@ -0,0 +1,10 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -d - | FileCheck %s + +nop +x: +leaq x-y(%rax), %rbx +.data +y: +.quad 0 + +# CHECK: leaq x-y(%rax), %rbx diff --git a/test/tools/llvm-objdump/X86/out-of-section-sym.test b/test/tools/llvm-objdump/X86/out-of-section-sym.test new file mode 100644 index 0000000..f70dce6 --- /dev/null +++ b/test/tools/llvm-objdump/X86/out-of-section-sym.test @@ -0,0 +1,13 @@ +// Check that llvm-objdump does not attempt to disassemble symbols outside +// of section boundaries. +// RUN: llvm-objdump -d -t %p/Inputs/out-of-section-sym.elf-i386 | FileCheck %s + +CHECK: Disassembly of section .text: +CHECK-NEXT: _start: +CHECK-NEXT: 10: c3 retl +CHECK-NEXT: SYMBOL TABLE: +CHECK-NEXT: 00000000 *UND* 00000000 +CHECK-NEXT: 00000010 l d .text 00000000 .text +CHECK-NEXT: 00000010 .text 00000000 _start +CHECK-NEXT: 00000020 .text 00000000 _fdata +CHECK-NEXT: 00000010 .text 00000000 _ftext diff --git a/test/tools/llvm-objdump/coff-large-bss.test b/test/tools/llvm-objdump/coff-large-bss.test new file mode 100644 index 0000000..dc0fc67 --- /dev/null +++ b/test/tools/llvm-objdump/coff-large-bss.test @@ -0,0 +1,3 @@ +RUN: llvm-objdump -s %p/Inputs/large-bss.obj.coff-i386 | FileCheck %s + +: CHECK: diff --git a/test/tools/llvm-objdump/disassembly-show-raw.test b/test/tools/llvm-objdump/disassembly-show-raw.test deleted file mode 100644 index e9956a5..0000000 --- a/test/tools/llvm-objdump/disassembly-show-raw.test +++ /dev/null @@ -1,14 +0,0 @@ -// RUN: llvm-objdump -d %p/Inputs/trivial.obj.elf-i386 \ -// RUN: | FileCheck %s -check-prefix=WITHRAW -// RUN: llvm-objdump -d -no-show-raw-insn %p/Inputs/trivial.obj.elf-i386 \ -// RUN: | FileCheck %s -check-prefix=NORAW - -// Expect to find the raw incoding when run with raw output (default), but not -// when run explicitly with -no-show-raw-insn - -WITHRAW: a1 00 00 00 00 movl - -NORAW: movl -NORAW-NOT: a1 00 - - diff --git a/test/tools/llvm-objdump/lit.local.cfg b/test/tools/llvm-objdump/lit.local.cfg deleted file mode 100644 index c8625f4..0000000 --- a/test/tools/llvm-objdump/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not 'X86' in config.root.targets: - config.unsupported = True diff --git a/test/tools/llvm-objdump/macho-bad-ordinal.test b/test/tools/llvm-objdump/macho-bad-ordinal.test new file mode 100644 index 0000000..16badcc --- /dev/null +++ b/test/tools/llvm-objdump/macho-bad-ordinal.test @@ -0,0 +1,6 @@ +# RUN: llvm-objdump -macho -bind -lazy-bind %p/Inputs/bad-ordinal.macho-x86_64 \ +# RUN: | FileCheck %s + + +# CHECK: __DATA __nl_symbol_ptr 0x100001000 pointer 0 <> dyld_stub_binder +# CHECK: __DATA __la_symbol_ptr 0x100001010 <> _printf diff --git a/test/tools/llvm-objdump/macho-bind.test b/test/tools/llvm-objdump/macho-bind.test new file mode 100644 index 0000000..5527bfa --- /dev/null +++ b/test/tools/llvm-objdump/macho-bind.test @@ -0,0 +1,10 @@ +# RUN: llvm-objdump -macho -bind %p/Inputs/bind.macho-x86_64 \ +# RUN: | FileCheck %s + + +# CHECK:__DATA __data 0x00001028 pointer 0 flat-namespace _any +# CHECK:__DATA __data 0x00001020 pointer 0 main-executable _fromApp +# CHECK:__DATA __data 0x00001018 pointer 0 this-image _myfunc +# CHECK:__DATA __data 0x00001000 pointer 0 libfoo _foo +# CHECK:__DATA __data 0x00001008 pointer 0 libbar _bar +# CHECK:__DATA __data 0x00001010 pointer 0 libSystem _malloc diff --git a/test/tools/llvm-objdump/macho-bind2.test b/test/tools/llvm-objdump/macho-bind2.test new file mode 100644 index 0000000..2eee2fc --- /dev/null +++ b/test/tools/llvm-objdump/macho-bind2.test @@ -0,0 +1,5 @@ +# RUN: llvm-objdump -macho -bind %p/Inputs/bind2.macho-x86_64 | FileCheck %s + +# CHECK: __DATA __data 0x00001008 pointer 0 libSystem _malloc +# CHECK: __DATA __data 0x00001050 pointer 0 libSystem _malloc +# CHECK: __DATA __data 0x00001458 pointer 0 libSystem _malloc diff --git a/test/tools/llvm-objdump/macho-compact-unwind-i386.test b/test/tools/llvm-objdump/macho-compact-unwind-i386.test new file mode 100644 index 0000000..9a14c20 --- /dev/null +++ b/test/tools/llvm-objdump/macho-compact-unwind-i386.test @@ -0,0 +1,27 @@ +# RUN: llvm-objdump -unwind-info %p/Inputs/compact-unwind.macho-i386 | FileCheck %s + +# CHECK: Contents of __compact_unwind section: +# CHECK: Entry at offset 0x0: +# CHECK: start: 0x0 __Z10test_throwv +# CHECK: length: 0x55 +# CHECK: compact encoding: 0x01010005 +# CHECK-NOT: personality function +# CHECK-NOT: LSDA +# CHECK: Entry at offset 0x14: +# CHECK: start: 0x60 __Z11test_catch1v +# CHECK: length: 0x6f +# CHECK: compact encoding: 0x41000000 +# CHECK: personality function: 0x288 __pointers + 0x8 +# CHECK: LSDA: 0x180 GCC_except_table1 +# CHECK: Entry at offset 0x28: +# CHECK: start: 0xd0 __Z11test_catch2v +# CHECK: length: 0x75 +# CHECK: compact encoding: 0x41000000 +# CHECK: personality function: 0x288 __pointers + 0x8 +# CHECK: LSDA: 0x1a8 GCC_except_table2 +# CHECK: Entry at offset 0x3c: +# CHECK: start: 0x150 __Z3foov +# CHECK: length: 0x22 +# CHECK: compact encoding: 0x01000000 +# CHECK-NOT: personality function +# CHECK-NOT: LSDA diff --git a/test/tools/llvm-objdump/macho-compact-unwind-x86_64.test b/test/tools/llvm-objdump/macho-compact-unwind-x86_64.test new file mode 100644 index 0000000..852800d --- /dev/null +++ b/test/tools/llvm-objdump/macho-compact-unwind-x86_64.test @@ -0,0 +1,27 @@ +# RUN: llvm-objdump -unwind-info %p/Inputs/compact-unwind.macho-x86_64 | FileCheck %s + +# CHECK: Contents of __compact_unwind section: +# CHECK: Entry at offset 0x0: +# CHECK: start: 0x1 __Z10test_throwv + 0x1 +# CHECK: length: 0x44 +# CHECK: compact encoding: 0x01000000 +# CHECK-NOT: personality function +# CHECK-NOT: LSDA +# CHECK: Entry at offset 0x20: +# CHECK: start: 0x50 __Z11test_catch1v +# CHECK: length: 0x71 +# CHECK: compact encoding: 0x41000000 +# CHECK: personality function: 0x0 ___gxx_personality_v0 +# CHECK: LSDA: 0x180 GCC_except_table1 +# CHECK: Entry at offset 0x40: +# CHECK: start: 0xd0 __Z11test_catch2v +# CHECK: length: 0x77 +# CHECK: compact encoding: 0x41000000 +# CHECK: personality function: 0x0 ___gxx_personality_v0 +# CHECK: LSDA: 0x1a8 GCC_except_table2 +# CHECK: Entry at offset 0x60: +# CHECK: start: 0x150 __Z3foov +# CHECK: length: 0x25 +# CHECK: compact encoding: 0x01000000 +# CHECK-NOT: personality function +# CHECK-NOT: LSDA diff --git a/test/tools/llvm-objdump/macho-exports-trie.test b/test/tools/llvm-objdump/macho-exports-trie.test new file mode 100644 index 0000000..473c7cb --- /dev/null +++ b/test/tools/llvm-objdump/macho-exports-trie.test @@ -0,0 +1,11 @@ +# RUN: llvm-objdump -macho -exports-trie -arch x86_64 \ +# RUN: %p/Inputs/exports-trie.macho-x86_64 2>/dev/null | FileCheck %s + + +# CHECK:[re-export] _malloc (from libSystem) +# CHECK:[re-export] _myfree (_free from libSystem) +# CHECK:0x00000F70 _myWeak [weak_def] +# CHECK:0x00001018 _myTLV [per-thread] +# CHECK:0x12345678 _myAbs [absolute] +# CHECK:0x00000F60 _foo + diff --git a/test/tools/llvm-objdump/macho-lazy-bind.test b/test/tools/llvm-objdump/macho-lazy-bind.test new file mode 100644 index 0000000..088ea06 --- /dev/null +++ b/test/tools/llvm-objdump/macho-lazy-bind.test @@ -0,0 +1,7 @@ +# RUN: llvm-objdump -macho -lazy-bind %p/Inputs/lazy-bind.macho-x86_64 \ +# RUN: | FileCheck %s + + +# CHECK: __DATA __la_symbol_ptr 0x100001010 libfoo _foo +# CHECK: __DATA __la_symbol_ptr 0x100001018 libbar _bar +# CHECK: __DATA __la_symbol_ptr 0x100001020 libSystem _malloc diff --git a/test/tools/llvm-objdump/macho-rebase.test b/test/tools/llvm-objdump/macho-rebase.test new file mode 100644 index 0000000..96df390 --- /dev/null +++ b/test/tools/llvm-objdump/macho-rebase.test @@ -0,0 +1,15 @@ +# RUN: llvm-objdump -macho -rebase -arch x86_64 \ +# RUN: %p/Inputs/rebase.macho-x86_64 | FileCheck %s + + +# CHECK: segment section address type +# CHECK: __DATA __data 0x00001010 pointer +# CHECK: __DATA __data 0x00001028 pointer +# CHECK: __DATA __data 0x00001030 pointer +# CHECK: __DATA __data 0x00001038 pointer +# CHECK: __DATA __data 0x00001040 pointer +# CHECK: __DATA __data 0x00001258 pointer +# CHECK: __DATA __mystuff 0x00001278 pointer +# CHECK: __DATA __mystuff 0x00001288 pointer +# CHECK: __DATA __mystuff 0x00001298 pointer +# CHECK: __DATA __mystuff 0x000012A8 pointer diff --git a/test/tools/llvm-objdump/macho-unwind-info-arm64.test b/test/tools/llvm-objdump/macho-unwind-info-arm64.test new file mode 100644 index 0000000..712edef --- /dev/null +++ b/test/tools/llvm-objdump/macho-unwind-info-arm64.test @@ -0,0 +1,28 @@ +# RUN: llvm-objdump -unwind-info %p/Inputs/unwind-info.macho-arm64 2>/dev/null | FileCheck %s + +# The 2nd level index here is "regular", including all offsets & encodings in +# full. + +# CHECK: Contents of __unwind_info section: +# CHECK: Version: 0x1 +# CHECK: Common encodings array section offset: 0x1c +# CHECK: Number of common encodings in array: 0x2 +# CHECK: Personality function array section offset: 0x24 +# CHECK: Number of personality functions in array: 0x1 +# CHECK: Index array section offset: 0x28 +# CHECK: Number of indices in array: 0x2 +# CHECK: Common encodings: (count = 2) +# CHECK: encoding[0]: 0x04000000 +# CHECK: encoding[1]: 0x54000000 +# CHECK: Personality functions: (count = 1) +# CHECK: personality[1]: 0x00008008 +# CHECK: Top level indices: (count = 2) +# CHECK: [0]: function offset=0x00007d64, 2nd level page offset=0x00000050, LSDA offset=0x00000040 +# CHECK: [1]: function offset=0x00007eb5, 2nd level page offset=0x00000000, LSDA offset=0x00000050 +# CHECK: LSDA descriptors: +# CHECK: [0]: function offset=0x00007d90, LSDA offset=0x00007f44 +# CHECK: [1]: function offset=0x00007e10, LSDA offset=0x00007f6c +# CHECK: Second level indices: +# CHECK: Second level index[0]: offset in section=0x00000050, base function offset=0x00007d64 +# CHECK: [0]: function offset=0x00007d90, encoding=0x78563412 +# CHECK: [1]: function offset=0x00007e10, encoding=0x21436587 diff --git a/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test b/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test new file mode 100644 index 0000000..3adad65 --- /dev/null +++ b/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test @@ -0,0 +1,8 @@ +# RUN: llvm-objdump -unwind-info %p/Inputs/unwind-info-no-relocs.macho-x86_64 2>/dev/null | FileCheck %s + +# Make sure we can deal with __compact_unwind sections that don't have helpful +# relocations. + +# CHECK: Contents of __compact_unwind section: +# CHECK: Entry at offset 0x0: +# CHECK: start: 0x100000f7e diff --git a/test/tools/llvm-objdump/macho-unwind-info-x86_64.test b/test/tools/llvm-objdump/macho-unwind-info-x86_64.test new file mode 100644 index 0000000..1333d9a --- /dev/null +++ b/test/tools/llvm-objdump/macho-unwind-info-x86_64.test @@ -0,0 +1,29 @@ +# RUN: llvm-objdump -unwind-info %p/Inputs/unwind-info.macho-x86_64 2>/dev/null | FileCheck %s + +# The 2nd level index in this file is in compressed form, referring to both +# common and packed encodings. + +# CHECK:Contents of __unwind_info section: +# CHECK: Version: 0x1 +# CHECK: Common encodings array section offset: 0x1c +# CHECK: Number of common encodings in array: 0x2 +# CHECK: Personality function array section offset: 0x24 +# CHECK: Number of personality functions in array: 0x1 +# CHECK: Index array section offset: 0x28 +# CHECK: Number of indices in array: 0x2 +# CHECK: Common encodings: (count = 2) +# CHECK: encoding[0]: 0x01000000 +# CHECK: encoding[1]: 0x51000000 +# CHECK: Personality functions: (count = 1) +# CHECK: personality[1]: 0x00001018 +# CHECK: Top level indices: (count = 2) +# CHECK: [0]: function offset=0x00000d70, 2nd level page offset=0x00000050, LSDA offset=0x00000040 +# CHECK: [1]: function offset=0x00000eab, 2nd level page offset=0x00000000, LSDA offset=0x00000050 +# CHECK: LSDA descriptors: +# CHECK: [0]: function offset=0x00000db0, LSDA offset=0x00000f0c +# CHECK: [1]: function offset=0x00000e20, LSDA offset=0x00000f34 +# CHECK: Second level indices: +# CHECK: Second level index[0]: offset in section=0x00000050, base function offset=0x00000d70 +# CHECK: [0]: function offset=0x00000d70, encoding[0]=0x01000000 +# CHECK: [1]: function offset=0x00000db0, encoding[1]=0x51000000 +# CHECK: [2]: function offset=0x00000e20, encoding[2]=0x01234567 diff --git a/test/tools/llvm-objdump/macho-weak-bind.test b/test/tools/llvm-objdump/macho-weak-bind.test new file mode 100644 index 0000000..1013132 --- /dev/null +++ b/test/tools/llvm-objdump/macho-weak-bind.test @@ -0,0 +1,10 @@ +# RUN: llvm-objdump -macho -weak-bind %p/Inputs/weak-bind.macho-x86_64 \ +# RUN: | FileCheck %s + + +# CHECK: __DATA __data 0x100001018 pointer 0 __ZTISt12out_of_range +# CHECK: __DATA __data 0x100001020 pointer 0 __ZTISt12out_of_range +# CHECK: __DATA __data 0x100001028 pointer 0 __ZTISt12out_of_range +# CHECK: strong __ZdlPv +# CHECK: __DATA __data 0x100001018 pointer 0 __Znam +# CHECK: strong __Znwm diff --git a/test/tools/llvm-objdump/out-of-section-sym.test b/test/tools/llvm-objdump/out-of-section-sym.test deleted file mode 100644 index f70dce6..0000000 --- a/test/tools/llvm-objdump/out-of-section-sym.test +++ /dev/null @@ -1,13 +0,0 @@ -// Check that llvm-objdump does not attempt to disassemble symbols outside -// of section boundaries. -// RUN: llvm-objdump -d -t %p/Inputs/out-of-section-sym.elf-i386 | FileCheck %s - -CHECK: Disassembly of section .text: -CHECK-NEXT: _start: -CHECK-NEXT: 10: c3 retl -CHECK-NEXT: SYMBOL TABLE: -CHECK-NEXT: 00000000 *UND* 00000000 -CHECK-NEXT: 00000010 l d .text 00000000 .text -CHECK-NEXT: 00000010 .text 00000000 _start -CHECK-NEXT: 00000020 .text 00000000 _fdata -CHECK-NEXT: 00000010 .text 00000000 _ftext diff --git a/test/tools/llvm-profdata/Inputs/bad-hash.profdata b/test/tools/llvm-profdata/Inputs/bad-hash.profdata deleted file mode 100644 index faa6f40..0000000 --- a/test/tools/llvm-profdata/Inputs/bad-hash.profdata +++ /dev/null @@ -1,4 +0,0 @@ -function_count_not -badhash -1 -1 diff --git a/test/tools/llvm-profdata/Inputs/bad-hash.proftext b/test/tools/llvm-profdata/Inputs/bad-hash.proftext new file mode 100644 index 0000000..faa6f40 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/bad-hash.proftext @@ -0,0 +1,4 @@ +function_count_not +badhash +1 +1 diff --git a/test/tools/llvm-profdata/Inputs/bar3-1.profdata b/test/tools/llvm-profdata/Inputs/bar3-1.profdata deleted file mode 100644 index 5486e9d..0000000 --- a/test/tools/llvm-profdata/Inputs/bar3-1.profdata +++ /dev/null @@ -1,6 +0,0 @@ -bar -3 -3 -1 -2 -3 diff --git a/test/tools/llvm-profdata/Inputs/bar3-1.proftext b/test/tools/llvm-profdata/Inputs/bar3-1.proftext new file mode 100644 index 0000000..5486e9d --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/bar3-1.proftext @@ -0,0 +1,6 @@ +bar +3 +3 +1 +2 +3 diff --git a/test/tools/llvm-profdata/Inputs/c-general.profdata b/test/tools/llvm-profdata/Inputs/c-general.profdata deleted file mode 100644 index e8cef21..0000000 Binary files a/test/tools/llvm-profdata/Inputs/c-general.profdata and /dev/null differ diff --git a/test/tools/llvm-profdata/Inputs/c-general.profraw b/test/tools/llvm-profdata/Inputs/c-general.profraw new file mode 100644 index 0000000..e8cef21 Binary files /dev/null and b/test/tools/llvm-profdata/Inputs/c-general.profraw differ diff --git a/test/tools/llvm-profdata/Inputs/compat.profdata.v1 b/test/tools/llvm-profdata/Inputs/compat.profdata.v1 new file mode 100644 index 0000000..fd17459 Binary files /dev/null and b/test/tools/llvm-profdata/Inputs/compat.profdata.v1 differ diff --git a/test/tools/llvm-profdata/Inputs/empty.profdata b/test/tools/llvm-profdata/Inputs/empty.profdata deleted file mode 100644 index e69de29..0000000 diff --git a/test/tools/llvm-profdata/Inputs/empty.proftext b/test/tools/llvm-profdata/Inputs/empty.proftext new file mode 100644 index 0000000..e69de29 diff --git a/test/tools/llvm-profdata/Inputs/extra-word.profdata b/test/tools/llvm-profdata/Inputs/extra-word.profdata deleted file mode 100644 index 67a6629..0000000 --- a/test/tools/llvm-profdata/Inputs/extra-word.profdata +++ /dev/null @@ -1,2 +0,0 @@ -extra 1 word -1 diff --git a/test/tools/llvm-profdata/Inputs/extra-word.proftext b/test/tools/llvm-profdata/Inputs/extra-word.proftext new file mode 100644 index 0000000..67a6629 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/extra-word.proftext @@ -0,0 +1,2 @@ +extra 1 word +1 diff --git a/test/tools/llvm-profdata/Inputs/foo3-1.profdata b/test/tools/llvm-profdata/Inputs/foo3-1.profdata deleted file mode 100644 index 14a6200..0000000 --- a/test/tools/llvm-profdata/Inputs/foo3-1.profdata +++ /dev/null @@ -1,6 +0,0 @@ -foo -3 -3 -1 -2 -3 diff --git a/test/tools/llvm-profdata/Inputs/foo3-1.proftext b/test/tools/llvm-profdata/Inputs/foo3-1.proftext new file mode 100644 index 0000000..14a6200 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3-1.proftext @@ -0,0 +1,6 @@ +foo +3 +3 +1 +2 +3 diff --git a/test/tools/llvm-profdata/Inputs/foo3-2.profdata b/test/tools/llvm-profdata/Inputs/foo3-2.profdata deleted file mode 100644 index 801846e..0000000 --- a/test/tools/llvm-profdata/Inputs/foo3-2.profdata +++ /dev/null @@ -1,6 +0,0 @@ -foo -3 -3 -7 -5 -3 diff --git a/test/tools/llvm-profdata/Inputs/foo3-2.proftext b/test/tools/llvm-profdata/Inputs/foo3-2.proftext new file mode 100644 index 0000000..801846e --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3-2.proftext @@ -0,0 +1,6 @@ +foo +3 +3 +7 +5 +3 diff --git a/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata b/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata deleted file mode 100644 index 12157b9..0000000 --- a/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata +++ /dev/null @@ -1,13 +0,0 @@ -foo -3 -3 -2 -3 -5 - -bar -3 -3 -7 -11 -13 diff --git a/test/tools/llvm-profdata/Inputs/foo3bar3-1.proftext b/test/tools/llvm-profdata/Inputs/foo3bar3-1.proftext new file mode 100644 index 0000000..12157b9 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3bar3-1.proftext @@ -0,0 +1,13 @@ +foo +3 +3 +2 +3 +5 + +bar +3 +3 +7 +11 +13 diff --git a/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata b/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata deleted file mode 100644 index f1f10bd..0000000 --- a/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata +++ /dev/null @@ -1,13 +0,0 @@ -foo -3 -3 -17 -19 -23 - -bar -3 -3 -29 -31 -37 diff --git a/test/tools/llvm-profdata/Inputs/foo4-1.profdata b/test/tools/llvm-profdata/Inputs/foo4-1.profdata deleted file mode 100644 index 31d2a2c..0000000 --- a/test/tools/llvm-profdata/Inputs/foo4-1.profdata +++ /dev/null @@ -1,7 +0,0 @@ -foo -4 -4 -11 -22 -33 -44 diff --git a/test/tools/llvm-profdata/Inputs/foo4-2.profdata b/test/tools/llvm-profdata/Inputs/foo4-2.profdata deleted file mode 100644 index 01d8309..0000000 --- a/test/tools/llvm-profdata/Inputs/foo4-2.profdata +++ /dev/null @@ -1,7 +0,0 @@ -foo -4 -4 -7 -6 -5 -4 diff --git a/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata b/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata deleted file mode 100644 index 2b61c55..0000000 --- a/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata +++ /dev/null @@ -1,4 +0,0 @@ -invalid_count -1 -1 -1later diff --git a/test/tools/llvm-profdata/Inputs/invalid-count-later.proftext b/test/tools/llvm-profdata/Inputs/invalid-count-later.proftext new file mode 100644 index 0000000..2b61c55 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/invalid-count-later.proftext @@ -0,0 +1,4 @@ +invalid_count +1 +1 +1later diff --git a/test/tools/llvm-profdata/Inputs/no-counts.profdata b/test/tools/llvm-profdata/Inputs/no-counts.profdata deleted file mode 100644 index 5c1fa15..0000000 --- a/test/tools/llvm-profdata/Inputs/no-counts.profdata +++ /dev/null @@ -1,3 +0,0 @@ -no_counts -0 -0 diff --git a/test/tools/llvm-profdata/Inputs/no-counts.proftext b/test/tools/llvm-profdata/Inputs/no-counts.proftext new file mode 100644 index 0000000..5c1fa15 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/no-counts.proftext @@ -0,0 +1,3 @@ +no_counts +0 +0 diff --git a/test/tools/llvm-profdata/Inputs/overflow.profdata b/test/tools/llvm-profdata/Inputs/overflow.profdata deleted file mode 100644 index c9a9d69..0000000 --- a/test/tools/llvm-profdata/Inputs/overflow.profdata +++ /dev/null @@ -1,4 +0,0 @@ -overflow -1 -1 -9223372036854775808 diff --git a/test/tools/llvm-profdata/Inputs/sample-profile.proftext b/test/tools/llvm-profdata/Inputs/sample-profile.proftext new file mode 100644 index 0000000..9dc6d43 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/sample-profile.proftext @@ -0,0 +1,12 @@ +_Z3bari:20301:1437 +1: 1437 +_Z3fooi:7711:610 +1: 610 +main:184019:0 +4: 534 +4.2: 534 +5: 1075 +5.1: 1075 +6: 2080 +7: 534 +9: 2064 _Z3bari:1471 _Z3fooi:631 diff --git a/test/tools/llvm-profdata/c-general.test b/test/tools/llvm-profdata/c-general.test index 9b6cd7f..0143530 100644 --- a/test/tools/llvm-profdata/c-general.test +++ b/test/tools/llvm-profdata/c-general.test @@ -7,10 +7,10 @@ REGENERATE: $ CFE=$SRC/tools/clang REGENERATE: $ TESTDIR=$SRC/test/tools/llvm-profdata REGENERATE: $ CFE_TESTDIR=$CFE/test/Profile REGENERATE: $ clang -o a.out -fprofile-instr-generate $CFE_TESTDIR/test/Profile/c-general.c -REGENERATE: $ LLVM_PROFILE_FILE=$TESTDIR/Inputs/c-general.profdata ./a.out +REGENERATE: $ LLVM_PROFILE_FILE=$TESTDIR/Inputs/c-general.profraw ./a.out -RUN: llvm-profdata show %p/Inputs/c-general.profdata -o - | FileCheck %s -check-prefix=CHECK -RUN: llvm-profdata show %p/Inputs/c-general.profdata -o - --function=switches | FileCheck %s -check-prefix=SWITCHES -check-prefix=CHECK +RUN: llvm-profdata show %p/Inputs/c-general.profraw -o - | FileCheck %s -check-prefix=CHECK +RUN: llvm-profdata show %p/Inputs/c-general.profraw -o - --function=switches | FileCheck %s -check-prefix=SWITCHES -check-prefix=CHECK SWITCHES-LABEL: Counters: SWITCHES-NEXT: switches: diff --git a/test/tools/llvm-profdata/compat.proftext b/test/tools/llvm-profdata/compat.proftext new file mode 100644 index 0000000..14da337 --- /dev/null +++ b/test/tools/llvm-profdata/compat.proftext @@ -0,0 +1,47 @@ +# Compatibility tests for older profile format versions. These ensure +# that we don't break compatibility with an older profile version +# without noticing it. + +# The input file at %S/Inputs/compat.profdata.v1 was generated with +# llvm-profdata merge from r214548. + +# RUN: llvm-profdata show %S/Inputs/compat.profdata.v1 --function function_count_only --counts | FileCheck %s -check-prefix=FUNC_COUNT_ONLY +function_count_only +0 +1 +97531 +# FUNC_COUNT_ONLY: Hash: 0x{{0+$}} +# FUNC_COUNT_ONLY-NEXT: Counters: 1 +# FUNC_COUNT_ONLY-NEXT: Function count: 97531 +# FUNC_COUNT_ONLY-NEXT: Block counts: [] + +# RUN: llvm-profdata show %S/Inputs/compat.profdata.v1 --function "name with spaces" --counts | FileCheck %s -check-prefix=SPACES +name with spaces +1024 +2 +0 +0 +# SPACES: Hash: 0x{{0+}}400 +# SPACES-NEXT: Counters: 2 +# SPACES-NEXT: Function count: 0 +# SPACES-NEXT: Block counts: [0] + +# RUN: llvm-profdata show %S/Inputs/compat.profdata.v1 --function large_numbers --counts | FileCheck %s -check-prefix=LARGENUM +large_numbers +4611686018427387903 +6 +2305843009213693952 +1152921504606846976 +576460752303423488 +288230376151711744 +144115188075855872 +72057594037927936 +# LARGENUM: Hash: 0x3fffffffffffffff +# LARGENUM-NEXT: Counters: 6 +# LARGENUM-NEXT: Function count: 2305843009213693952 +# LARGENUM-NEXT: Block counts: [1152921504606846976, 576460752303423488, 288230376151711744, 144115188075855872, 72057594037927936] + +# RUN: llvm-profdata show %S/Inputs/compat.profdata.v1 | FileCheck %s -check-prefix=SUMMARY +# SUMMARY: Total functions: 3 +# SUMMARY: Maximum function count: 2305843009213693952 +# SUMMARY: Maximum internal block count: 1152921504606846976 diff --git a/test/tools/llvm-profdata/count-mismatch.proftext b/test/tools/llvm-profdata/count-mismatch.proftext new file mode 100644 index 0000000..1a2e73f --- /dev/null +++ b/test/tools/llvm-profdata/count-mismatch.proftext @@ -0,0 +1,40 @@ +# Make sure we don't try to combine counters with the same function +# name and a matching hash if the number of counters differs + +# RUN: llvm-profdata merge %s -o %t.profdata 2>&1 | FileCheck -check-prefix=MERGE_ERRS %s +# RUN: llvm-profdata show %t.profdata -all-functions -counts > %t.out +# RUN: FileCheck %s -input-file %t.out +foo +1024 +4 +1 +2 +4 +8 + +# The hash matches, but we can't combine these because the number of +# counters differs. +# MERGE_ERRS: count-mismatch.proftext: foo: Function count mismatch +foo +1024 +3 +2 +4 +8 + +# This one does match, so it should combine with the first just fine. +# CHECK: Hash: 0x{{0+}}400 +# CHECK-NEXT: Counters: 4 +# CHECK-NEXT: Function count: 5 +# CHECK-NEXT: Block counts: [10, 20, 40] +foo +1024 +4 +4 +8 +16 +32 + +# CHECK: Total functions: 1 +# CHECK: Maximum function count: 5 +# CHECK: Maximum internal block count: 40 diff --git a/test/tools/llvm-profdata/errors.test b/test/tools/llvm-profdata/errors.test deleted file mode 100644 index 28262ef..0000000 --- a/test/tools/llvm-profdata/errors.test +++ /dev/null @@ -1,16 +0,0 @@ -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo4-1.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=HASH -HASH: foo4-1.profdata: foo: Function hash mismatch - -RUN: llvm-profdata merge %p/Inputs/overflow.profdata %p/Inputs/overflow.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=OVERFLOW -OVERFLOW: overflow.profdata: overflow: Counter overflow - -RUN: not llvm-profdata show %p/Inputs/invalid-count-later.profdata 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER -RUN: not llvm-profdata merge %p/Inputs/invalid-count-later.profdata %p/Inputs/invalid-count-later.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER -INVALID-COUNT-LATER: error: {{.*}}invalid-count-later.profdata: Malformed profile data - -RUN: not llvm-profdata show %p/Inputs/bad-hash.profdata 2>&1 | FileCheck %s --check-prefix=BAD-HASH -RUN: not llvm-profdata merge %p/Inputs/bad-hash.profdata %p/Inputs/bad-hash.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=BAD-HASH -BAD-HASH: error: {{.*}}bad-hash.profdata: Malformed profile data - -RUN: not llvm-profdata show %p/Inputs/no-counts.profdata 2>&1 | FileCheck %s --check-prefix=NO-COUNTS -NO-COUNTS: error: {{.*}}no-counts.profdata: Malformed profile data diff --git a/test/tools/llvm-profdata/general.proftext b/test/tools/llvm-profdata/general.proftext new file mode 100644 index 0000000..591d262 --- /dev/null +++ b/test/tools/llvm-profdata/general.proftext @@ -0,0 +1,56 @@ + + +# RUN: llvm-profdata merge %s -o %t.profdata + +# RUN: llvm-profdata show %t.profdata --function function_count_only --counts | FileCheck %s -check-prefix=FUNC_COUNT_ONLY +function_count_only +0 +1 +97531 +# FUNC_COUNT_ONLY: Hash: 0x{{0+$}} +# FUNC_COUNT_ONLY-NEXT: Counters: 1 +# FUNC_COUNT_ONLY-NEXT: Function count: 97531 +# FUNC_COUNT_ONLY-NEXT: Block counts: [] + +# RUN: llvm-profdata show %t.profdata --function "name with spaces" --counts | FileCheck %s -check-prefix=SPACES +name with spaces +1024 +2 +0 +0 +# SPACES: Hash: 0x{{0+}}400 +# SPACES-NEXT: Counters: 2 +# SPACES-NEXT: Function count: 0 +# SPACES-NEXT: Block counts: [0] + +# RUN: llvm-profdata show %t.profdata --function large_numbers --counts | FileCheck %s -check-prefix=LARGENUM +large_numbers +4611686018427387903 +6 +2305843009213693952 +1152921504606846976 +576460752303423488 +288230376151711744 +144115188075855872 +72057594037927936 +# LARGENUM: Hash: 0x3fffffffffffffff +# LARGENUM-NEXT: Counters: 6 +# LARGENUM-NEXT: Function count: 2305843009213693952 +# LARGENUM-NEXT: Block counts: [1152921504606846976, 576460752303423488, 288230376151711744, 144115188075855872, 72057594037927936] + +# RUN: llvm-profdata show %t.profdata --function NOSUCHFUNC | FileCheck %s -check-prefix=NOSUCHFUNC +# NOSUCHFUNC-NOT: Counters: +# NOSUCHFUNC: Functions shown: 0 + +# RUN: llvm-profdata show %t.profdata --function _ | FileCheck %s -check-prefix=SOMEFUNCS +# SOMEFUNCS: Counters: +# SOMEFUNCS: function_count_only: +# SOMEFUNCS: large_numbers: +# SOMEFUNCS: Functions shown: 2 + +# RUN: llvm-profdata show %t.profdata | FileCheck %s -check-prefix=SUMMARY +# SUMMARY-NOT: Counters: +# SUMMARY-NOT: Functions shown: +# SUMMARY: Total functions: 3 +# SUMMARY: Maximum function count: 2305843009213693952 +# SUMMARY: Maximum internal block count: 1152921504606846976 diff --git a/test/tools/llvm-profdata/hash-mismatch.proftext b/test/tools/llvm-profdata/hash-mismatch.proftext new file mode 100644 index 0000000..fe0d4fb --- /dev/null +++ b/test/tools/llvm-profdata/hash-mismatch.proftext @@ -0,0 +1,37 @@ +# If we see the same function name, but with different hashes, make +# sure we keep both. + +# RUN: llvm-profdata merge %s -o %t 2>&1 +# RUN: llvm-profdata show %t -all-functions -counts > %t.out + +# The function ordering is non-deterministic, so we need to do our +# checks in multiple runs. +# RUN: FileCheck -check-prefix=FOO3 -check-prefix=BOTH %s -input-file %t.out +# RUN: FileCheck -check-prefix=FOO4 -check-prefix=BOTH %s -input-file %t.out + +# FOO3: Hash: 0x{{0+}}3 +# FOO3-NEXT: Counters: 3 +# FOO3-NEXT: Function count: 1 +# FOO3-NEXT: Block counts: [2, 3] +foo +3 +3 +1 +2 +3 + +# FOO4: Hash: 0x{{0+}}4 +# FOO4-NEXT: Counters: 4 +# FOO4-NEXT: Function count: 11 +# FOO4-NEXT: Block counts: [22, 33, 44] +foo +4 +4 +11 +22 +33 +44 + +# BOTH: Total functions: 2 +# BOTH: Maximum function count: 11 +# BOTH: Maximum internal block count: 44 diff --git a/test/tools/llvm-profdata/lit.local.cfg b/test/tools/llvm-profdata/lit.local.cfg new file mode 100644 index 0000000..d44913a --- /dev/null +++ b/test/tools/llvm-profdata/lit.local.cfg @@ -0,0 +1 @@ +config.suffixes.add('.proftext') diff --git a/test/tools/llvm-profdata/multiple-inputs.test b/test/tools/llvm-profdata/multiple-inputs.test new file mode 100644 index 0000000..616efe9 --- /dev/null +++ b/test/tools/llvm-profdata/multiple-inputs.test @@ -0,0 +1,51 @@ +Some very basic tests for the multiple input cases. + +RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-2.proftext -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 +RUN: llvm-profdata merge %p/Inputs/foo3-2.proftext %p/Inputs/foo3-1.proftext -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 +FOO3: foo: +FOO3: Counters: 3 +FOO3: Function count: 8 +FOO3: Block counts: [7, 6] +FOO3: Total functions: 1 +FOO3: Maximum function count: 8 +FOO3: Maximum internal block count: 7 + +RUN: llvm-profdata merge %p/Inputs/empty.proftext %p/Inputs/foo3-1.proftext -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3EMPTY +FOO3EMPTY: foo: +FOO3EMPTY: Counters: 3 +FOO3EMPTY: Function count: 1 +FOO3EMPTY: Block counts: [2, 3] +FOO3EMPTY: Total functions: 1 +FOO3EMPTY: Maximum function count: 1 +FOO3EMPTY: Maximum internal block count: 3 + +RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3bar3-1.proftext -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 +FOO3FOO3BAR3: foo: +FOO3FOO3BAR3: Counters: 3 +FOO3FOO3BAR3: Function count: 3 +FOO3FOO3BAR3: Block counts: [5, 8] +FOO3FOO3BAR3: bar: +FOO3FOO3BAR3: Counters: 3 +FOO3FOO3BAR3: Function count: 7 +FOO3FOO3BAR3: Block counts: [11, 13] +FOO3FOO3BAR3: Total functions: 2 +FOO3FOO3BAR3: Maximum function count: 7 +FOO3FOO3BAR3: Maximum internal block count: 13 + +RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/bar3-1.proftext -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=DISJOINT +DISJOINT: foo: +DISJOINT: Counters: 3 +DISJOINT: Function count: 1 +DISJOINT: Block counts: [2, 3] +DISJOINT: bar: +DISJOINT: Counters: 3 +DISJOINT: Function count: 1 +DISJOINT: Block counts: [2, 3] +DISJOINT: Total functions: 2 +DISJOINT: Maximum function count: 1 +DISJOINT: Maximum internal block count: 3 diff --git a/test/tools/llvm-profdata/overflow.proftext b/test/tools/llvm-profdata/overflow.proftext new file mode 100644 index 0000000..cbf3bf1 --- /dev/null +++ b/test/tools/llvm-profdata/overflow.proftext @@ -0,0 +1,12 @@ +# RUN: llvm-profdata merge %s -o %t.out 2>&1 | FileCheck %s +# CHECK: overflow.proftext: overflow: Counter overflow + +overflow +1 +1 +9223372036854775808 + +overflow +1 +1 +9223372036854775808 diff --git a/test/tools/llvm-profdata/raw-two-profiles.test b/test/tools/llvm-profdata/raw-two-profiles.test index 3260836..be78793 100644 --- a/test/tools/llvm-profdata/raw-two-profiles.test +++ b/test/tools/llvm-profdata/raw-two-profiles.test @@ -39,11 +39,9 @@ RUN: printf '\0\0\0\0\0' >> %t-foo-padded.profraw RUN: cat %t-bar.profraw > %t-bar-padded.profraw RUN: printf '\0\0\0\0\0' >> %t-bar-padded.profraw -RUN: cat %t-foo.profraw %t-bar.profraw > %t-nopad.profraw RUN: cat %t-foo-padded.profraw %t-bar.profraw > %t-pad-between.profraw RUN: cat %t-foo-padded.profraw %t-bar-padded.profraw > %t-pad.profraw -RUN: llvm-profdata show %t-nopad.profraw -all-functions -counts | FileCheck %s RUN: llvm-profdata show %t-pad-between.profraw -all-functions -counts | FileCheck %s RUN: llvm-profdata show %t-pad.profraw -all-functions -counts | FileCheck %s diff --git a/test/tools/llvm-profdata/sample-profile-basic.test b/test/tools/llvm-profdata/sample-profile-basic.test new file mode 100644 index 0000000..0651c51 --- /dev/null +++ b/test/tools/llvm-profdata/sample-profile-basic.test @@ -0,0 +1,30 @@ +Basic tests for sample profiles. + +1- Show all functions +RUN: llvm-profdata show --sample %p/Inputs/sample-profile.proftext | FileCheck %s --check-prefix=SHOW1 +SHOW1: Function: main: 184019, 0, 7 sampled lines +SHOW1: line offset: 9, discriminator: 0, number of samples: 2064, calls: _Z3fooi:631 _Z3bari:1471 +SHOW1: Function: _Z3fooi: 7711, 610, 1 sampled lines +SHOW1: Function: _Z3bari: 20301, 1437, 1 sampled lines +SHOW1: line offset: 1, discriminator: 0, number of samples: 1437 + +2- Show only bar +RUN: llvm-profdata show --sample --function=_Z3bari %p/Inputs/sample-profile.proftext | FileCheck %s --check-prefix=SHOW2 +SHOW2: Function: _Z3bari: 20301, 1437, 1 sampled lines +SHOW2: line offset: 1, discriminator: 0, number of samples: 1437 +SHOW2-NOT: Function: main: 184019, 0, 7 sampled lines +SHOW2-NOT: Function: _Z3fooi: 7711, 610, 1 sampled lines + +3- Convert the profile to binary encoding and check that they are both + identical. +RUN: llvm-profdata merge --sample %p/Inputs/sample-profile.proftext --binary -o - | llvm-profdata show --sample - -o %t-binary +RUN: llvm-profdata show --sample %p/Inputs/sample-profile.proftext -o %t-text +RUN: diff %t-binary %t-text + +4- Merge the binary and text encodings of the profile and check that the + counters have doubled. +RUN: llvm-profdata merge --sample %p/Inputs/sample-profile.proftext -o %t-binprof +RUN: llvm-profdata merge --sample --text %p/Inputs/sample-profile.proftext %t-binprof -o - | FileCheck %s --check-prefix=MERGE1 +MERGE1: main:368038:0 +MERGE1: 9: 4128 _Z3fooi:1262 _Z3bari:2942 +MERGE1: _Z3fooi:15422:1220 diff --git a/test/tools/llvm-profdata/simple.test b/test/tools/llvm-profdata/simple.test deleted file mode 100644 index 18741dd..0000000 --- a/test/tools/llvm-profdata/simple.test +++ /dev/null @@ -1,77 +0,0 @@ -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3-2.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 -RUN: llvm-profdata merge %p/Inputs/foo3-2.profdata %p/Inputs/foo3-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 -FOO3: foo: -FOO3: Counters: 3 -FOO3: Function count: 8 -FOO3: Block counts: [7, 6] -FOO3: Total functions: 1 -FOO3: Maximum function count: 8 -FOO3: Maximum internal block count: 7 - -RUN: llvm-profdata merge %p/Inputs/foo4-1.profdata %p/Inputs/foo4-2.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4 -RUN: llvm-profdata merge %p/Inputs/foo4-2.profdata %p/Inputs/foo4-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4 -FOO4: foo: -FOO4: Counters: 4 -FOO4: Function count: 18 -FOO4: Block counts: [28, 38, 48] -FOO4: Total functions: 1 -FOO4: Maximum function count: 18 -FOO4: Maximum internal block count: 48 - -RUN: llvm-profdata merge %p/Inputs/foo3bar3-1.profdata %p/Inputs/foo3bar3-2.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 -RUN: llvm-profdata merge %p/Inputs/foo3bar3-2.profdata %p/Inputs/foo3bar3-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 -FOO3BAR3: foo: -FOO3BAR3: Counters: 3 -FOO3BAR3: Function count: 19 -FOO3BAR3: Block counts: [22, 28] -FOO3BAR3: bar: -FOO3BAR3: Counters: 3 -FOO3BAR3: Function count: 36 -FOO3BAR3: Block counts: [42, 50] -FOO3BAR3: Total functions: 2 -FOO3BAR3: Maximum function count: 36 -FOO3BAR3: Maximum internal block count: 50 - -RUN: llvm-profdata merge %p/Inputs/empty.profdata %p/Inputs/foo3-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3EMPTY -FOO3EMPTY: foo: -FOO3EMPTY: Counters: 3 -FOO3EMPTY: Function count: 1 -FOO3EMPTY: Block counts: [2, 3] -FOO3EMPTY: Total functions: 1 -FOO3EMPTY: Maximum function count: 1 -FOO3EMPTY: Maximum internal block count: 3 - -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3bar3-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 -FOO3FOO3BAR3: foo: -FOO3FOO3BAR3: Counters: 3 -FOO3FOO3BAR3: Function count: 3 -FOO3FOO3BAR3: Block counts: [5, 8] -FOO3FOO3BAR3: bar: -FOO3FOO3BAR3: Counters: 3 -FOO3FOO3BAR3: Function count: 7 -FOO3FOO3BAR3: Block counts: [11, 13] -FOO3FOO3BAR3: Total functions: 2 -FOO3FOO3BAR3: Maximum function count: 7 -FOO3FOO3BAR3: Maximum internal block count: 13 - -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/bar3-1.profdata -o %t -RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=DISJOINT -DISJOINT: foo: -DISJOINT: Counters: 3 -DISJOINT: Function count: 1 -DISJOINT: Block counts: [2, 3] -DISJOINT: bar: -DISJOINT: Counters: 3 -DISJOINT: Function count: 1 -DISJOINT: Block counts: [2, 3] -DISJOINT: Total functions: 2 -DISJOINT: Maximum function count: 1 -DISJOINT: Maximum internal block count: 3 diff --git a/test/tools/llvm-profdata/text-format-errors.test b/test/tools/llvm-profdata/text-format-errors.test new file mode 100644 index 0000000..01513e4 --- /dev/null +++ b/test/tools/llvm-profdata/text-format-errors.test @@ -0,0 +1,10 @@ +RUN: not llvm-profdata show %p/Inputs/invalid-count-later.proftext 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER +RUN: not llvm-profdata merge %p/Inputs/invalid-count-later.proftext %p/Inputs/invalid-count-later.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER +INVALID-COUNT-LATER: error: {{.*}}invalid-count-later.proftext: Malformed profile data + +RUN: not llvm-profdata show %p/Inputs/bad-hash.proftext 2>&1 | FileCheck %s --check-prefix=BAD-HASH +RUN: not llvm-profdata merge %p/Inputs/bad-hash.proftext %p/Inputs/bad-hash.proftext -o %t.out 2>&1 | FileCheck %s --check-prefix=BAD-HASH +BAD-HASH: error: {{.*}}bad-hash.proftext: Malformed profile data + +RUN: not llvm-profdata show %p/Inputs/no-counts.proftext 2>&1 | FileCheck %s --check-prefix=NO-COUNTS +NO-COUNTS: error: {{.*}}no-counts.proftext: Malformed profile data diff --git a/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386 new file mode 100644 index 0000000..06ec471 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386 new file mode 100644 index 0000000..0aeed44 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 b/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 new file mode 100644 index 0000000..fdfda5e Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 differ diff --git a/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386 b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386 new file mode 100755 index 0000000..4a72304 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386 b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386 new file mode 100755 index 0000000..4adaf2e Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64 b/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64 new file mode 100644 index 0000000..4c156dc Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/file-aux-record.yaml b/test/tools/llvm-readobj/Inputs/file-aux-record.yaml index d19afaf..89d6761 100644 --- a/test/tools/llvm-readobj/Inputs/file-aux-record.yaml +++ b/test/tools/llvm-readobj/Inputs/file-aux-record.yaml @@ -6,7 +6,7 @@ symbols: - !Symbol Name: .file Value: 0 - SectionNumber: 65534 + SectionNumber: -2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_FILE @@ -14,7 +14,7 @@ symbols: - !Symbol Name: '@comp.id' Value: 13485607 - SectionNumber: 65535 + SectionNumber: -1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC diff --git a/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml b/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml index 8d8f684..d5b1eec 100644 --- a/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml +++ b/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml @@ -6,7 +6,7 @@ symbols: - !Symbol Name: .file Value: 0 - SectionNumber: 65534 + SectionNumber: -2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_FILE @@ -14,7 +14,7 @@ symbols: - !Symbol Name: '@comp.id' Value: 13485607 - SectionNumber: 65535 + SectionNumber: -1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC diff --git a/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386 b/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386 new file mode 100644 index 0000000..72077ad Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64 b/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64 new file mode 100644 index 0000000..5ee198e Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64 differ diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 old mode 100644 new mode 100755 index 1672d3a..213331f Binary files a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 and b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 differ diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 old mode 100644 new mode 100755 index 30bfe79..a35cc11 Binary files a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 and b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368 new file mode 100644 index 0000000..8a901f6 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368 differ diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64 new file mode 100644 index 0000000..f1c2e1f Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 old mode 100644 new mode 100755 index a0196ff..41479ed Binary files a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 and b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 differ diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 old mode 100644 new mode 100755 index 14f65ab..8d30f32 Binary files a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 and b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368 new file mode 100644 index 0000000..4269b21 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368 differ diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64 new file mode 100644 index 0000000..65a1af0 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386 index 15e43ef..9c24ac8 100644 Binary files a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386 and b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64 b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64 index cd63173..356437e 100644 Binary files a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64 and b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 index d39e60c..a1034cb 100644 Binary files a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 and b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.py b/test/tools/llvm-readobj/Inputs/relocs.py index af9459d..ffddf3d 100644 --- a/test/tools/llvm-readobj/Inputs/relocs.py +++ b/test/tools/llvm-readobj/Inputs/relocs.py @@ -327,6 +327,10 @@ def patchCoff(path, relocs): machine_type = f.uint16() section_count = f.uint16() + + # Zero out timestamp to prevent churn when regenerating COFF files. + f.writeUInt32(0) + f.seek(20) sections = [CoffSection(f) for idx in range(section_count)] @@ -617,6 +621,8 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_LDST32_ABS_LO12_NC = 0x11d R_AARCH64_LDST64_ABS_LO12_NC = 0x11e R_AARCH64_LDST128_ABS_LO12_NC = 0x12b + R_AARCH64_GOTREL64 = 0x133 + R_AARCH64_GOTREL32 = 0x134 R_AARCH64_ADR_GOT_PAGE = 0x137 R_AARCH64_LD64_GOT_LO12_NC = 0x138 R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b @@ -660,6 +666,15 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233 R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234 R_AARCH64_TLSDESC_CALL = 0x239 + R_AARCH64_COPY = 0x400 + R_AARCH64_GLOB_DAT = 0x401 + R_AARCH64_JUMP_SLOT = 0x402 + R_AARCH64_RELATIVE = 0x403 + R_AARCH64_TLS_DTPREL64 = 0x404 + R_AARCH64_TLS_DTPMOD64 = 0x405 + R_AARCH64_TLS_TPREL64 = 0x406 + R_AARCH64_TLSDESC = 0x407 + R_AARCH64_IRELATIVE = 0x408 class Relocs_Elf_ARM(Enum): R_ARM_NONE = 0x00 diff --git a/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel b/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel new file mode 100644 index 0000000..c523908 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel differ diff --git a/test/tools/llvm-readobj/bigobj.test b/test/tools/llvm-readobj/bigobj.test new file mode 100644 index 0000000..1097214 --- /dev/null +++ b/test/tools/llvm-readobj/bigobj.test @@ -0,0 +1,139 @@ +RUN: llvm-readobj --file-headers --sections --symbols --relocations %p/Inputs/bigobj.coff-x86-64 | FileCheck %s + +CHECK: File: {{(.*[/\\])?}}bigobj.coff-x86-64 +CHECK-NEXT: Format: COFF-x86-64 +CHECK-NEXT: Arch: x86_64 +CHECK-NEXT: AddressSize: 64bit +CHECK-NEXT: ImageFileHeader { +CHECK-NEXT: Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664) +CHECK-NEXT: SectionCount: 3 +CHECK-NEXT: TimeDateStamp: 1970-01-01 00:00:00 (0x0) +CHECK-NEXT: PointerToSymbolTable: 0xB0 +CHECK-NEXT: SymbolCount: 8 +CHECK-NEXT: OptionalHeaderSize: 0 +CHECK-NEXT: Characteristics [ (0x0) +CHECK-NEXT: ] +CHECK-NEXT: } +CHECK-NEXT: Sections [ +CHECK-NEXT: Section { +CHECK-NEXT: Number: 1 +CHECK-NEXT: Name: .text (2E 74 65 78 74 00 00 00) +CHECK-NEXT: VirtualSize: 0x0 +CHECK-NEXT: VirtualAddress: 0x0 +CHECK-NEXT: RawDataSize: 0 +CHECK-NEXT: PointerToRawData: 0x0 +CHECK-NEXT: PointerToRelocations: 0x0 +CHECK-NEXT: PointerToLineNumbers: 0x0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Characteristics [ (0x60500020) +CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000) +CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20) +CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000) +CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000) +CHECK-NEXT: ] +CHECK-NEXT: } +CHECK-NEXT: Section { +CHECK-NEXT: Number: 2 +CHECK-NEXT: Name: .data (2E 64 61 74 61 00 00 00) +CHECK-NEXT: VirtualSize: 0x0 +CHECK-NEXT: VirtualAddress: 0x0 +CHECK-NEXT: RawDataSize: 0 +CHECK-NEXT: PointerToRawData: 0x0 +CHECK-NEXT: PointerToRelocations: 0x0 +CHECK-NEXT: PointerToLineNumbers: 0x0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Characteristics [ (0xC0500040) +CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000) +CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40) +CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000) +CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000) +CHECK-NEXT: ] +CHECK-NEXT: } +CHECK-NEXT: Section { +CHECK-NEXT: Number: 3 +CHECK-NEXT: Name: .bss (2E 62 73 73 00 00 00 00) +CHECK-NEXT: VirtualSize: 0x0 +CHECK-NEXT: VirtualAddress: 0x0 +CHECK-NEXT: RawDataSize: 0 +CHECK-NEXT: PointerToRawData: 0x0 +CHECK-NEXT: PointerToRelocations: 0x0 +CHECK-NEXT: PointerToLineNumbers: 0x0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Characteristics [ (0xC0500080) +CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000) +CHECK-NEXT: IMAGE_SCN_CNT_UNINITIALIZED_DATA (0x80) +CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000) +CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000) +CHECK-NEXT: ] +CHECK-NEXT: } +CHECK-NEXT: ] +CHECK-NEXT: Relocations [ +CHECK-NEXT: ] +CHECK-NEXT: Symbols [ +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: .file +CHECK-NEXT: Value: 0 +CHECK-NEXT: Section: IMAGE_SYM_DEBUG (-2) +CHECK-NEXT: BaseType: Null (0x0) +CHECK-NEXT: ComplexType: Null (0x0) +CHECK-NEXT: StorageClass: File (0x67) +CHECK-NEXT: AuxSymbolCount: 1 +CHECK-NEXT: AuxFileRecord { +CHECK-NEXT: FileName: fake +CHECK-NEXT: } +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: .text +CHECK-NEXT: Value: 0 +CHECK-NEXT: Section: .text (1) +CHECK-NEXT: BaseType: Null (0x0) +CHECK-NEXT: ComplexType: Null (0x0) +CHECK-NEXT: StorageClass: Static (0x3) +CHECK-NEXT: AuxSymbolCount: 1 +CHECK-NEXT: AuxSectionDef { +CHECK-NEXT: Length: 0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Checksum: 0x0 +CHECK-NEXT: Number: 0 +CHECK-NEXT: Selection: 0x0 +CHECK-NEXT: } +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: .data +CHECK-NEXT: Value: 0 +CHECK-NEXT: Section: .data (2) +CHECK-NEXT: BaseType: Null (0x0) +CHECK-NEXT: ComplexType: Null (0x0) +CHECK-NEXT: StorageClass: Static (0x3) +CHECK-NEXT: AuxSymbolCount: 1 +CHECK-NEXT: AuxSectionDef { +CHECK-NEXT: Length: 0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Checksum: 0x0 +CHECK-NEXT: Number: 0 +CHECK-NEXT: Selection: 0x0 +CHECK-NEXT: } +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: .bss +CHECK-NEXT: Value: 0 +CHECK-NEXT: Section: .bss (3) +CHECK-NEXT: BaseType: Null (0x0) +CHECK-NEXT: ComplexType: Null (0x0) +CHECK-NEXT: StorageClass: Static (0x3) +CHECK-NEXT: AuxSymbolCount: 1 +CHECK-NEXT: AuxSectionDef { +CHECK-NEXT: Length: 0 +CHECK-NEXT: RelocationCount: 0 +CHECK-NEXT: LineNumberCount: 0 +CHECK-NEXT: Checksum: 0x0 +CHECK-NEXT: Number: 0 +CHECK-NEXT: Selection: 0x0 +CHECK-NEXT: } +CHECK-NEXT: } +CHECK-NEXT: ] diff --git a/test/tools/llvm-readobj/codeview-linetables.test b/test/tools/llvm-readobj/codeview-linetables.test index 4854d7a..e5e344b 100644 --- a/test/tools/llvm-readobj/codeview-linetables.test +++ b/test/tools/llvm-readobj/codeview-linetables.test @@ -1,11 +1,31 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; The following two object files were generated using the following command: +; D:\> cl /Z7 /c source.c +; with the following contents of D:\source.c: +; void z(void); +; +; void x(void) { +; z(); +; } +; +; void y(void) { +; z(); +; } +; +; void f(void) { +; x(); +; y(); +; z(); +; } +; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively. RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \ RUN: | FileCheck %s -check-prefix MFUN32 +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \ +RUN: | FileCheck %s -check-prefix MFUN32 RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \ RUN: | FileCheck %s -check-prefix MFUN64 -RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-i368 \ -RUN: | FileCheck %s -check-prefix MFILE32 -RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \ -RUN: | FileCheck %s -check-prefix MFILE64 +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \ +RUN: | FileCheck %s -check-prefix MFUN64 MFUN32: CodeViewLineTables [ MFUN32-NEXT: Magic: 0x4 @@ -20,6 +40,12 @@ MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF1 MFUN32-NEXT: PayloadSize: 0x4B +MFUN32: ProcStart { +MFUN32-NEXT: DisplayName: x +MFUN32-NEXT: Section: _x +MFUN32-NEXT: CodeSize: 0xA +MFUN32-NEXT: } +MFUN32-NEXT: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF2 @@ -33,6 +59,12 @@ MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF1 MFUN32-NEXT: PayloadSize: 0x4B +MFUN32: ProcStart { +MFUN32-NEXT: DisplayName: y +MFUN32-NEXT: Section: _y +MFUN32-NEXT: CodeSize: 0xA +MFUN32-NEXT: } +MFUN32-NEXT: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF2 @@ -46,6 +78,12 @@ MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF1 MFUN32-NEXT: PayloadSize: 0x4B +MFUN32: ProcStart { +MFUN32-NEXT: DisplayName: f +MFUN32-NEXT: Section: _f +MFUN32-NEXT: CodeSize: 0x14 +MFUN32-NEXT: } +MFUN32-NEXT: ProcEnd MFUN32: ] MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF2 @@ -107,6 +145,12 @@ MFUN64: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF1 MFUN64-NEXT: PayloadSize: 0x4B +MFUN64: ProcStart { +MFUN64-NEXT: DisplayName: x +MFUN64-NEXT: Section: x +MFUN64-NEXT: CodeSize: 0xE +MFUN64-NEXT: } +MFUN64-NEXT: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF2 @@ -116,6 +160,12 @@ MFUN64-NEXT: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF1 MFUN64-NEXT: PayloadSize: 0x4B +MFUN64: ProcStart { +MFUN64-NEXT: DisplayName: y +MFUN64-NEXT: Section: y +MFUN64-NEXT: CodeSize: 0xE +MFUN64-NEXT: } +MFUN64-NEXT: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF2 @@ -125,6 +175,12 @@ MFUN64-NEXT: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF1 MFUN64-NEXT: PayloadSize: 0x4B +MFUN64: ProcStart { +MFUN64-NEXT: DisplayName: f +MFUN64-NEXT: Section: f +MFUN64-NEXT: CodeSize: 0x18 +MFUN64-NEXT: } +MFUN64-NEXT: ProcEnd MFUN64: ] MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF2 @@ -177,6 +233,30 @@ MFUN64-NEXT: ] MFUN64-NEXT: ] MFUN64-NEXT: ] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; The following two object files were generated using the following command: +; D:\> cl /Z7 /c input.c +; with the following contents of D:\input.c: +; void g(void); +; +; void f(void) { +; #line 1 "one.c" +; g(); +; #line 2 "two.c" +; g(); +; #line 7 "one.c" +; g(); +; } +; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively. +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-i368 \ +RUN: | FileCheck %s -check-prefix MFILE32 +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-i368 \ +RUN: | FileCheck %s -check-prefix MFILE32 +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \ +RUN: | FileCheck %s -check-prefix MFILE64 +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \ +RUN: | FileCheck %s -check-prefix MFILE64 + MFILE32: CodeViewLineTables [ MFILE32-NEXT: Magic: 0x4 MFILE32-NEXT: Subsection [ @@ -190,6 +270,12 @@ MFILE32: ] MFILE32-NEXT: Subsection [ MFILE32-NEXT: Type: 0xF1 MFILE32-NEXT: PayloadSize: 0x4B +MFILE32: ProcStart { +MFILE32-NEXT: DisplayName: f +MFILE32-NEXT: Section: _f +MFILE32-NEXT: CodeSize: 0x14 +MFILE32-NEXT: } +MFILE32-NEXT: ProcEnd MFILE32: ] MFILE32-NEXT: Subsection [ MFILE32-NEXT: Type: 0xF2 @@ -240,6 +326,12 @@ MFILE64: ] MFILE64-NEXT: Subsection [ MFILE64-NEXT: Type: 0xF1 MFILE64-NEXT: PayloadSize: 0x4B +MFILE64: ProcStart { +MFILE64-NEXT: DisplayName: f +MFILE64-NEXT: Section: f +MFILE64-NEXT: CodeSize: 0x18 +MFILE64-NEXT: } +MFILE64-NEXT: ProcEnd MFILE64: ] MFILE64-NEXT: Subsection [ MFILE64-NEXT: Type: 0xF2 @@ -280,3 +372,53 @@ MFILE64-NEXT: +0x13: 8 MFILE64-NEXT: ] MFILE64-NEXT: ] MFILE64-NEXT: ] + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; The following object files were generated using the following command: +; C:\src> cl /Z7 /Gy /c test.cc +; with the following contents of C:\src\test.cc: +; int f() +; { +; return 0; +; } +; +; int g() +; { +; return 0; +; } +; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively. +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \ +RUN: | FileCheck %s -check-prefix MCOMDAT +RUN: llvm-readobj -s -codeview-linetables %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \ +RUN: | FileCheck %s -check-prefix MCOMDAT + +MCOMDAT: ProcStart { +MCOMDAT-NEXT: DisplayName: f +MCOMDAT-NEXT: Section: ?f@@YAHXZ +MCOMDAT-NEXT: CodeSize: 0x7 +MCOMDAT-NEXT: } +MCOMDAT: FunctionLineTable [ +MCOMDAT-NEXT: FunctionName: ?f@@YAHXZ +MCOMDAT-NEXT: CodeSize: 0x7 +MCOMDAT-NEXT: FilenameSegment [ +MCOMDAT-NEXT: Filename: c:\src\test.cc +MCOMDAT-NEXT: +0x0: 2 +MCOMDAT-NEXT: +0x3: 3 +MCOMDAT-NEXT: +0x5: 4 +MCOMDAT-NEXT: ] +MCOMDAT-NEXT: ] +MCOMDAT: ProcStart { +MCOMDAT-NEXT: DisplayName: g +MCOMDAT-NEXT: Section: ?g@@YAHXZ +MCOMDAT-NEXT: CodeSize: 0x7 +MCOMDAT-NEXT: } +MCOMDAT: FunctionLineTable [ +MCOMDAT-NEXT: FunctionName: ?g@@YAHXZ +MCOMDAT-NEXT: CodeSize: 0x7 +MCOMDAT-NEXT: FilenameSegment [ +MCOMDAT-NEXT: Filename: c:\src\test.cc +MCOMDAT-NEXT: +0x0: 7 +MCOMDAT-NEXT: +0x3: 8 +MCOMDAT-NEXT: +0x5: 9 +MCOMDAT-NEXT: ] +MCOMDAT-NEXT: ] diff --git a/test/tools/llvm-readobj/coff-basereloc.test b/test/tools/llvm-readobj/coff-basereloc.test new file mode 100644 index 0000000..cd6687c --- /dev/null +++ b/test/tools/llvm-readobj/coff-basereloc.test @@ -0,0 +1,24 @@ +RUN: llvm-readobj -coff-basereloc %p/Inputs/basereloc.obj.coff-i386 | FileCheck %s + +CHECK: Format: COFF-i386 +CHECK-NEXT: Arch: i386 +CHECK-NEXT: AddressSize: 32bit +CHECK-NEXT: BaseReloc [ +CHECK-NEXT: Entry { +CHECK-NEXT: Type: HIGHLOW +CHECK-NEXT: Address: 0x1004 +CHECK-NEXT: } +CHECK-NEXT: Entry { +CHECK-NEXT: Type: HIGHLOW +CHECK-NEXT: Address: 0x100A +CHECK-NEXT: } +CHECK-NEXT: Entry { +CHECK-NEXT: Type: HIGHLOW +CHECK-NEXT: Address: 0x1010 +CHECK-NEXT: } +CHECK-NEXT: Entry { +CHECK-NEXT: Type: ABSOLUTE +CHECK-NEXT: Address: 0x1000 +CHECK-NEXT: } +CHECK-NEXT: ] + diff --git a/test/tools/llvm-readobj/coff-directives.test b/test/tools/llvm-readobj/coff-directives.test new file mode 100644 index 0000000..83efffc --- /dev/null +++ b/test/tools/llvm-readobj/coff-directives.test @@ -0,0 +1,2 @@ +RUN: llvm-readobj -coff-directives %p/Inputs/directives.obj.coff-x86_64 | FileCheck %s +CHECK: Directive(s): /DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" diff --git a/test/tools/llvm-readobj/coff-file-sections-reading.test b/test/tools/llvm-readobj/coff-file-sections-reading.test index 5c44c16..c2f02d4 100644 --- a/test/tools/llvm-readobj/coff-file-sections-reading.test +++ b/test/tools/llvm-readobj/coff-file-sections-reading.test @@ -4,7 +4,7 @@ CHECK: Symbols [ CHECK: Symbol { CHECK: Name: .file CHECK: Value: 0 -CHECK: Section: (65534) +CHECK: Section: IMAGE_SYM_DEBUG (-2) CHECK: BaseType: Null (0x0) CHECK: ComplexType: Null (0x0) CHECK: StorageClass: File (0x67) diff --git a/test/tools/llvm-readobj/cxx-cli-aux.test b/test/tools/llvm-readobj/cxx-cli-aux.test index 90e73c0..0b68779 100644 --- a/test/tools/llvm-readobj/cxx-cli-aux.test +++ b/test/tools/llvm-readobj/cxx-cli-aux.test @@ -9,7 +9,7 @@ CHECK: Symbols [ CHECK: Symbol { CHECK: Name: ?PerAppDomain@@$$Q3HA CHECK-NEXT: Value: 4 -CHECK-NEXT: Section: (65535) +CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1) CHECK-NEXT: BaseType: Null (0x0) CHECK-NEXT: ComplexType: Null (0x0) CHECK-NEXT: StorageClass: External (0x2) @@ -21,14 +21,13 @@ CHECK-NEXT: LineNumberCount: 0 CHECK-NEXT: Checksum: 0x0 CHECK-NEXT: Number: 0 CHECK-NEXT: Selection: NoDuplicates (0x1) -CHECK-NEXT: Unused: (00 00 00) CHECK-NEXT: } CHECK-NEXT: } CHECK: Symbol { CHECK: Name: 04000001 CHECK-NEXT: Value: 4 -CHECK-NEXT: Section: (65535) +CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1) CHECK-NEXT: BaseType: Null (0x0) CHECK-NEXT: ComplexType: Null (0x0) CHECK-NEXT: StorageClass: CLRToken (0x6B) @@ -37,6 +36,5 @@ CHECK-NEXT: AuxCLRToken { CHECK-NEXT: AuxType: 1 CHECK-NEXT: Reserved: 0 CHECK-NEXT: SymbolTableIndex: ?PerAppDomain@@$$Q3HA (19) -CHECK-NEXT: Unused: (00 00 00 00 00 00 00 00 00 00 00 00) CHECK-NEXT: } CHECK-NEXT: } diff --git a/test/tools/llvm-readobj/file-headers.test b/test/tools/llvm-readobj/file-headers.test index 39a8c0e..fd030ef 100644 --- a/test/tools/llvm-readobj/file-headers.test +++ b/test/tools/llvm-readobj/file-headers.test @@ -10,6 +10,16 @@ RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF32 RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF64 +RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-i386 \ +RUN: | FileCheck %s -check-prefix MACHO32 +RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-x86-64 \ +RUN: | FileCheck %s -check-prefix MACHO64 +RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-ppc \ +RUN: | FileCheck %s -check-prefix MACHO-PPC +RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-ppc64 \ +RUN: | FileCheck %s -check-prefix MACHO-PPC64 +RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-arm \ +RUN: | FileCheck %s -check-prefix MACHO-ARM RUN: llvm-readobj -h %p/Inputs/magic.coff-unknown \ RUN: | FileCheck %s -check-prefix COFF-UNKNOWN RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \ @@ -122,6 +132,88 @@ ELF64-NEXT: SectionHeaderCount: 10 ELF64-NEXT: StringTableSectionIndex: 7 ELF64-NEXT: } +MACHO32: File: {{(.*[/\\])?}}trivial.obj.macho-i386 +MACHO32-NEXT: Format: Mach-O 32-bit i386 +MACHO32-NEXT: Arch: i386 +MACHO32-NEXT: AddressSize: 32bit +MACHO32-NEXT: MachHeader { +MACHO32-NEXT: Magic: Magic (0xFEEDFACE) +MACHO32-NEXT: CpuType: X86 (0x7) +MACHO32-NEXT: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3) +MACHO32-NEXT: FileType: Relocatable (0x1) +MACHO32-NEXT: NumOfLoadCommands: 3 +MACHO32-NEXT: SizeOfLoadCommands: 296 +MACHO32-NEXT: Flags [ (0x2000) +MACHO32-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MACHO32-NEXT: ] +MACHO32-NEXT: } + +MACHO64: File: {{(.*[/\\])?}}trivial.obj.macho-x86-64 +MACHO64-NEXT: Format: Mach-O 64-bit x86-64 +MACHO64-NEXT: Arch: x86_64 +MACHO64-NEXT: AddressSize: 64bit +MACHO64-NEXT: MachHeader { +MACHO64-NEXT: Magic: Magic64 (0xFEEDFACF) +MACHO64-NEXT: CpuType: X86-64 (0x1000007) +MACHO64-NEXT: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3) +MACHO64-NEXT: FileType: Relocatable (0x1) +MACHO64-NEXT: NumOfLoadCommands: 3 +MACHO64-NEXT: SizeOfLoadCommands: 336 +MACHO64-NEXT: Flags [ (0x2000) +MACHO64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MACHO64-NEXT: ] +MACHO64-NEXT: Reserved: 0x0 +MACHO64-NEXT: } + +MACHO-PPC: File: {{(.*[/\\])?}}trivial.obj.macho-ppc +MACHO-PPC-NEXT: Format: Mach-O 32-bit ppc +MACHO-PPC-NEXT: Arch: powerpc +MACHO-PPC-NEXT: AddressSize: 32bit +MACHO-PPC-NEXT: MachHeader { +MACHO-PPC-NEXT: Magic: Magic (0xFEEDFACE) +MACHO-PPC-NEXT: CpuType: PowerPC (0x12) +MACHO-PPC-NEXT: CpuSubType: CPU_SUBTYPE_POWERPC_ALL (0x0) +MACHO-PPC-NEXT: FileType: Relocatable (0x1) +MACHO-PPC-NEXT: NumOfLoadCommands: 3 +MACHO-PPC-NEXT: SizeOfLoadCommands: 500 +MACHO-PPC-NEXT: Flags [ (0x2000) +MACHO-PPC-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MACHO-PPC-NEXT: ] +MACHO-PPC-NEXT: } + +MACHO-PPC64: File: {{(.*[/\\])?}}trivial.obj.macho-ppc64 +MACHO-PPC64-NEXT: Format: Mach-O 64-bit ppc64 +MACHO-PPC64-NEXT: Arch: powerpc64 +MACHO-PPC64-NEXT: AddressSize: 64bit +MACHO-PPC64-NEXT: MachHeader { +MACHO-PPC64-NEXT: Magic: Magic64 (0xFEEDFACF) +MACHO-PPC64-NEXT: CpuType: PowerPC64 (0x1000012) +MACHO-PPC64-NEXT: CpuSubtype: 0x0 +MACHO-PPC64-NEXT: FileType: Relocatable (0x1) +MACHO-PPC64-NEXT: NumOfLoadCommands: 3 +MACHO-PPC64-NEXT: SizeOfLoadCommands: 576 +MACHO-PPC64-NEXT: Flags [ (0x2000) +MACHO-PPC64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MACHO-PPC64-NEXT: ] +MACHO-PPC64-NEXT: Reserved: 0x0 +MACHO-PPC64-NEXT: } + +MACHO-ARM: File: {{(.*[/\\])?}}trivial.obj.macho-arm +MACHO-ARM-NEXT: Format: Mach-O arm +MACHO-ARM-NEXT: Arch: arm +MACHO-ARM-NEXT: AddressSize: 32bit +MACHO-ARM-NEXT: MachHeader { +MACHO-ARM-NEXT: Magic: Magic (0xFEEDFACE) +MACHO-ARM-NEXT: CpuType: Arm (0xC) +MACHO-ARM-NEXT: CpuSubType: CPU_SUBTYPE_ARM_V7 (0x9) +MACHO-ARM-NEXT: FileType: Relocatable (0x1) +MACHO-ARM-NEXT: NumOfLoadCommands: 3 +MACHO-ARM-NEXT: SizeOfLoadCommands: 636 +MACHO-ARM-NEXT: Flags [ (0x2000) +MACHO-ARM-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MACHO-ARM-NEXT: ] +MACHO-ARM-NEXT: } + PE32: File: {{(.*[/\\])?}}trivial.exe.coff-i386 PE32-NEXT: Format: COFF-i386 PE32-NEXT: Arch: i386 @@ -159,7 +251,7 @@ PE32-NEXT: MinorSubsystemVersion: 0 PE32-NEXT: SizeOfImage: 16384 PE32-NEXT: SizeOfHeaders: 1024 PE32-NEXT: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3) -PE32-NEXT: Subsystem [ (0x8140) +PE32-NEXT: Characteristics [ (0x8140) PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40) PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100) PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000) @@ -204,6 +296,25 @@ PE32-NEXT: ReservedRVA: 0x0 PE32-NEXT: ReservedSize: 0x0 PE32-NEXT: } PE32-NEXT: } +PE32-NEXT: DOSHeader { +PE32-NEXT: Magic: MZ +PE32-NEXT: UsedBytesInTheLastPage: 144 +PE32-NEXT: FileSizeInPages: 3 +PE32-NEXT: NumberOfRelocationItems: 0 +PE32-NEXT: HeaderSizeInParagraphs: 4 +PE32-NEXT: MinimumExtraParagraphs: 0 +PE32-NEXT: MaximumExtraParagraphs: 65535 +PE32-NEXT: InitialRelativeSS: 0 +PE32-NEXT: InitialSP: 184 +PE32-NEXT: Checksum: 0 +PE32-NEXT: InitialIP: 0 +PE32-NEXT: InitialRelativeCS: 0 +PE32-NEXT: AddressOfRelocationTable: 64 +PE32-NEXT: OverlayNumber: 0 +PE32-NEXT: OEMid: 0 +PE32-NEXT: OEMinfo: 0 +PE32-NEXT: AddressOfNewExeHeader: 176 +PE32-NEXT: } COFF-UNKNOWN: Format: COFF- COFF-UNKNOWN-NEXT: Arch: unknown @@ -224,12 +335,11 @@ COFF-IMPORTLIB-NEXT: Arch: unknown COFF-IMPORTLIB-NEXT: AddressSize: 32bit COFF-IMPORTLIB-NEXT: ImageFileHeader { COFF-IMPORTLIB-NEXT: Machine: IMAGE_FILE_MACHINE_UNKNOWN (0x0) -COFF-IMPORTLIB-NEXT: SectionCount: 65535 +COFF-IMPORTLIB-NEXT: SectionCount: 0 COFF-IMPORTLIB-NEXT: TimeDateStamp: 1970-09-09 19:52:32 (0x14C0000) -COFF-IMPORTLIB-NEXT: PointerToSymbolTable: 0x528542EB -COFF-IMPORTLIB-NEXT: SymbolCount: 20 +COFF-IMPORTLIB-NEXT: PointerToSymbolTable: 0x0 +COFF-IMPORTLIB-NEXT: SymbolCount: 0 COFF-IMPORTLIB-NEXT: OptionalHeaderSize: 0 -COFF-IMPORTLIB-NEXT: Characteristics [ (0x8) -COFF-IMPORTLIB-NEXT: IMAGE_FILE_LOCAL_SYMS_STRIPPED (0x8) +COFF-IMPORTLIB-NEXT: Characteristics [ (0x0) COFF-IMPORTLIB-NEXT: ] COFF-IMPORTLIB-NEXT: } diff --git a/test/tools/llvm-readobj/imports.test b/test/tools/llvm-readobj/imports.test new file mode 100644 index 0000000..58512f4 --- /dev/null +++ b/test/tools/llvm-readobj/imports.test @@ -0,0 +1,88 @@ +RUN: llvm-readobj --coff-imports %p/Inputs/imports.exe.coff-i386 | FileCheck -check-prefix=X86 %s +RUN: llvm-readobj --coff-imports %p/Inputs/imports.exe.coff-x86-64 | FileCheck -check-prefix=X64 %s + +X86: Import { +X86-NEXT: Name: KERNEL32.dll +X86-NEXT: ImportLookupTableRVA: 0x2108 +X86-NEXT: ImportAddressTableRVA: 0x2000 +X86-NEXT: Symbol: ExitProcess (337) +X86-NEXT: Symbol: GetProcAddress (669) +X86-NEXT: Symbol: FreeLibrary (414) +X86-NEXT: Symbol: GetLastError (592) +X86-NEXT: Symbol: RaiseException (1087) +X86-NEXT: Symbol: LoadLibraryExA (934) +X86-NEXT: } +X86-NEXT: Import { +X86-NEXT: Name: USER32.dll +X86-NEXT: ImportLookupTableRVA: 0x2124 +X86-NEXT: ImportAddressTableRVA: 0x201C +X86-NEXT: Symbol: MessageBoxA (582) +X86-NEXT: } +X86-NEXT: Import { +X86-NEXT: Name: mydll.dll +X86-NEXT: ImportLookupTableRVA: 0x212C +X86-NEXT: ImportAddressTableRVA: 0x2024 +X86-NEXT: Symbol: Func1 (0) +X86-NEXT: Symbol: Func2 (1) +X86-NEXT: Symbol: (3) +X86-NEXT: } +X86-NEXT: DelayImport { +X86-NEXT: Name: lazyload.dll +X86-NEXT: Attributes: 0x1 +X86-NEXT: ModuleHandle: 0x301C +X86-NEXT: ImportAddressTable: 0x3010 +X86-NEXT: ImportNameTable: 0x2090 +X86-NEXT: BoundDelayImportTable: 0x20AC +X86-NEXT: UnloadDelayImportTable: 0x0 +X86-NEXT: Import { +X86-NEXT: Symbol: Func5 (0) +X86-NEXT: Address: 0x401073 +X86-NEXT: } +X86-NEXT: Import { +X86-NEXT: Symbol: Func4 (0) +X86-NEXT: Address: 0x401052 +X86-NEXT: } +X86-NEXT: } + +X64: Import { +X64-NEXT: Name: KERNEL32.dll +X64-NEXT: ImportLookupTableRVA: 0x2170 +X64-NEXT: ImportAddressTableRVA: 0x2000 +X64-NEXT: Symbol: ExitProcess (343) +X64-NEXT: Symbol: GetProcAddress (676) +X64-NEXT: Symbol: FreeLibrary (420) +X64-NEXT: Symbol: GetLastError (598) +X64-NEXT: Symbol: RaiseException (1091) +X64-NEXT: Symbol: LoadLibraryExA (937) +X64-NEXT: } +X64-NEXT: Import { +X64-NEXT: Name: USER32.dll +X64-NEXT: ImportLookupTableRVA: 0x21A8 +X64-NEXT: ImportAddressTableRVA: 0x2038 +X64-NEXT: Symbol: MessageBoxA (586) +X64-NEXT: } +X64-NEXT: Import { +X64-NEXT: Name: mydll.dll +X64-NEXT: ImportLookupTableRVA: 0x21B8 +X64-NEXT: ImportAddressTableRVA: 0x2048 +X64-NEXT: Symbol: Func1 (0) +X64-NEXT: Symbol: Func2 (1) +X64-NEXT: Symbol: (3) +X64-NEXT: } +X64-NEXT: DelayImport { +X64-NEXT: Name: lazyload.dll +X64-NEXT: Attributes: 0x1 +X64-NEXT: ModuleHandle: 0x3028 +X64-NEXT: ImportAddressTable: 0x3010 +X64-NEXT: ImportNameTable: 0x20E0 +X64-NEXT: BoundDelayImportTable: 0x2108 +X64-NEXT: UnloadDelayImportTable: 0x0 +X64-NEXT: Import { +X64-NEXT: Symbol: Func5 (0) +X64-NEXT: Address: 0x1400010F1 +X64-NEXT: } +X64-NEXT: Import { +X64-NEXT: Symbol: Func4 (0) +X64-NEXT: Address: 0x140001066 +X64-NEXT: } +X64-NEXT: } diff --git a/test/tools/llvm-readobj/peplus.test b/test/tools/llvm-readobj/peplus.test index 8e6f550..4d8d25d 100644 --- a/test/tools/llvm-readobj/peplus.test +++ b/test/tools/llvm-readobj/peplus.test @@ -35,7 +35,7 @@ CHECK: MinorSubsystemVersion: 0 CHECK: SizeOfImage: 8192 CHECK: SizeOfHeaders: 512 CHECK: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3) -CHECK: Subsystem [ (0x8160) +CHECK: Characteristics [ (0x8160) CHECK: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40) CHECK: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA (0x20) CHECK: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100) diff --git a/test/tools/llvm-readobj/reloc-types.test b/test/tools/llvm-readobj/reloc-types.test index 0c8b54d..20c2538 100644 --- a/test/tools/llvm-readobj/reloc-types.test +++ b/test/tools/llvm-readobj/reloc-types.test @@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (284) ELF-AARCH64: Type: R_AARCH64_LDST32_ABS_LO12_NC (285) ELF-AARCH64: Type: R_AARCH64_LDST64_ABS_LO12_NC (286) ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299) +ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307) +ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308) ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311) ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312) ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523) @@ -222,6 +224,15 @@ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562) ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD64_LO12_NC (563) ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD_LO12_NC (564) ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569) +ELF-AARCH64: Type: R_AARCH64_COPY (1024) +ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025) +ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026) +ELF-AARCH64: Type: R_AARCH64_RELATIVE (1027) +ELF-AARCH64: Type: R_AARCH64_TLS_DTPREL64 (1028) +ELF-AARCH64: Type: R_AARCH64_TLS_DTPMOD64 (1029) +ELF-AARCH64: Type: R_AARCH64_TLS_TPREL64 (1030) +ELF-AARCH64: Type: R_AARCH64_TLSDESC (1031) +ELF-AARCH64: Type: R_AARCH64_IRELATIVE (1032) ELF-ARM: Type: R_ARM_NONE (0) ELF-ARM: Type: R_ARM_PC24 (1) @@ -250,7 +261,6 @@ ELF-ARM: Type: R_ARM_RELATIVE (23) ELF-ARM: Type: R_ARM_GOTOFF32 (24) ELF-ARM: Type: R_ARM_BASE_PREL (25) ELF-ARM: Type: R_ARM_GOT_BREL (26) -ELF-ARM: Type: R_ARM_PLT32 (27) ELF-ARM: Type: R_ARM_CALL (28) ELF-ARM: Type: R_ARM_JUMP24 (29) ELF-ARM: Type: R_ARM_THM_JUMP24 (30) diff --git a/test/tools/llvm-readobj/relocations.test b/test/tools/llvm-readobj/relocations.test index 864ded3..222dcf1 100644 --- a/test/tools/llvm-readobj/relocations.test +++ b/test/tools/llvm-readobj/relocations.test @@ -1,5 +1,7 @@ RUN: llvm-readobj -r %p/Inputs/trivial.obj.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF +RUN: llvm-readobj -r %p/Inputs/bad-relocs.obj.coff-i386 \ +RUN: | FileCheck %s -check-prefix BAD-COFF-RELOCS RUN: llvm-readobj -r %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF RUN: llvm-readobj -r %p/Inputs/trivial.obj.macho-i386 \ @@ -21,6 +23,12 @@ COFF-NEXT: 0xE IMAGE_REL_I386_REL32 _SomeOtherFunction COFF-NEXT: } COFF-NEXT: ] +BAD-COFF-RELOCS: Relocations [ +BAD-COFF-RELOCS-NEXT: Section (1) sec { +BAD-COFF-RELOCS-NEXT: 0xDEADBEEF IMAGE_REL_I386_ABSOLUTE - +BAD-COFF-RELOCS-NEXT: } +BAD-COFF-RELOCS-NEXT: ] + ELF: Relocations [ ELF-NEXT: Section (2) .rel.text { ELF-NEXT: 0xC R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0 diff --git a/test/tools/llvm-readobj/sections-ext.test b/test/tools/llvm-readobj/sections-ext.test index 972d8e6..4024878 100644 --- a/test/tools/llvm-readobj/sections-ext.test +++ b/test/tools/llvm-readobj/sections-ext.test @@ -52,7 +52,6 @@ COFF-NEXT: LineNumberCount: 0 COFF-NEXT: Checksum: 0x0 COFF-NEXT: Number: 1 COFF-NEXT: Selection: 0x0 -COFF-NEXT: Unused: (00 00 00) COFF-NEXT: } COFF-NEXT: } COFF-NEXT: Symbol { diff --git a/test/tools/llvm-readobj/sections.test b/test/tools/llvm-readobj/sections.test index 16f1131..fe734d7 100644 --- a/test/tools/llvm-readobj/sections.test +++ b/test/tools/llvm-readobj/sections.test @@ -2,6 +2,8 @@ RUN: llvm-readobj -s %p/Inputs/trivial.obj.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF +RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-mipsel \ +RUN: | FileCheck %s -check-prefix ELF-MIPSEL RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-i386 \ RUN: | FileCheck %s -check-prefix MACHO-I386 RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-x86-64 \ @@ -84,6 +86,37 @@ ELF-NEXT: AddressAlignment: 16 ELF-NEXT: EntrySize: 0 ELF-NEXT: } +ELF-MIPSEL: Section { +ELF-MIPSEL: Index: 4 +ELF-MIPSEL-NEXT: Name: .reginfo (27) +ELF-MIPSEL-NEXT: Type: SHT_MIPS_REGINFO (0x70000006) +ELF-MIPSEL-NEXT: Flags [ (0x2) +ELF-MIPSEL-NEXT: SHF_ALLOC (0x2) +ELF-MIPSEL-NEXT: ] +ELF-MIPSEL-NEXT: Address: 0x0 +ELF-MIPSEL-NEXT: Offset: 0x34 +ELF-MIPSEL-NEXT: Size: 24 +ELF-MIPSEL-NEXT: Link: 0 +ELF-MIPSEL-NEXT: Info: 0 +ELF-MIPSEL-NEXT: AddressAlignment: 1 +ELF-MIPSEL-NEXT: EntrySize: 0 +ELF-MIPSEL-NEXT: } +ELF-MIPSEL-NEXT: Section { +ELF-MIPSEL-NEXT: Index: 5 +ELF-MIPSEL-NEXT: Name: .MIPS.abiflags (12) +ELF-MIPSEL-NEXT: Type: SHT_MIPS_ABIFLAGS (0x7000002A) +ELF-MIPSEL-NEXT: Flags [ (0x2) +ELF-MIPSEL-NEXT: SHF_ALLOC (0x2) +ELF-MIPSEL-NEXT: ] +ELF-MIPSEL-NEXT: Address: 0x0 +ELF-MIPSEL-NEXT: Offset: 0x50 +ELF-MIPSEL-NEXT: Size: 24 +ELF-MIPSEL-NEXT: Link: 0 +ELF-MIPSEL-NEXT: Info: 0 +ELF-MIPSEL-NEXT: AddressAlignment: 8 +ELF-MIPSEL-NEXT: EntrySize: 0 +ELF-MIPSEL-NEXT: } + MACHO-I386: Sections [ MACHO-I386-NEXT: Section { MACHO-I386-NEXT: Index: 0 diff --git a/test/tools/llvm-readobj/symbols.test b/test/tools/llvm-readobj/symbols.test index 26830ac..71955e0 100644 --- a/test/tools/llvm-readobj/symbols.test +++ b/test/tools/llvm-readobj/symbols.test @@ -7,7 +7,7 @@ COFF: Symbols [ COFF-NEXT: Symbol { COFF-NEXT: Name: @comp.id COFF-NEXT: Value: 14766605 -COFF-NEXT: Section: (65535) +COFF-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1) COFF-NEXT: BaseType: Null (0x0) COFF-NEXT: ComplexType: Null (0x0) COFF-NEXT: StorageClass: Static (0x3) @@ -16,7 +16,7 @@ COFF-NEXT: } COFF-NEXT: Symbol { COFF-NEXT: Name: @feat.00 COFF-NEXT: Value: 2147484049 -COFF-NEXT: Section: (65535) +COFF-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1) COFF-NEXT: BaseType: Null (0x0) COFF-NEXT: ComplexType: Null (0x0) COFF-NEXT: StorageClass: Static (0x3) @@ -37,7 +37,6 @@ COFF-NEXT: LineNumberCount: 0 COFF-NEXT: Checksum: 0x0 COFF-NEXT: Number: 1 COFF-NEXT: Selection: 0x0 -COFF-NEXT: Unused: (00 00 00) COFF-NEXT: } COFF-NEXT: } diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe new file mode 100755 index 0000000..ba3154c Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe differ diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Info.plist b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Info.plist new file mode 100644 index 0000000..4e84ad0 --- /dev/null +++ b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.dsym-test-exe-differentname + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Resources/DWARF/dsym-test-exe-second b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Resources/DWARF/dsym-test-exe-second new file mode 100644 index 0000000..c30dba3 Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-differentname.dSYM/Contents/Resources/DWARF/dsym-test-exe-second differ diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-second b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-second new file mode 100755 index 0000000..ba3154c Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe-second differ diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Info.plist b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Info.plist new file mode 100644 index 0000000..35b1c11 --- /dev/null +++ b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.dsym-test-exe + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Resources/DWARF/dsym-test-exe b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Resources/DWARF/dsym-test-exe new file mode 100644 index 0000000..c30dba3 Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/dsym-test-exe.dSYM/Contents/Resources/DWARF/dsym-test-exe differ diff --git a/test/tools/llvm-symbolizer/Inputs/dsym-test.c b/test/tools/llvm-symbolizer/Inputs/dsym-test.c new file mode 100644 index 0000000..84d5ad9 --- /dev/null +++ b/test/tools/llvm-symbolizer/Inputs/dsym-test.c @@ -0,0 +1,8 @@ +// clang -c dsym-test.c -g +// clang dsym-test.o -g -o dsym-test-exe +// dsymutil dsym-test-exe +// clang dsym-test.o -g -o dsym-test-exe-second +// dsymutil dsym-test-exe-second -o dsym-test-exe-differentname.dSYM +int main() { + return 0; +} diff --git a/test/tools/llvm-symbolizer/Inputs/ppc64 b/test/tools/llvm-symbolizer/Inputs/ppc64 new file mode 100755 index 0000000..2356e43 Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/ppc64 differ diff --git a/test/tools/llvm-symbolizer/dsym.test b/test/tools/llvm-symbolizer/dsym.test new file mode 100644 index 0000000..326602d --- /dev/null +++ b/test/tools/llvm-symbolizer/dsym.test @@ -0,0 +1,14 @@ +RUN: echo "%p/Inputs/dsym-test-exe 0x0000000100000f90" > %t.input +RUN: echo "%p/Inputs/dsym-test-exe-second 0x0000000100000f90" >> %t.input +RUN: llvm-symbolizer < %t.input | FileCheck %s --check-prefix=CHECK-NOHINT +RUN: llvm-symbolizer -dsym-hint=%p/Inputs/dsym-test-exe-differentname.dSYM < %t.input | FileCheck %s --check-prefix=CHECK-HINT + +CHECK-NOHINT: main +CHECK-NOHINT: dsym-test.c +CHECK-NOHINT: main +CHECK-NOHINT: ??:0:0 + +CHECK-HINT: main +CHECK-HINT: dsym-test.c +CHECK-HINT: main +CHECK-HINT: dsym-test.c diff --git a/test/tools/llvm-symbolizer/ppc64.test b/test/tools/llvm-symbolizer/ppc64.test new file mode 100644 index 0000000..fc8e4ff --- /dev/null +++ b/test/tools/llvm-symbolizer/ppc64.test @@ -0,0 +1,11 @@ +// ppc64 was compiled from this source on a big-endian 64-bit PowerPC box +// with just "clang -nostdlib": +int foo() { return 0; } +int bar() { return foo(); } +int _start() { return bar(); } + +RUN: %python -c "print('0x1000014c\n0x1000018c\n0x100001cc')" | llvm-symbolizer -obj=%p/Inputs/ppc64 | FileCheck %s + +CHECK: foo +CHECK: bar +CHECK: _start diff --git a/test/tools/llvm-vtabledump/Inputs/trivial.obj.coff-i386 b/test/tools/llvm-vtabledump/Inputs/trivial.obj.coff-i386 new file mode 100644 index 0000000..3b93955 Binary files /dev/null and b/test/tools/llvm-vtabledump/Inputs/trivial.obj.coff-i386 differ diff --git a/test/tools/llvm-vtabledump/Inputs/trivial.obj.elf-i386 b/test/tools/llvm-vtabledump/Inputs/trivial.obj.elf-i386 new file mode 100644 index 0000000..1a5c929 Binary files /dev/null and b/test/tools/llvm-vtabledump/Inputs/trivial.obj.elf-i386 differ diff --git a/test/tools/llvm-vtabledump/trivial.test b/test/tools/llvm-vtabledump/trivial.test new file mode 100644 index 0000000..92bd058 --- /dev/null +++ b/test/tools/llvm-vtabledump/trivial.test @@ -0,0 +1,58 @@ +RUN: llvm-vtabledump %p/Inputs/trivial.obj.coff-i386 \ +RUN: | FileCheck %s --check-prefix=COFF-I386 + +RUN: llvm-vtabledump %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s --check-prefix=ELF-I386 + +COFF-I386: ??_7S@@6B@[0]: ??_R4S@@6B@ +COFF-I386-NEXT: ??_7S@@6B@[4]: ??_GS@@UAEPAXI@Z +COFF-I386-NEXT: ??_8S@@7B@[0]: -4 +COFF-I386-NEXT: ??_8S@@7B@[4]: 4 +COFF-I386-NEXT: ??_R4S@@6B@[IsImageRelative]: 0 +COFF-I386-NEXT: ??_R4S@@6B@[OffsetToTop]: 0 +COFF-I386-NEXT: ??_R4S@@6B@[VFPtrOffset]: 0 +COFF-I386-NEXT: ??_R4S@@6B@[TypeDescriptor]: ??_R0?AUS@@@8 +COFF-I386-NEXT: ??_R4S@@6B@[ClassHierarchyDescriptor]: ??_R3S@@8 +COFF-I386-NEXT: ??_R3A@@8[AlwaysZero]: 0 +COFF-I386-NEXT: ??_R3A@@8[Flags]: 0 +COFF-I386-NEXT: ??_R3A@@8[NumClasses]: 1 +COFF-I386-NEXT: ??_R3A@@8[BaseClassArray]: ??_R2A@@8 +COFF-I386-NEXT: ??_R3S@@8[AlwaysZero]: 0 +COFF-I386-NEXT: ??_R3S@@8[Flags]: 0 +COFF-I386-NEXT: ??_R3S@@8[NumClasses]: 2 +COFF-I386-NEXT: ??_R3S@@8[BaseClassArray]: ??_R2S@@8 +COFF-I386-NEXT: ??_R2A@@8[0]: ??_R1A@?0A@EA@A@@8 +COFF-I386-NEXT: ??_R2S@@8[0]: ??_R1A@?0A@EA@S@@8 +COFF-I386-NEXT: ??_R2S@@8[4]: ??_R1A@33FA@A@@8 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[TypeDescriptor]: ??_R0?AUA@@@8 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[NumBases]: 0 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[OffsetInVBase]: 0 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[VBPtrOffset]: 4 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[OffsetInVBTable]: 4 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[Flags]: 80 +COFF-I386-NEXT: ??_R1A@33FA@A@@8[ClassHierarchyDescriptor]: ??_R3A@@8 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[TypeDescriptor]: ??_R0?AUA@@@8 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[NumBases]: 0 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[OffsetInVBase]: 0 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[VBPtrOffset]: -1 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[OffsetInVBTable]: 0 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[Flags]: 64 +COFF-I386-NEXT: ??_R1A@?0A@EA@A@@8[ClassHierarchyDescriptor]: ??_R3A@@8 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[TypeDescriptor]: ??_R0?AUS@@@8 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[NumBases]: 1 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[OffsetInVBase]: 0 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[VBPtrOffset]: -1 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[OffsetInVBTable]: 0 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[Flags]: 64 +COFF-I386-NEXT: ??_R1A@?0A@EA@S@@8[ClassHierarchyDescriptor]: ??_R3S@@8 +COFF-I386-NEXT: ??_R0?AUA@@@8[VFPtr]: ??_7type_info@@6B@ +COFF-I386-NEXT: ??_R0?AUA@@@8[AlwaysZero]: 0 +COFF-I386-NEXT: ??_R0?AUA@@@8[MangledName]: .?AUA@@ +COFF-I386-NEXT: ??_R0?AUS@@@8[VFPtr]: ??_7type_info@@6B@ +COFF-I386-NEXT: ??_R0?AUS@@@8[AlwaysZero]: 0 +COFF-I386-NEXT: ??_R0?AUS@@@8[MangledName]: .?AUS@@ + +ELF-I386: _ZTS1A: 1A +ELF-I386-NEXT: _ZTV1A[0]: 0 +ELF-I386-NEXT: _ZTV1A[4]: _ZTI1A +ELF-I386-NEXT: _ZTV1A[8]: _ZN1A1fEv -- cgit v1.1