From ebe69fe11e48d322045d5949c83283927a0d790b Mon Sep 17 00:00:00 2001 From: Stephen Hines Date: Mon, 23 Mar 2015 12:10:34 -0700 Subject: Update aosp/master LLVM for rebase to r230699. Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9 --- .../dsymutil/Inputs/basic-archive.macho.x86_64 | Bin 0 -> 9352 bytes test/tools/dsymutil/Inputs/basic-lto.macho.x86_64 | Bin 0 -> 8912 bytes .../tools/dsymutil/Inputs/basic-lto.macho.x86_64.o | Bin 0 -> 4516 bytes test/tools/dsymutil/Inputs/basic.macho.x86_64 | Bin 0 -> 9320 bytes test/tools/dsymutil/Inputs/basic1.c | 28 ++ test/tools/dsymutil/Inputs/basic1.macho.x86_64.o | Bin 0 -> 2376 bytes test/tools/dsymutil/Inputs/basic2.c | 22 ++ test/tools/dsymutil/Inputs/basic2.macho.x86_64.o | Bin 0 -> 3472 bytes test/tools/dsymutil/Inputs/basic3.c | 20 ++ test/tools/dsymutil/Inputs/basic3.macho.x86_64.o | Bin 0 -> 3008 bytes test/tools/dsymutil/Inputs/libbasic.a | Bin 0 -> 6840 bytes test/tools/dsymutil/basic-linking.test | 149 +++++++++ test/tools/dsymutil/debug-map-parsing.test | 79 +++++ test/tools/gold/Inputs/comdat.ll | 9 +- test/tools/gold/Inputs/drop-debug.bc | Bin 0 -> 1152 bytes test/tools/gold/alias.ll | 2 +- test/tools/gold/bad-alias.ll | 2 +- test/tools/gold/bcsection.ll | 2 +- test/tools/gold/coff.ll | 22 ++ test/tools/gold/comdat.ll | 14 +- test/tools/gold/common.ll | 6 +- test/tools/gold/drop-debug.ll | 8 + test/tools/gold/emit-llvm.ll | 26 +- test/tools/gold/invalid.ll | 2 +- test/tools/gold/linker-script.ll | 2 +- test/tools/gold/linkonce-weak.ll | 4 +- test/tools/gold/mtriple.ll | 2 +- test/tools/gold/no-map-whole-file.ll | 9 + test/tools/gold/option.ll | 2 +- test/tools/gold/pr19901.ll | 4 +- test/tools/gold/slp-vectorize.ll | 2 +- test/tools/gold/stats.ll | 7 + test/tools/gold/vectorize.ll | 2 +- test/tools/gold/weak.ll | 2 +- .../llvm-cov/Inputs/highlightedRanges.covmapping | Bin 355 -> 355 bytes .../tools/llvm-cov/Inputs/regionMarkers.covmapping | Bin 194 -> 202 bytes test/tools/llvm-cov/Inputs/report.covmapping | Bin 256 -> 219 bytes .../llvm-cov/Inputs/showExpansions.covmapping | Bin 194 -> 250 bytes test/tools/llvm-cov/report.cpp | 20 +- test/tools/llvm-cov/showHighlightedRanges.cpp | 12 +- test/tools/llvm-cov/showLineExecutionCounts.cpp | 4 +- .../AArch64/Inputs/link-opt-hints.macho-aarch64 | Bin 0 -> 984 bytes .../llvm-objdump/AArch64/macho-link-opt-hints.test | 11 + .../AArch64/macho-private-headers.test | 312 +++++++++++++++++++ .../llvm-objdump/ARM/Inputs/data-in-code.macho-arm | Bin 0 -> 336 bytes .../tools/llvm-objdump/ARM/macho-data-in-code.test | 8 + .../llvm-objdump/ARM/macho-private-headers.test | 345 +++++++++++++++++++++ test/tools/llvm-objdump/Inputs/common-symbol-elf | Bin 0 -> 598 bytes .../llvm-objdump/Inputs/proc-specific-section-elf | Bin 0 -> 836 bytes .../X86/Inputs/dylibModInit.macho-x86_64 | Bin 0 -> 8256 bytes .../X86/Inputs/dylibRoutines.macho-x86_64 | Bin 0 -> 4288 bytes .../X86/Inputs/dylibSubClient.macho-x86_64 | Bin 0 -> 4240 bytes .../X86/Inputs/dylibSubFramework.macho-x86_64 | Bin 0 -> 4240 bytes .../X86/Inputs/dylibSubLibrary.macho-x86_64 | Bin 0 -> 4220 bytes .../X86/Inputs/dylibSubUmbrella.macho-x86_64 | Bin 0 -> 4220 bytes .../llvm-objdump/X86/Inputs/exeThread.macho-x86_64 | Bin 0 -> 9100 bytes .../X86/Inputs/linkerOption.macho-x86_64 | Bin 0 -> 744 bytes .../X86/Inputs/macho-universal-archive.x86_64.i386 | Bin 0 -> 1656 bytes .../X86/Inputs/macho-universal.x86_64.i386 | Bin 0 -> 16624 bytes .../llvm-objdump/X86/macho-archive-headers.test | 10 + .../tools/llvm-objdump/X86/macho-cstring-dump.test | 4 + .../llvm-objdump/X86/macho-indirect-symbols.test | 12 + .../X86/macho-literal-pointers-i386.test | 34 ++ .../X86/macho-literal-pointers-x86_64.test | 34 ++ test/tools/llvm-objdump/X86/macho-literals.test | 48 +++ .../llvm-objdump/X86/macho-nontext-disasm.test | 9 + .../llvm-objdump/X86/macho-private-headers.test | 77 +++++ test/tools/llvm-objdump/X86/macho-relocations.test | 7 + .../llvm-objdump/X86/macho-section-contents.test | 17 + .../llvm-objdump/X86/macho-section-headers.test | 8 + test/tools/llvm-objdump/X86/macho-section.test | 4 + .../tools/llvm-objdump/X86/macho-symbol-table.test | 8 + .../X86/macho-universal-x86_64.i386.test | 44 +++ test/tools/llvm-objdump/X86/macho-unwind-info.test | 7 + test/tools/llvm-objdump/common-symbol-elf.test | 3 + .../llvm-objdump/proc-specific-section-elf.test | 3 + test/tools/llvm-readobj/ARM/attribute-0.s | 234 ++++++++++++++ test/tools/llvm-readobj/ARM/attribute-1.s | 220 +++++++++++++ test/tools/llvm-readobj/ARM/attribute-10.s | 24 ++ test/tools/llvm-readobj/ARM/attribute-11.s | 24 ++ test/tools/llvm-readobj/ARM/attribute-12.s | 24 ++ test/tools/llvm-readobj/ARM/attribute-13.s | 10 + test/tools/llvm-readobj/ARM/attribute-136.s | 10 + test/tools/llvm-readobj/ARM/attribute-14.s | 10 + test/tools/llvm-readobj/ARM/attribute-15.s | 10 + test/tools/llvm-readobj/ARM/attribute-2.s | 178 +++++++++++ test/tools/llvm-readobj/ARM/attribute-3.s | 108 +++++++ test/tools/llvm-readobj/ARM/attribute-4.s | 59 ++++ test/tools/llvm-readobj/ARM/attribute-5.s | 52 ++++ test/tools/llvm-readobj/ARM/attribute-6.s | 52 ++++ test/tools/llvm-readobj/ARM/attribute-7.s | 38 +++ test/tools/llvm-readobj/ARM/attribute-8.s | 31 ++ test/tools/llvm-readobj/ARM/attribute-9.s | 24 ++ test/tools/llvm-readobj/ARM/attribute-A.s | 10 + test/tools/llvm-readobj/ARM/attribute-M.s | 10 + test/tools/llvm-readobj/ARM/attribute-R.s | 10 + test/tools/llvm-readobj/ARM/attribute-S.s | 10 + .../llvm-readobj/ARM/attribute-conformance-1.s | 8 + .../llvm-readobj/ARM/attribute-conformance-2.s | 8 + test/tools/llvm-readobj/ARM/attributes.s | 287 ----------------- test/tools/llvm-readobj/Inputs/export-arm.dll | Bin 0 -> 5632 bytes test/tools/llvm-readobj/Inputs/export-x64.dll | Bin 0 -> 6144 bytes test/tools/llvm-readobj/Inputs/export-x86.dll | Bin 0 -> 6144 bytes .../Inputs/relocs-no-symtab.obj.coff-i386 | Bin 0 -> 97 bytes .../llvm-readobj/Inputs/relocs.obj.elf-aarch64 | Bin 3144 -> 4232 bytes test/tools/llvm-readobj/Inputs/relocs.obj.elf-arm | Bin 2100 -> 2112 bytes test/tools/llvm-readobj/Inputs/relocs.py | 44 ++- .../tools/llvm-readobj/Inputs/trivial.exe.coff-arm | Bin 0 -> 7680 bytes test/tools/llvm-readobj/codeview-linetables.test | 28 +- test/tools/llvm-readobj/coff-arm-baserelocs.test | 7 + test/tools/llvm-readobj/coff-exports.test | 11 + test/tools/llvm-readobj/reloc-types.test | 44 ++- test/tools/llvm-readobj/relocations.test | 2 + 113 files changed, 2711 insertions(+), 344 deletions(-) create mode 100755 test/tools/dsymutil/Inputs/basic-archive.macho.x86_64 create mode 100755 test/tools/dsymutil/Inputs/basic-lto.macho.x86_64 create mode 100644 test/tools/dsymutil/Inputs/basic-lto.macho.x86_64.o create mode 100755 test/tools/dsymutil/Inputs/basic.macho.x86_64 create mode 100644 test/tools/dsymutil/Inputs/basic1.c create mode 100644 test/tools/dsymutil/Inputs/basic1.macho.x86_64.o create mode 100644 test/tools/dsymutil/Inputs/basic2.c create mode 100644 test/tools/dsymutil/Inputs/basic2.macho.x86_64.o create mode 100644 test/tools/dsymutil/Inputs/basic3.c create mode 100644 test/tools/dsymutil/Inputs/basic3.macho.x86_64.o create mode 100644 test/tools/dsymutil/Inputs/libbasic.a create mode 100644 test/tools/dsymutil/basic-linking.test create mode 100644 test/tools/dsymutil/debug-map-parsing.test create mode 100644 test/tools/gold/Inputs/drop-debug.bc create mode 100644 test/tools/gold/coff.ll create mode 100644 test/tools/gold/drop-debug.ll create mode 100644 test/tools/gold/no-map-whole-file.ll create mode 100644 test/tools/gold/stats.ll create mode 100644 test/tools/llvm-objdump/AArch64/Inputs/link-opt-hints.macho-aarch64 create mode 100644 test/tools/llvm-objdump/AArch64/macho-link-opt-hints.test create mode 100644 test/tools/llvm-objdump/AArch64/macho-private-headers.test create mode 100644 test/tools/llvm-objdump/ARM/Inputs/data-in-code.macho-arm create mode 100644 test/tools/llvm-objdump/ARM/macho-data-in-code.test create mode 100644 test/tools/llvm-objdump/ARM/macho-private-headers.test create mode 100644 test/tools/llvm-objdump/Inputs/common-symbol-elf create mode 100644 test/tools/llvm-objdump/Inputs/proc-specific-section-elf create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibModInit.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibRoutines.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibSubClient.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibSubFramework.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibSubLibrary.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/dylibSubUmbrella.macho-x86_64 create mode 100755 test/tools/llvm-objdump/X86/Inputs/exeThread.macho-x86_64 create mode 100644 test/tools/llvm-objdump/X86/Inputs/linkerOption.macho-x86_64 create mode 100644 test/tools/llvm-objdump/X86/Inputs/macho-universal-archive.x86_64.i386 create mode 100755 test/tools/llvm-objdump/X86/Inputs/macho-universal.x86_64.i386 create mode 100644 test/tools/llvm-objdump/X86/macho-archive-headers.test create mode 100644 test/tools/llvm-objdump/X86/macho-cstring-dump.test create mode 100644 test/tools/llvm-objdump/X86/macho-indirect-symbols.test create mode 100644 test/tools/llvm-objdump/X86/macho-literal-pointers-i386.test create mode 100644 test/tools/llvm-objdump/X86/macho-literal-pointers-x86_64.test create mode 100644 test/tools/llvm-objdump/X86/macho-literals.test create mode 100644 test/tools/llvm-objdump/X86/macho-nontext-disasm.test create mode 100644 test/tools/llvm-objdump/X86/macho-relocations.test create mode 100644 test/tools/llvm-objdump/X86/macho-section-contents.test create mode 100644 test/tools/llvm-objdump/X86/macho-section-headers.test create mode 100644 test/tools/llvm-objdump/X86/macho-section.test create mode 100644 test/tools/llvm-objdump/X86/macho-symbol-table.test create mode 100644 test/tools/llvm-objdump/X86/macho-universal-x86_64.i386.test create mode 100644 test/tools/llvm-objdump/X86/macho-unwind-info.test create mode 100644 test/tools/llvm-objdump/common-symbol-elf.test create mode 100644 test/tools/llvm-objdump/proc-specific-section-elf.test create mode 100644 test/tools/llvm-readobj/ARM/attribute-0.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-1.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-10.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-11.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-12.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-13.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-136.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-14.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-15.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-2.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-3.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-4.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-5.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-6.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-7.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-8.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-9.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-A.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-M.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-R.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-S.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-conformance-1.s create mode 100644 test/tools/llvm-readobj/ARM/attribute-conformance-2.s delete mode 100644 test/tools/llvm-readobj/ARM/attributes.s create mode 100755 test/tools/llvm-readobj/Inputs/export-arm.dll create mode 100755 test/tools/llvm-readobj/Inputs/export-x64.dll create mode 100755 test/tools/llvm-readobj/Inputs/export-x86.dll create mode 100644 test/tools/llvm-readobj/Inputs/relocs-no-symtab.obj.coff-i386 create mode 100755 test/tools/llvm-readobj/Inputs/trivial.exe.coff-arm create mode 100644 test/tools/llvm-readobj/coff-arm-baserelocs.test create mode 100644 test/tools/llvm-readobj/coff-exports.test (limited to 'test/tools') diff --git a/test/tools/dsymutil/Inputs/basic-archive.macho.x86_64 b/test/tools/dsymutil/Inputs/basic-archive.macho.x86_64 new file mode 100755 index 0000000..abffb06 Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic-archive.macho.x86_64 differ diff --git a/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64 b/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64 new file mode 100755 index 0000000..b5ffb03 Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64 differ diff --git a/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64.o b/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64.o new file mode 100644 index 0000000..c68e15a Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic-lto.macho.x86_64.o differ diff --git a/test/tools/dsymutil/Inputs/basic.macho.x86_64 b/test/tools/dsymutil/Inputs/basic.macho.x86_64 new file mode 100755 index 0000000..8b3a34a Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic.macho.x86_64 differ diff --git a/test/tools/dsymutil/Inputs/basic1.c b/test/tools/dsymutil/Inputs/basic1.c new file mode 100644 index 0000000..cedf83a --- /dev/null +++ b/test/tools/dsymutil/Inputs/basic1.c @@ -0,0 +1,28 @@ +/* This is the main file used to produce the basic* objects that are + used for the dsymutil tests. + + These are compiled in a couple of different ways (always on a + Darwin system): + Basic compilation: + for FILE in basic1.c basic2.c basic3.c; do + clang -g -c $FILE -o ${FILE%.c}.macho.x86_64.o + done + clang basic1.macho.x86_64.o basic2.macho.x86_64.o basic3.macho.x86_64.o -o basic.macho.x86_64 -Wl,-dead_strip + + LTO compilation: + for FILE in basic1.c basic2.c basic3.c; do + clang -g -c -flto $FILE -o ${FILE%.c}-lto.o + done + clang basic1-lto.o basic2-lto.o basic3-lto.o -o basic-lto.macho.x86_64 -Wl,-object_path_lto,$PWD/basic-lto.macho.x86_64.o -Wl,-dead_strip + rm basic1-lto.o basic2-lto.o basic3-lto.o + + Archive compilation (after basic compilation): + ar -q libbasic.a basic2.macho.x86_64.o basic3.macho.x86_64.o + clang basic1.macho.x86_64.o -lbasic -o basic-archive.macho.x86_64 -Wl,-dead_strip -L. +*/ + +int foo(int); + +int main(int argc, const char *argv[]) { + return foo(argc); +} diff --git a/test/tools/dsymutil/Inputs/basic1.macho.x86_64.o b/test/tools/dsymutil/Inputs/basic1.macho.x86_64.o new file mode 100644 index 0000000..d7b5000 Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic1.macho.x86_64.o differ diff --git a/test/tools/dsymutil/Inputs/basic2.c b/test/tools/dsymutil/Inputs/basic2.c new file mode 100644 index 0000000..13c6d07 --- /dev/null +++ b/test/tools/dsymutil/Inputs/basic2.c @@ -0,0 +1,22 @@ +/* For compilation instructions see basic1.c. */ + +static int baz = 42; +static int private_int; +extern volatile int val; +int unused_data = 1; + +int bar(int); + +void unused1() { + bar(baz); +} + +static int inc() { + return ++private_int; +} + +__attribute__((noinline)) +int foo(int arg) { + return bar(arg+val) + inc() + baz++; +} + diff --git a/test/tools/dsymutil/Inputs/basic2.macho.x86_64.o b/test/tools/dsymutil/Inputs/basic2.macho.x86_64.o new file mode 100644 index 0000000..bdd8225 Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic2.macho.x86_64.o differ diff --git a/test/tools/dsymutil/Inputs/basic3.c b/test/tools/dsymutil/Inputs/basic3.c new file mode 100644 index 0000000..f20998a --- /dev/null +++ b/test/tools/dsymutil/Inputs/basic3.c @@ -0,0 +1,20 @@ +/* For compilation instructions see basic1.c. */ + +volatile int val; + +extern int foo(int); + +int unused2() { + return foo(val); +} + +static int inc() { + return ++val; +} + +__attribute__((noinline)) +int bar(int arg) { + if (arg > 42) + return inc(); + return foo(val + arg); +} diff --git a/test/tools/dsymutil/Inputs/basic3.macho.x86_64.o b/test/tools/dsymutil/Inputs/basic3.macho.x86_64.o new file mode 100644 index 0000000..3c1c639 Binary files /dev/null and b/test/tools/dsymutil/Inputs/basic3.macho.x86_64.o differ diff --git a/test/tools/dsymutil/Inputs/libbasic.a b/test/tools/dsymutil/Inputs/libbasic.a new file mode 100644 index 0000000..9657e78 Binary files /dev/null and b/test/tools/dsymutil/Inputs/libbasic.a differ diff --git a/test/tools/dsymutil/basic-linking.test b/test/tools/dsymutil/basic-linking.test new file mode 100644 index 0000000..5de6c13 --- /dev/null +++ b/test/tools/dsymutil/basic-linking.test @@ -0,0 +1,149 @@ +RUN: llvm-dsymutil -v -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s +RUN: llvm-dsymutil -v -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO +RUN: llvm-dsymutil -v -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE + +This test check the basic Dwarf linking process through the debug dumps. + +================================= Simple link ================================ +CHECK: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o +CHECK: Input compilation unit: +CHECK-NEXT: TAG_compile_unit +CHECK-NOT: TAG +CHECK: AT_name {{.*}}basic1.c +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0 +CHECK-NEXT: DW_TAG_subprogram +CHECK-NEXT: DW_AT_name{{.*}}"main" + +CHECK: DEBUG MAP OBJECT: {{.*}}basic2.macho.x86_64.o +CHECK: Input compilation unit: +CHECK-NEXT: TAG_compile_unit +CHECK-NOT: TAG +CHECK: AT_name {{.*}}basic2.c +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001008 +CHECK-NEXT: DW_TAG_variable +CHECK-NEXT: DW_AT_name {{.*}}"private_int" +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000 +CHECK-NEXT: DW_TAG_variable +CHECK-NEXT: DW_AT_name {{.*}}"baz" +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0 +CHECK-NEXT: DW_TAG_subprogram +CHECK-NEXT: DW_AT_name {{.*}}"foo" +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20 +CHECK-NEXT: DW_TAG_subprogram +CHECK-NEXT: DW_AT_name {{.*}}"inc" + +CHECK: DEBUG MAP OBJECT: {{.*}}basic3.macho.x86_64.o +CHECK: Input compilation unit: +CHECK-NEXT: TAG_compile_unit +CHECK-NOT: TAG +CHECK: AT_name {{.*}}basic3.c +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _val 0000000000000004 => 0000000100001004 +CHECK-NEXT: DW_TAG_variable +CHECK-NEXT: DW_AT_name {{.*}}"val" +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40 +CHECK-NEXT: DW_TAG_subprogram +CHECK-NEXT: DW_AT_name {{.*}}"bar" +CHECK-NOT: Found valid debug map entry +CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90 +CHECK-NEXT: DW_TAG_subprogram +CHECK-NEXT: DW_AT_name {{.*}}"inc") + + +================================= LTO link ================================ +CHECK-LTO: DEBUG MAP OBJECT: {{.*}}basic-lto.macho.x86_64.o +CHECK-LTO: Input compilation unit: +CHECK-LTO-NEXT: TAG_compile_unit +CHECK-LTO-NOT: TAG +CHECK-LTO: AT_name {{.*}}basic1.c +CHECK-LTO: Input compilation unit: +CHECK-LTO-NEXT: TAG_compile_unit +CHECK-LTO-NOT: TAG +CHECK-LTO: AT_name {{.*}}basic2.c +CHECK-LTO: Input compilation unit: +CHECK-LTO-NEXT: TAG_compile_unit +CHECK-LTO-NOT: TAG +CHECK-LTO: AT_name {{.*}}basic3.c + +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _main 0000000000000000 => 0000000100000f40 +CHECK-LTO-NEXT: DW_TAG_subprogram +CHECK-LTO-NEXT: DW_AT_name {{.*}}"main" +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _private_int 00000000000008e8 => 0000000100001008 +CHECK-LTO-NEXT: DW_TAG_variable +CHECK-LTO-NEXT: DW_AT_name {{.*}}"private_int" +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _baz 0000000000000658 => 0000000100001000 +CHECK-LTO-NEXT: DW_TAG_variable +CHECK-LTO-NEXT: DW_AT_name {{.*}} "baz" +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _foo 0000000000000010 => 0000000100000f50 +CHECK-LTO-NEXT: DW_TAG_subprogram +CHECK-LTO-NEXT: DW_AT_name {{.*}}"foo" +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _val 00000000000008ec => 0000000100001004 +CHECK-LTO-NEXT: DW_TAG_variable +CHECK-LTO-NEXT: DW_AT_name {{.*}}"val" +CHECK-LTO-NOT: Found valid debug map entry +CHECK-LTO: Found valid debug map entry: _bar 0000000000000050 => 0000000100000f90 +CHECK-LTO-NEXT: DW_TAG_subprogram +CHECK-LTO-NEXT: DW_AT_name {{.*}}"bar" + + +================================= Archive link ================================ +CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o +CHECK-ARCHIVE: Input compilation unit: +CHECK-ARCHIVE-NEXT: TAG_compile_unit +CHECK-ARCHIVE-NOT: TAG +CHECK-ARCHIVE: AT_name {{.*}}basic1.c +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0 +CHECK-ARCHIVE-NEXT: DW_TAG_subprogram +CHECK-ARCHIVE-NEXT: DW_AT_name{{.*}}"main" + +CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic2.macho.x86_64.o) +CHECK-ARCHIVE: Input compilation unit: +CHECK-ARCHIVE-NEXT: TAG_compile_unit +CHECK-ARCHIVE-NOT: TAG +CHECK-ARCHIVE: AT_name {{.*}}basic2.c +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001004 +CHECK-ARCHIVE-NEXT: DW_TAG_variable +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"private_int" +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000 +CHECK-ARCHIVE-NEXT: DW_TAG_variable +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"baz" +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0 +CHECK-ARCHIVE-NEXT: DW_TAG_subprogram +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"foo" +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20 +CHECK-ARCHIVE-NEXT: DW_TAG_subprogram +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc" + +CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic3.macho.x86_64.o) +CHECK-ARCHIVE: Input compilation unit: +CHECK-ARCHIVE-NEXT: TAG_compile_unit +CHECK-ARCHIVE-NOT: TAG +CHECK-ARCHIVE: AT_name {{.*}}basic3.c +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _val 0000000000000004 => 0000000100001008 +CHECK-ARCHIVE-NEXT: DW_TAG_variable +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"val" +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40 +CHECK-ARCHIVE-NEXT: DW_TAG_subprogram +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"bar" +CHECK-ARCHIVE-NOT: Found valid debug map entry +CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90 +CHECK-ARCHIVE-NEXT: DW_TAG_subprogram +CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc") diff --git a/test/tools/dsymutil/debug-map-parsing.test b/test/tools/dsymutil/debug-map-parsing.test new file mode 100644 index 0000000..b64ad9f --- /dev/null +++ b/test/tools/dsymutil/debug-map-parsing.test @@ -0,0 +1,79 @@ +RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s +RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO +RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE +RUN: llvm-dsymutil -v -parse-only %p/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefix=NOT-FOUND +RUN: not llvm-dsymutil -v -parse-only %p/Inputs/inexistant 2>&1 | FileCheck %s --check-prefix=NO-EXECUTABLE + + +Check that We can parse the debug map of the basic executable. + +CHECK-NOT: error +CHECK: DEBUG MAP: x86_64-unknown-unknown-macho +CHECK: /Inputs/basic1.macho.x86_64.o: +CHECK: 0000000000000000 => 0000000100000ea0 _main +CHECK: /Inputs/basic2.macho.x86_64.o: +CHECK: 0000000000000310 => 0000000100001000 _baz +CHECK: 0000000000000020 => 0000000100000ed0 _foo +CHECK: 0000000000000070 => 0000000100000f20 _inc +CHECK: 0000000000000560 => 0000000100001008 _private_int +CHECK: /Inputs/basic3.macho.x86_64.o: +CHECK: 0000000000000020 => 0000000100000f40 _bar +CHECK: 0000000000000070 => 0000000100000f90 _inc +CHECK: 0000000000000004 => 0000000100001004 _val +CHECK: END DEBUG MAP + + +Check that we can parse the debug-map of the basic-lto executable + +CHECK-LTO-NOT: error +CHECK-LTO: DEBUG MAP: x86_64-unknown-unknown-macho +CHECK-LTO: /Inputs/basic-lto.macho.x86_64.o: +CHECK-LTO: 0000000000000050 => 0000000100000f90 _bar +CHECK-LTO: 0000000000000658 => 0000000100001000 _baz +CHECK-LTO: 0000000000000010 => 0000000100000f50 _foo +CHECK-LTO: 0000000000000000 => 0000000100000f40 _main +CHECK-LTO: 00000000000008e8 => 0000000100001008 _private_int +CHECK-LTO: 00000000000008ec => 0000000100001004 _val +CHECK-LTO: END DEBUG MAP + +Check thet we correctly handle debug maps with archive members (including only +opening the archive once if mulitple of its members are used). + +CHECK-ARCHIVE: trying to open {{.*}}basic-archive.macho.x86_64' +CHECK-ARCHIVE-NEXT: loaded file. +CHECK-ARCHIVE-NEXT: trying to open {{.*}}/Inputs/basic1.macho.x86_64.o' +CHECK-ARCHIVE-NEXT: loaded file. +CHECK-ARCHIVE-NEXT: trying to open {{.*}}/libbasic.a(basic2.macho.x86_64.o)' +CHECK-ARCHIVE-NEXT: opened new archive {{.*}}/libbasic.a' +CHECK-ARCHIVE-NEXT: found member in current archive. +CHECK-ARCHIVE-NEXT: trying to open {{.*}}/libbasic.a(basic3.macho.x86_64.o)' +CHECK-ARCHIVE-NEXT: found member in current archive. +CHECK-ARCHIVE: DEBUG MAP: x86_64-unknown-unknown-macho +CHECK-ARCHIVE: object addr => executable addr symbol name +CHECK-ARCHIVE: /Inputs/basic1.macho.x86_64.o: +CHECK-ARCHIVE: 0000000000000000 => 0000000100000ea0 _main +CHECK-ARCHIVE: /Inputs/./libbasic.a(basic2.macho.x86_64.o): +CHECK-ARCHIVE: 0000000000000310 => 0000000100001000 _baz +CHECK-ARCHIVE: 0000000000000020 => 0000000100000ed0 _foo +CHECK-ARCHIVE: 0000000000000070 => 0000000100000f20 _inc +CHECK-ARCHIVE: 0000000000000560 => 0000000100001004 _private_int +CHECK-ARCHIVE: /Inputs/./libbasic.a(basic3.macho.x86_64.o): +CHECK-ARCHIVE: 0000000000000020 => 0000000100000f40 _bar +CHECK-ARCHIVE: 0000000000000070 => 0000000100000f90 _inc +CHECK-ARCHIVE: 0000000000000004 => 0000000100001008 _val +CHECK-ARCHIVE: END DEBUG MAP + +Check that we warn about missing object files (this presumes that the files aren't +present in the machine's /Inputs/ folder, which should be a pretty safe bet). + +NOT-FOUND: cannot open{{.*}}"/Inputs/basic1.macho.x86_64.o": {{[Nn]o}} such file +NOT-FOUND: cannot open{{.*}}"/Inputs/basic2.macho.x86_64.o": {{[Nn]o}} such file +NOT-FOUND: cannot open{{.*}}"/Inputs/basic3.macho.x86_64.o": {{[Nn]o}} such file +NOT-FOUND: DEBUG MAP: +NOT-FOUND-NEXT: object addr => executable addr symbol name +NOT-FOUND-NEXT: END DEBUG MAP + +Check that we correctly error out on invalid executatble. + +NO-EXECUTABLE: cannot parse{{.*}}/inexistant": {{[Nn]o}} such file +NO-EXECUTABLE-NOT: DEBUG MAP diff --git a/test/tools/gold/Inputs/comdat.ll b/test/tools/gold/Inputs/comdat.ll index e9e4704..464aefa 100644 --- a/test/tools/gold/Inputs/comdat.ll +++ b/test/tools/gold/Inputs/comdat.ll @@ -1,7 +1,12 @@ $c2 = comdat any +$c1 = comdat any -@v1 = weak_odr global i32 41, comdat $c2 -define weak_odr protected i32 @f1(i8* %this) comdat $c2 { +; This is only present in this file. The linker will keep $c1 from the first +; file and this will be undefined. +@will_be_undefined = global i32 1, comdat($c1) + +@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 diff --git a/test/tools/gold/Inputs/drop-debug.bc b/test/tools/gold/Inputs/drop-debug.bc new file mode 100644 index 0000000..f9c471f Binary files /dev/null and b/test/tools/gold/Inputs/drop-debug.bc differ diff --git a/test/tools/gold/alias.ll b/test/tools/gold/alias.ll index dbf3af5..b4edb05 100644 --- a/test/tools/gold/alias.ll +++ b/test/tools/gold/alias.ll @@ -1,6 +1,6 @@ ; 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: %gold -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 diff --git a/test/tools/gold/bad-alias.ll b/test/tools/gold/bad-alias.ll index e0fc788..a98bf71 100644 --- a/test/tools/gold/bad-alias.ll +++ b/test/tools/gold/bad-alias.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t.o -; RUN: not ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: not %gold -plugin %llvmshlibdir/LLVMgold.so \ ; RUN: --plugin-opt=emit-llvm \ ; RUN: -shared %t.o -o %t2.o 2>&1 | FileCheck %s diff --git a/test/tools/gold/bcsection.ll b/test/tools/gold/bcsection.ll index 8565d9d..37d2994 100644 --- a/test/tools/gold/bcsection.ll +++ b/test/tools/gold/bcsection.ll @@ -2,7 +2,7 @@ ; 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: %gold -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 diff --git a/test/tools/gold/coff.ll b/test/tools/gold/coff.ll new file mode 100644 index 0000000..5d8a1c9 --- /dev/null +++ b/test/tools/gold/coff.ll @@ -0,0 +1,22 @@ +; RUN: llvm-as %s -o %t.o +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so -plugin-opt=emit-llvm \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o -o - | FileCheck %s + + +target datalayout = "m:w" + +; CHECK: define void @f() { +define void @f() { + ret void +} + +; CHECK: define internal void @g() { +define hidden void @g() { + ret void +} + +; CHECK: define internal void @h() { +define linkonce_odr void @h() { + ret void +} diff --git a/test/tools/gold/comdat.ll b/test/tools/gold/comdat.ll index ba3abce..370bf56 100644 --- a/test/tools/gold/comdat.ll +++ b/test/tools/gold/comdat.ll @@ -1,13 +1,13 @@ ; 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: %gold -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 { +@v1 = weak_odr global i32 42, comdat($c1) +define weak_odr i32 @f1(i8*) comdat($c1) { bb10: br label %bb11 bb11: @@ -27,7 +27,7 @@ bb11: ; CHECK: $c1 = comdat any ; CHECK: $c2 = comdat any -; CHECK: @v1 = weak_odr global i32 42, comdat $c1 +; CHECK: @v1 = weak_odr global i32 42, comdat($c1) ; CHECK: @r11 = global i32* @v1{{$}} ; CHECK: @r12 = global i32 (i8*)* @f1{{$}} @@ -35,7 +35,7 @@ bb11: ; CHECK: @r21 = global i32* @v1{{$}} ; CHECK: @r22 = global i32 (i8*)* @f1{{$}} -; CHECK: @v11 = internal global i32 41, comdat $c2 +; CHECK: @v11 = internal global i32 41, comdat($c2) ; CHECK: @a11 = alias i32* @v1{{$}} ; CHECK: @a12 = alias bitcast (i32* @v1 to i16*) @@ -49,14 +49,14 @@ bb11: ; 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: 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: define internal i32 @f12(i8* %this) comdat($c2) { ; CHECK-NEXT: bb20: ; CHECK-NEXT: store i8* %this, i8** null ; CHECK-NEXT: br label %bb21 diff --git a/test/tools/gold/common.ll b/test/tools/gold/common.ll index f309231..ef18e68 100644 --- a/test/tools/gold/common.ll +++ b/test/tools/gold/common.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as %s -o %t1.o ; RUN: llvm-as %p/Inputs/common.ll -o %t2.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -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 @@ -11,7 +11,7 @@ ; 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: %gold -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 @@ -20,7 +20,7 @@ ; 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: %gold -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 diff --git a/test/tools/gold/drop-debug.ll b/test/tools/gold/drop-debug.ll new file mode 100644 index 0000000..b8c4d8c --- /dev/null +++ b/test/tools/gold/drop-debug.ll @@ -0,0 +1,8 @@ +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm -shared %p/Inputs/drop-debug.bc \ +; RUN: -o t2.bc 2>&1 | FileCheck %s + +; drop-debug.bc was created from "void f(void) {}" with clang 3.5 and +; -gline-tables-only, so it contains old debug info. + +; CHECK: warning: LLVM gold plugin: ignoring debug info with an invalid version (1) in {{.*}}/Inputs/drop-debug.bc diff --git a/test/tools/gold/emit-llvm.ll b/test/tools/gold/emit-llvm.ll index 0a6dcfc..f851fbf 100644 --- a/test/tools/gold/emit-llvm.ll +++ b/test/tools/gold/emit-llvm.ll @@ -1,20 +1,31 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -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: %gold -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 +; RUN: rm -f %t4.o +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: -m elf_x86_64 --plugin-opt=disable-output \ +; RUN: -shared %t.o -o %t4.o +; RUN: not test -a %t4.o + target triple = "x86_64-unknown-linux-gnu" +@g7 = extern_weak global i32 +; CHECK-DAG: @g7 = extern_weak global i32 + +@g8 = external global i32 + ; CHECK: define internal void @f1() ; OPT-NOT: @f1 define hidden void @f1() { @@ -56,6 +67,13 @@ define linkonce_odr void @f6() unnamed_addr { } @g6 = global void()* @f6 +define i32* @f7() { + ret i32* @g7 +} + +define i32* @f8() { + ret i32* @g8 +} ; API: f1 PREVAILING_DEF_IRONLY ; API: f2 PREVAILING_DEF_IRONLY @@ -63,5 +81,9 @@ define linkonce_odr void @f6() unnamed_addr { ; API: f4 PREVAILING_DEF_IRONLY_EXP ; API: f5 PREVAILING_DEF_IRONLY_EXP ; API: f6 PREVAILING_DEF_IRONLY_EXP +; API: f7 PREVAILING_DEF_IRONLY_EXP +; API: f8 PREVAILING_DEF_IRONLY_EXP +; API: g7 UNDEF +; API: g8 UNDEF ; 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 index 8db7644..858cd47 100644 --- a/test/tools/gold/invalid.ll +++ b/test/tools/gold/invalid.ll @@ -1,4 +1,4 @@ -; RUN: not ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: not %gold -plugin %llvmshlibdir/LLVMgold.so \ ; RUN: %p/Inputs/invalid.bc -o %t2 2>&1 | FileCheck %s ; test that only one error gets printed diff --git a/test/tools/gold/linker-script.ll b/test/tools/gold/linker-script.ll index 35a7694..7c88b0f 100644 --- a/test/tools/gold/linker-script.ll +++ b/test/tools/gold/linker-script.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ ; RUN: --plugin-opt=emit-llvm \ ; RUN: -shared %t.o -o %t2.o \ ; RUN: -version-script=%p/Inputs/linker-script.export diff --git a/test/tools/gold/linkonce-weak.ll b/test/tools/gold/linkonce-weak.ll index 765275b..a0cccea 100644 --- a/test/tools/gold/linkonce-weak.ll +++ b/test/tools/gold/linkonce-weak.ll @@ -1,12 +1,12 @@ ; 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: %gold -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: %gold -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 diff --git a/test/tools/gold/mtriple.ll b/test/tools/gold/mtriple.ll index 6395af6..94211ed 100644 --- a/test/tools/gold/mtriple.ll +++ b/test/tools/gold/mtriple.ll @@ -1,5 +1,5 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so -m elf32ppc \ +; RUN: %gold -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 diff --git a/test/tools/gold/no-map-whole-file.ll b/test/tools/gold/no-map-whole-file.ll new file mode 100644 index 0000000..4c261d7 --- /dev/null +++ b/test/tools/gold/no-map-whole-file.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as -o %t.bc %s +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so -plugin-opt=emit-llvm \ +; RUN: --no-map-whole-files -r -o %t2.bc %t.bc +; RUN: llvm-dis < %t2.bc -o - | FileCheck %s + +; CHECK: main +define i32 @main() { + ret i32 0 +} diff --git a/test/tools/gold/option.ll b/test/tools/gold/option.ll index 8154e43..59e3f1e 100644 --- a/test/tools/gold/option.ll +++ b/test/tools/gold/option.ll @@ -1,5 +1,5 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so -m elf_x86_64 \ +; RUN: %gold -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 \ diff --git a/test/tools/gold/pr19901.ll b/test/tools/gold/pr19901.ll index 304246b..2a7dea1 100644 --- a/test/tools/gold/pr19901.ll +++ b/test/tools/gold/pr19901.ll @@ -1,6 +1,6 @@ ; 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: %gold -shared -o %t.so -plugin %llvmshlibdir/LLVMgold.so %t2.o %t.o ; RUN: llvm-readobj -t %t.so | FileCheck %s ; CHECK: Symbol { @@ -9,7 +9,7 @@ ; CHECK-NEXT: Size: ; CHECK-NEXT: Binding: Local ; CHECK-NEXT: Type: Function -; CHECK-NEXT: Other: 2 +; CHECK-NEXT: Other: {{2|0}} ; CHECK-NEXT: Section: .text ; CHECK-NEXT: } diff --git a/test/tools/gold/slp-vectorize.ll b/test/tools/gold/slp-vectorize.ll index d378902..d39aa76 100644 --- a/test/tools/gold/slp-vectorize.ll +++ b/test/tools/gold/slp-vectorize.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -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 diff --git a/test/tools/gold/stats.ll b/test/tools/gold/stats.ll new file mode 100644 index 0000000..b3c8297 --- /dev/null +++ b/test/tools/gold/stats.ll @@ -0,0 +1,7 @@ +; REQUIRES: asserts + +; RUN: llvm-as %s -o %t.o +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so -shared \ +; RUN: -plugin-opt=-stats %t.o -o %t2 2>&1 | FileCheck %s + +; CHECK: Statistics Collected diff --git a/test/tools/gold/vectorize.ll b/test/tools/gold/vectorize.ll index 3d305db..c1626d7 100644 --- a/test/tools/gold/vectorize.ll +++ b/test/tools/gold/vectorize.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -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 diff --git a/test/tools/gold/weak.ll b/test/tools/gold/weak.ll index e05e905..6d8d7a8 100644 --- a/test/tools/gold/weak.ll +++ b/test/tools/gold/weak.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as %s -o %t.o ; RUN: llvm-as %p/Inputs/weak.ll -o %t2.o -; RUN: ld -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: %gold -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 diff --git a/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping b/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping index 20eb0d7..e97320b 100644 Binary files a/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping and b/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/regionMarkers.covmapping b/test/tools/llvm-cov/Inputs/regionMarkers.covmapping index 3ebcb07..501cba2 100644 Binary files a/test/tools/llvm-cov/Inputs/regionMarkers.covmapping and b/test/tools/llvm-cov/Inputs/regionMarkers.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/report.covmapping b/test/tools/llvm-cov/Inputs/report.covmapping index 32d84bc..5d0bfc1 100644 Binary files a/test/tools/llvm-cov/Inputs/report.covmapping and b/test/tools/llvm-cov/Inputs/report.covmapping differ diff --git a/test/tools/llvm-cov/Inputs/showExpansions.covmapping b/test/tools/llvm-cov/Inputs/showExpansions.covmapping index b8c7d97..e02a728 100644 Binary files a/test/tools/llvm-cov/Inputs/showExpansions.covmapping and b/test/tools/llvm-cov/Inputs/showExpansions.covmapping differ diff --git a/test/tools/llvm-cov/report.cpp b/test/tools/llvm-cov/report.cpp index 297322a..570012e 100644 --- a/test/tools/llvm-cov/report.cpp +++ b/test/tools/llvm-cov/report.cpp @@ -1,7 +1,21 @@ -// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors 2>&1 | FileCheck %s +// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors -filename-equivalence 2>&1 | FileCheck %s +// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors -filename-equivalence report.cpp 2>&1 | FileCheck -check-prefix=FILT-NEXT %s -// CHECK: Filename Regions Miss Cover Functions Executed -// CHECK: TOTAL 5 2 60.00% 4 75.00% +// CHECK: Filename Regions Miss Cover Functions Executed +// CHECK-NEXT: --- +// CHECK-NEXT: report.cpp 5 2 60.00% 4 75.00% +// CHECK-NEXT: --- +// CHECK-NEXT: TOTAL 5 2 60.00% 4 75.00% + +// FILT: File 'report.cpp': +// FILT-NEXT: Name Regions Miss Cover Lines Miss Cover +// FILT-NEXT: --- +// FILT-NEXT: _Z3foob 2 1 50.00% 4 2 50.00% +// FILT-NEXT: _Z3barv 1 0 100.00% 2 0 100.00% +// FILT-NEXT: _Z4funcv 1 1 0.00% 2 2 0.00% +// FILT-NEXT: main 1 0 100.00% 5 0 100.00% +// FILT-NEXT: --- +// FILT-NEXT: TOTAL 5 2 60.00% 13 4 69.23% void foo(bool cond) { if (cond) { diff --git a/test/tools/llvm-cov/showHighlightedRanges.cpp b/test/tools/llvm-cov/showHighlightedRanges.cpp index cec7308..1ff7929 100644 --- a/test/tools/llvm-cov/showHighlightedRanges.cpp +++ b/test/tools/llvm-cov/showHighlightedRanges.cpp @@ -2,17 +2,17 @@ void func() { return; - int i = 0; // CHECK: Highlighted line [[@LINE]], 3 -> 12 -} + int i = 0; // CHECK: Highlighted line [[@LINE]], 3 -> ? +} // CHECK: Highlighted line [[@LINE]], 1 -> 2 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 - } + --x; // CHECK: Highlighted line [[@LINE]], 7 -> ? + } // CHECK: Highlighted line [[@LINE]], 1 -> 6 + int i = 0; // CHECK: Highlighted line [[@LINE]], 5 -> ? + } // CHECK: Highlighted line [[@LINE]], 1 -> 4 } void test() { diff --git a/test/tools/llvm-cov/showLineExecutionCounts.cpp b/test/tools/llvm-cov/showLineExecutionCounts.cpp index 34baa57..625c3f2 100644 --- a/test/tools/llvm-cov/showLineExecutionCounts.cpp +++ b/test/tools/llvm-cov/showLineExecutionCounts.cpp @@ -12,11 +12,11 @@ int main() { // CHECK: 1| [[@LINE]]|int main( x = 1; // CHECK: 1| [[@LINE]]| x = 1 } // CHECK: 1| [[@LINE]]| } // CHECK: 1| [[@LINE]]| - for (int i = 0; i < 100; ++i) { // CHECK: 100| [[@LINE]]| for ( + for (int i = 0; i < 100; ++i) { // CHECK: 101| [[@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 ? x + 1 : x - 1; // CHECK: 1| [[@LINE]]| x = x = x > 10 ? // CHECK: 1| [[@LINE]]| x = x - 1: // CHECK: 0| [[@LINE]]| x x + 1; // CHECK: 1| [[@LINE]]| x diff --git a/test/tools/llvm-objdump/AArch64/Inputs/link-opt-hints.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/link-opt-hints.macho-aarch64 new file mode 100644 index 0000000..12d33fc Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/link-opt-hints.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/macho-link-opt-hints.test b/test/tools/llvm-objdump/AArch64/macho-link-opt-hints.test new file mode 100644 index 0000000..932bc4f --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/macho-link-opt-hints.test @@ -0,0 +1,11 @@ +RUN: llvm-objdump -m -link-opt-hints %p/Inputs/link-opt-hints.macho-aarch64 | FileCheck %s + +CHECK: Linker optimiztion hints (8 total bytes) +CHECK: identifier 8 AdrpLdrGot +CHECK: narguments 2 +CHECK: value 0x18 +CHECK: value 0x1c +CHECK: identifier 7 AdrpAdd +CHECK: narguments 2 +CHECK: value 0x6c +CHECK: value 0x70 diff --git a/test/tools/llvm-objdump/AArch64/macho-private-headers.test b/test/tools/llvm-objdump/AArch64/macho-private-headers.test new file mode 100644 index 0000000..cdf98b1 --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/macho-private-headers.test @@ -0,0 +1,312 @@ +// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-aarch64 | FileCheck %s +// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-aarch64 \ +// RUN: | FileCheck %s -check-prefix=EXE + +CHECK: Mach header +CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +CHECK: MH_MAGIC_64 ARM64 ALL 0x00 OBJECT 4 352 SUBSECTIONS_VIA_SYMBOLS +CHECK: Load command 0 +CHECK: cmd LC_SEGMENT_64 +CHECK: cmdsize 232 +CHECK: segname +CHECK: vmaddr 0x0000000000000000 +CHECK: vmsize 0x000000000000004d +CHECK: fileoff 384 +CHECK: filesize 77 +CHECK: maxprot rwx +CHECK: initprot rwx +CHECK: nsects 2 +CHECK: flags (none) +CHECK: Section +CHECK: sectname __text +CHECK: segname __TEXT +CHECK: addr 0x0000000000000000 +CHECK: size 0x0000000000000040 +CHECK: offset 384 +CHECK: align 2^2 (4) +CHECK: reloff 464 +CHECK: nreloc 3 +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 0x0000000000000040 +CHECK: size 0x000000000000000d +CHECK: offset 448 +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: Load command 1 +CHECK: cmd LC_VERSION_MIN_IPHONEOS +CHECK: cmdsize 16 +CHECK: version 9.0 +CHECK: sdk n/a +CHECK: Load command 2 +CHECK: cmd LC_SYMTAB +CHECK: cmdsize 24 +CHECK: symoff 488 +CHECK: nsyms 5 +CHECK: stroff 568 +CHECK: strsize 36 +CHECK: Load command 3 +CHECK: cmd LC_DYSYMTAB +CHECK: cmdsize 80 +CHECK: ilocalsym 0 +CHECK: nlocalsym 3 +CHECK: iextdefsym 3 +CHECK: nextdefsym 1 +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 ARM64 ALL 0x00 EXECUTE 17 1240 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 472 +EXE: segname __TEXT +EXE: vmaddr 0x0000000100000000 +EXE: vmsize 0x0000000000008000 +EXE: fileoff 0 +EXE: filesize 32768 +EXE: maxprot r-x +EXE: initprot r-x +EXE: nsects 5 +EXE: flags (none) +EXE: Section +EXE: sectname __text +EXE: segname __TEXT +EXE: addr 0x0000000100007f38 +EXE: size 0x0000000000000040 +EXE: offset 32568 +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 __stubs +EXE: segname __TEXT +EXE: addr 0x0000000100007f78 +EXE: size 0x000000000000000c +EXE: offset 32632 +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 12 (size of stubs) +EXE: Section +EXE: sectname __stub_helper +EXE: segname __TEXT +EXE: addr 0x0000000100007f84 +EXE: size 0x0000000000000024 +EXE: offset 32644 +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 0x0000000100007fa8 +EXE: size 0x000000000000000d +EXE: offset 32680 +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 0x0000000100007fb8 +EXE: size 0x0000000000000048 +EXE: offset 32696 +EXE: align 2^2 (4) +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 0x0000000100008000 +EXE: vmsize 0x0000000000004000 +EXE: fileoff 32768 +EXE: filesize 16384 +EXE: maxprot rw- +EXE: initprot rw- +EXE: nsects 2 +EXE: flags (none) +EXE: Section +EXE: sectname __got +EXE: segname __DATA +EXE: addr 0x0000000100008000 +EXE: size 0x0000000000000010 +EXE: offset 32768 +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 0x0000000100008010 +EXE: size 0x0000000000000008 +EXE: offset 32784 +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 0x000000010000c000 +EXE: vmsize 0x0000000000004000 +EXE: fileoff 49152 +EXE: filesize 264 +EXE: maxprot r-- +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 49152 +EXE: rebase_size 8 +EXE: bind_off 49160 +EXE: bind_size 24 +EXE: weak_bind_off 0 +EXE: weak_bind_size 0 +EXE: lazy_bind_off 49184 +EXE: lazy_bind_size 16 +EXE: export_off 49200 +EXE: export_size 48 +EXE: Load command 5 +EXE: cmd LC_SYMTAB +EXE: cmdsize 24 +EXE: symoff 49280 +EXE: nsyms 4 +EXE: stroff 49360 +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 49344 +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 D687F888-CD3F-3276-8C94-BA3CCA21D820 +EXE: Load command 9 +EXE: cmd LC_VERSION_MIN_IPHONEOS +EXE: cmdsize 16 +EXE: version 9.0 +EXE: sdk 9.0 +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 32568 +EXE: stacksize 0 +EXE: Load command 12 +EXE: cmd LC_ENCRYPTION_INFO_64 +EXE: cmdsize 24 +EXE: cryptoff 16384 +EXE: cryptsize 16384 +EXE: cryptid 0 +EXE: pad 0 +EXE: Load command 13 +EXE: cmd LC_LOAD_DYLIB +EXE: cmdsize 56 +EXE: name /usr/lib/libSystem.B.dylib (offset 24) +EXE: current version 1215.0.0 +EXE: compatibility version 1.0.0 +EXE: Load command 14 +EXE: cmd LC_FUNCTION_STARTS +EXE: cmdsize 16 +EXE: dataoff 49248 +EXE: datasize 8 +EXE: Load command 15 +EXE: cmd LC_DATA_IN_CODE +EXE: cmdsize 16 +EXE: dataoff 49256 +EXE: datasize 0 +EXE: Load command 16 +EXE: cmd LC_DYLIB_CODE_SIGN_DRS +EXE: cmdsize 16 +EXE: dataoff 49256 +EXE: datasize 24 diff --git a/test/tools/llvm-objdump/ARM/Inputs/data-in-code.macho-arm b/test/tools/llvm-objdump/ARM/Inputs/data-in-code.macho-arm new file mode 100644 index 0000000..e826f29 Binary files /dev/null and b/test/tools/llvm-objdump/ARM/Inputs/data-in-code.macho-arm differ diff --git a/test/tools/llvm-objdump/ARM/macho-data-in-code.test b/test/tools/llvm-objdump/ARM/macho-data-in-code.test new file mode 100644 index 0000000..1814dc0 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-data-in-code.test @@ -0,0 +1,8 @@ +RUN: llvm-objdump -m -data-in-code %p/Inputs/data-in-code.macho-arm | FileCheck %s + +CHECK: Data in code table (4 entries) +CHECK: offset length kind +CHECK: 0x00000000 4 DATA +CHECK: 0x00000004 4 JUMP_TABLE32 +CHECK: 0x00000008 2 JUMP_TABLE16 +CHECK: 0x0000000a 1 JUMP_TABLE8 diff --git a/test/tools/llvm-objdump/ARM/macho-private-headers.test b/test/tools/llvm-objdump/ARM/macho-private-headers.test new file mode 100644 index 0000000..4ab3043 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-private-headers.test @@ -0,0 +1,345 @@ +// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-arm | FileCheck %s +// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-arm \ +// RUN: | FileCheck %s -check-prefix=EXE + +CHECK: Mach header +CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +CHECK: MH_MAGIC ARM V7 0x00 OBJECT 3 568 SUBSECTIONS_VIA_SYMBOLS +CHECK: Load command 0 +CHECK: cmd LC_SEGMENT +CHECK: cmdsize 464 +CHECK: segname +CHECK: vmaddr 0x00000000 +CHECK: vmsize 0x00000043 +CHECK: fileoff 596 +CHECK: filesize 67 +CHECK: maxprot rwx +CHECK: initprot rwx +CHECK: nsects 6 +CHECK: flags (none) +CHECK: Section +CHECK: sectname __text +CHECK: segname __TEXT +CHECK: addr 0x00000000 +CHECK: size 0x00000036 +CHECK: offset 596 +CHECK: align 2^2 (4) +CHECK: reloff 664 +CHECK: nreloc 5 +CHECK: type S_REGULAR +CHECK: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __textcoal_nt +CHECK: segname __TEXT +CHECK: addr 0x00000036 +CHECK: size 0x00000000 +CHECK: offset 650 +CHECK: align 2^0 (1) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_COALESCED +CHECK: attributes PURE_INSTRUCTIONS +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __const_coal +CHECK: segname __TEXT +CHECK: addr 0x00000036 +CHECK: size 0x00000000 +CHECK: offset 650 +CHECK: align 2^0 (1) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_COALESCED +CHECK: attributes (none) +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __picsymbolstub4 +CHECK: segname __TEXT +CHECK: addr 0x00000036 +CHECK: size 0x00000000 +CHECK: offset 650 +CHECK: align 2^0 (1) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_SYMBOL_STUBS +CHECK: attributes (none) +CHECK: reserved1 0 (index into indirect symbol table) +CHECK: reserved2 16 (size of stubs) +CHECK: Section +CHECK: sectname __StaticInit +CHECK: segname __TEXT +CHECK: addr 0x00000036 +CHECK: size 0x00000000 +CHECK: offset 650 +CHECK: align 2^0 (1) +CHECK: reloff 0 +CHECK: nreloc 0 +CHECK: type S_REGULAR +CHECK: attributes PURE_INSTRUCTIONS +CHECK: reserved1 0 +CHECK: reserved2 0 +CHECK: Section +CHECK: sectname __cstring +CHECK: segname __TEXT +CHECK: addr 0x00000036 +CHECK: size 0x0000000d +CHECK: offset 650 +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: Load command 1 +CHECK: cmd LC_SYMTAB +CHECK: cmdsize 24 +CHECK: symoff 704 +CHECK: nsyms 2 +CHECK: stroff 728 +CHECK: strsize 16 +CHECK: Load command 2 +CHECK: cmd LC_DYSYMTAB +CHECK: cmdsize 80 +CHECK: ilocalsym 0 +CHECK: nlocalsym 0 +CHECK: iextdefsym 0 +CHECK: nextdefsym 1 +CHECK: iundefsym 1 +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 ARM V7 0x00 EXECUTE 17 1012 NOUNDEFS DYLDLINK TWOLEVEL PIE +EXE: Load command 0 +EXE: cmd LC_SEGMENT +EXE: cmdsize 56 +EXE: segname __PAGEZERO +EXE: vmaddr 0x00000000 +EXE: vmsize 0x00004000 +EXE: fileoff 0 +EXE: filesize 0 +EXE: maxprot --- +EXE: initprot --- +EXE: nsects 0 +EXE: flags (none) +EXE: Load command 1 +EXE: cmd LC_SEGMENT +EXE: cmdsize 328 +EXE: segname __TEXT +EXE: vmaddr 0x00004000 +EXE: vmsize 0x00008000 +EXE: fileoff 0 +EXE: filesize 32768 +EXE: maxprot r-x +EXE: initprot r-x +EXE: nsects 4 +EXE: flags (none) +EXE: Section +EXE: sectname __text +EXE: segname __TEXT +EXE: addr 0x0000bf84 +EXE: size 0x00000036 +EXE: offset 32644 +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 __stub_helper +EXE: segname __TEXT +EXE: addr 0x0000bfbc +EXE: size 0x00000030 +EXE: offset 32700 +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 0x0000bfec +EXE: size 0x0000000d +EXE: offset 32748 +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 __symbolstub1 +EXE: segname __TEXT +EXE: addr 0x0000bffc +EXE: size 0x00000004 +EXE: offset 32764 +EXE: align 2^2 (4) +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 4 (size of stubs) +EXE: Load command 2 +EXE: cmd LC_SEGMENT +EXE: cmdsize 192 +EXE: segname __DATA +EXE: vmaddr 0x0000c000 +EXE: vmsize 0x00004000 +EXE: fileoff 32768 +EXE: filesize 16384 +EXE: maxprot rw- +EXE: initprot rw- +EXE: nsects 2 +EXE: flags (none) +EXE: Section +EXE: sectname __lazy_symbol +EXE: segname __DATA +EXE: addr 0x0000c000 +EXE: size 0x00000004 +EXE: offset 32768 +EXE: align 2^2 (4) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_LAZY_SYMBOL_POINTERS +EXE: attributes (none) +EXE: reserved1 1 (index into indirect symbol table) +EXE: reserved2 0 +EXE: Section +EXE: sectname __nl_symbol_ptr +EXE: segname __DATA +EXE: addr 0x0000c004 +EXE: size 0x00000008 +EXE: offset 32772 +EXE: align 2^2 (4) +EXE: reloff 0 +EXE: nreloc 0 +EXE: type S_NON_LAZY_SYMBOL_POINTERS +EXE: attributes (none) +EXE: reserved1 2 (index into indirect symbol table) +EXE: reserved2 0 +EXE: Load command 3 +EXE: cmd LC_SEGMENT +EXE: cmdsize 56 +EXE: segname __LINKEDIT +EXE: vmaddr 0x00010000 +EXE: vmsize 0x00004000 +EXE: fileoff 49152 +EXE: filesize 256 +EXE: maxprot r-- +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 49152 +EXE: rebase_size 4 +EXE: bind_off 49156 +EXE: bind_size 24 +EXE: weak_bind_off 0 +EXE: weak_bind_size 0 +EXE: lazy_bind_off 49180 +EXE: lazy_bind_size 16 +EXE: export_off 49196 +EXE: export_size 44 +EXE: Load command 5 +EXE: cmd LC_SYMTAB +EXE: cmdsize 24 +EXE: symoff 49264 +EXE: nsyms 5 +EXE: stroff 49340 +EXE: strsize 68 +EXE: Load command 6 +EXE: cmd LC_DYSYMTAB +EXE: cmdsize 80 +EXE: ilocalsym 0 +EXE: nlocalsym 1 +EXE: iextdefsym 1 +EXE: nextdefsym 2 +EXE: iundefsym 3 +EXE: nundefsym 2 +EXE: tocoff 0 +EXE: ntoc 0 +EXE: modtaboff 0 +EXE: nmodtab 0 +EXE: extrefsymoff 0 +EXE: nextrefsyms 0 +EXE: indirectsymoff 49324 +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 28 +EXE: name /usr/lib/dyld (offset 12) +EXE: Load command 8 +EXE: cmd LC_UUID +EXE: cmdsize 24 +EXE: uuid C2D9351C-1EF1-330B-A2AB-EED6CF7D2C5D +EXE: Load command 9 +EXE: cmd LC_VERSION_MIN_IPHONEOS +EXE: cmdsize 16 +EXE: version 8.0 +EXE: sdk 8.0 +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 32645 +EXE: stacksize 0 +EXE: Load command 12 +EXE: cmd LC_ENCRYPTION_INFO +EXE: cmdsize 20 +EXE: cryptoff 16384 +EXE: cryptsize 16384 +EXE: cryptid 0 +EXE: Load command 13 +EXE: cmd LC_LOAD_DYLIB +EXE: cmdsize 52 +EXE: name /usr/lib/libSystem.B.dylib (offset 24) +EXE: current version 1213.0.0 +EXE: compatibility version 1.0.0 +EXE: Load command 14 +EXE: cmd LC_FUNCTION_STARTS +EXE: cmdsize 16 +EXE: dataoff 49240 +EXE: datasize 4 +EXE: Load command 15 +EXE: cmd LC_DATA_IN_CODE +EXE: cmdsize 16 +EXE: dataoff 49244 +EXE: datasize 0 +EXE: Load command 16 +EXE: cmd LC_DYLIB_CODE_SIGN_DRS +EXE: cmdsize 16 +EXE: dataoff 49244 +EXE: datasize 20 diff --git a/test/tools/llvm-objdump/Inputs/common-symbol-elf b/test/tools/llvm-objdump/Inputs/common-symbol-elf new file mode 100644 index 0000000..9609edb Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/common-symbol-elf differ diff --git a/test/tools/llvm-objdump/Inputs/proc-specific-section-elf b/test/tools/llvm-objdump/Inputs/proc-specific-section-elf new file mode 100644 index 0000000..7c3d613 Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/proc-specific-section-elf differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibModInit.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibModInit.macho-x86_64 new file mode 100755 index 0000000..a39424a Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibModInit.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibRoutines.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibRoutines.macho-x86_64 new file mode 100755 index 0000000..3568045 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibRoutines.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibSubClient.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibSubClient.macho-x86_64 new file mode 100755 index 0000000..e7f9542 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibSubClient.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibSubFramework.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibSubFramework.macho-x86_64 new file mode 100755 index 0000000..3036c27 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibSubFramework.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibSubLibrary.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibSubLibrary.macho-x86_64 new file mode 100755 index 0000000..dafee5f Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibSubLibrary.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/dylibSubUmbrella.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/dylibSubUmbrella.macho-x86_64 new file mode 100755 index 0000000..1e42a4f Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/dylibSubUmbrella.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/exeThread.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/exeThread.macho-x86_64 new file mode 100755 index 0000000..93fe1db Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/exeThread.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/linkerOption.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/linkerOption.macho-x86_64 new file mode 100644 index 0000000..38053c5 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/linkerOption.macho-x86_64 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/macho-universal-archive.x86_64.i386 b/test/tools/llvm-objdump/X86/Inputs/macho-universal-archive.x86_64.i386 new file mode 100644 index 0000000..1660714 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/macho-universal-archive.x86_64.i386 differ diff --git a/test/tools/llvm-objdump/X86/Inputs/macho-universal.x86_64.i386 b/test/tools/llvm-objdump/X86/Inputs/macho-universal.x86_64.i386 new file mode 100755 index 0000000..36d5fc2 Binary files /dev/null and b/test/tools/llvm-objdump/X86/Inputs/macho-universal.x86_64.i386 differ diff --git a/test/tools/llvm-objdump/X86/macho-archive-headers.test b/test/tools/llvm-objdump/X86/macho-archive-headers.test new file mode 100644 index 0000000..3d9043e --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-archive-headers.test @@ -0,0 +1,10 @@ +RUN: llvm-objdump %p/Inputs/macho-universal-archive.x86_64.i386 -macho -archive-headers -arch all \ +RUN: | FileCheck %s + +# Note the date as printed by ctime(3) is time zone dependent and not checked. +CHECK: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture x86_64) +CHECK: -rw-r--r--124/11 44 {{.*}} __.SYMDEF SORTED +CHECK: -rw-r--r--124/0 860 {{.*}} hello.o +CHECK: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture i386) +CHECK: -rw-r--r--124/11 60 {{.*}} __.SYMDEF SORTED +CHECK: -rw-r--r--124/0 388 {{.*}} foo.o diff --git a/test/tools/llvm-objdump/X86/macho-cstring-dump.test b/test/tools/llvm-objdump/X86/macho-cstring-dump.test new file mode 100644 index 0000000..3dfa4e3 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-cstring-dump.test @@ -0,0 +1,4 @@ +RUN: llvm-objdump -m -section __TEXT,__cstring %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: Contents of (__TEXT,__cstring) section +CHECK: 000000000000003b Hello world\n diff --git a/test/tools/llvm-objdump/X86/macho-indirect-symbols.test b/test/tools/llvm-objdump/X86/macho-indirect-symbols.test new file mode 100644 index 0000000..4f3af18 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-indirect-symbols.test @@ -0,0 +1,12 @@ +RUN: llvm-objdump -macho -indirect-symbols %p/Inputs/hello.exe.macho-x86_64 | FileCheck %s + +CHECK: Indirect symbols for (__TEXT,__stubs) 1 entries +CHECK: address index name +CHECK: 0x0000000100000f6c 2 _printf +CHECK: Indirect symbols for (__DATA,__nl_symbol_ptr) 2 entries +CHECK: address index name +CHECK: 0x0000000100001000 3 dyld_stub_binder +CHECK: 0x0000000100001008 ABSOLUTE +CHECK: Indirect symbols for (__DATA,__la_symbol_ptr) 1 entries +CHECK: address index name +CHECK: 0x0000000100001010 2 _printf diff --git a/test/tools/llvm-objdump/X86/macho-literal-pointers-i386.test b/test/tools/llvm-objdump/X86/macho-literal-pointers-i386.test new file mode 100644 index 0000000..0069668 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-literal-pointers-i386.test @@ -0,0 +1,34 @@ +# RUN: llvm-mc < %s -triple i386-apple-darwin -filetype=obj | llvm-objdump -m -section __DATA,__litp - | FileCheck %s + +.cstring +L1: .asciz "Hello world\n" + +.literal4 +.align 2 +L2: .float 4.0 + +.literal8 +.align 3 +L3: .double 8.0 + +.literal16 +.align 4 +L4: .long 0x10000016, 0x20000016, 0x30000016, 0x40000016 + +.const +L5: .asciz "const non-literal string" + +.section __DATA,__litp, literal_pointers +.align 2 +.long L1 +.long L2 +.long L3 +.long L4 +.long L5 + +# CHECK: Contents of (__DATA,__litp) section +# CHECK: 0000004c __TEXT:__cstring:Hello world\n +# CHECK: 00000050 __TEXT:__literal4:0x40800000 +# CHECK: 00000054 __TEXT:__literal8:0x00000000 0x40200000 +# CHECK: 00000058 __TEXT:__literal16:0x10000016 0x20000016 0x30000016 0x40000016 +# CHECK: 0000005c 0x30 (not in a literal section) diff --git a/test/tools/llvm-objdump/X86/macho-literal-pointers-x86_64.test b/test/tools/llvm-objdump/X86/macho-literal-pointers-x86_64.test new file mode 100644 index 0000000..b403b81 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-literal-pointers-x86_64.test @@ -0,0 +1,34 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -section __DATA,__litp - | FileCheck %s + +.cstring +L1: .asciz "Hello world\n" + +.literal4 +.align 2 +L2: .float 4.0 + +.literal8 +.align 3 +L3: .double 8.0 + +.literal16 +.align 4 +L4: .long 0x10000016, 0x20000016, 0x30000016, 0x40000016 + +.const +L5: .asciz "const non-literal string" + +.section __DATA,__litp, literal_pointers +.align 3 +.quad L1 +.quad L2 +.quad L3 +.quad L4 +.quad L5 + +# CHECK: Contents of (__DATA,__litp) section +# CHECK: 0000000000000050 __TEXT:__cstring:Hello world\n +# CHECK: 0000000000000058 __TEXT:__literal4:0x40800000 +# CHECK: 0000000000000060 __TEXT:__literal8:0x00000000 0x40200000 +# CHECK: 0000000000000068 __TEXT:__literal16:0x10000016 0x20000016 0x30000016 0x40000016 +# CHECK: 0000000000000070 0x30 (not in a literal section) diff --git a/test/tools/llvm-objdump/X86/macho-literals.test b/test/tools/llvm-objdump/X86/macho-literals.test new file mode 100644 index 0000000..4824453 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-literals.test @@ -0,0 +1,48 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -section __TEXT,__literal4 - | FileCheck %s -check-prefix=CHECK-LIT4 +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -section __TEXT,__literal8 - | FileCheck %s -check-prefix=CHECK-LIT8 +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -section __TEXT,__literal16 - | FileCheck %s -check-prefix=CHECK-LIT16 + +.literal4 +.float 2.5 +.float 8.25 +.long 0x7f800000 +.long 0xff800000 +.long 0x7fc00000 +.long 0x7f800001 + +# CHECK-LIT4: Contents of (__TEXT,__literal4) section +# CHECK-LIT4: 0000000000000000 0x40200000 +# CHECK-LIT4: 0000000000000004 0x41040000 +# CHECK-LIT4: 0000000000000008 0x7f800000 +# CHECK-LIT4: 000000000000000c 0xff800000 +# CHECK-LIT4: 0000000000000010 0x7fc00000 +# CHECK-LIT4: 0000000000000014 0x7f800001 + +.literal8 +.double 2.5 +.double 8.25 +.long 0 +.long 0x7ff00000 +.long 0 +.long 0xfff00000 +.long 0 +.long 0x7ff80000 +.long 1 +.long 0x7ff00000 + +# CHECK-LIT8: Contents of (__TEXT,__literal8) section +# CHECK-LIT8: 0000000000000018 0x00000000 0x40040000 +# CHECK-LIT8: 0000000000000020 0x00000000 0x40208000 +# CHECK-LIT8: 0000000000000028 0x00000000 0x7ff00000 +# CHECK-LIT8: 0000000000000030 0x00000000 0xfff00000 +# CHECK-LIT8: 0000000000000038 0x00000000 0x7ff80000 +# CHECK-LIT8: 0000000000000040 0x00000001 0x7ff00000 + +.literal16 +.long 1 +.long 2 +.long 3 +.long 4 + +# CHECK-LIT16: Contents of (__TEXT,__literal16) section +# CHECK-LIT16: 0000000000000050 0x00000001 0x00000002 0x00000003 0x00000004 diff --git a/test/tools/llvm-objdump/X86/macho-nontext-disasm.test b/test/tools/llvm-objdump/X86/macho-nontext-disasm.test new file mode 100644 index 0000000..27b7bb4 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-nontext-disasm.test @@ -0,0 +1,9 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -section __FOO,__bar -full-leading-addr -print-imm-hex -no-show-raw-insn - | FileCheck %s + +.section __FOO, __bar +_foo: + nop + +# CHECK: Contents of (__FOO,__bar) section +# CHECK: _foo: +# CHECK: 0000000000000000 nop diff --git a/test/tools/llvm-objdump/X86/macho-private-headers.test b/test/tools/llvm-objdump/X86/macho-private-headers.test index 685b4f7..c80bb08 100644 --- a/test/tools/llvm-objdump/X86/macho-private-headers.test +++ b/test/tools/llvm-objdump/X86/macho-private-headers.test @@ -3,6 +3,22 @@ // RUN: | FileCheck %s -check-prefix=EXE // RUN: llvm-objdump -p %p/Inputs/dylibLoadKinds.macho-x86_64 \ // RUN: | FileCheck %s -check-prefix=LOAD +// RUN: llvm-objdump -p %p/Inputs/linkerOption.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=LD_OPT +// RUN: llvm-objdump -p %p/Inputs/dylibSubFramework.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=SUB_FRAME +// RUN: llvm-objdump -p %p/Inputs/dylibSubUmbrella.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=SUB_UMB +// RUN: llvm-objdump -p %p/Inputs/dylibSubLibrary.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=SUB_LIB +// RUN: llvm-objdump -p %p/Inputs/dylibSubClient.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=SUB_CLI +// RUN: llvm-objdump -p %p/Inputs/dylibRoutines.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=ROUTINE +// RUN: llvm-objdump -p %p/Inputs/exeThread.macho-x86_64 \ +// RUN: | FileCheck %s -check-prefix=THREAD +// RUN: llvm-objdump -macho -p -arch i386 %p/Inputs/macho-universal.x86_64.i386 \ +// RUN: | FileCheck %s -check-prefix=FATi386 CHECK: Mach header CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags @@ -366,3 +382,64 @@ LOAD: name /usr/lib/foo4.dylib (offset 24) LOAD: current version 0.0.0 LOAD: compatibility version 0.0.0 +LD_OPT: Load command 4 +LD_OPT: cmd LC_LINKER_OPTION +LD_OPT: cmdsize 24 +LD_OPT: count 1 +LD_OPT: string #1 -lc++ +LD_OPT: Load command 5 +LD_OPT: cmd LC_LINKER_OPTION +LD_OPT: cmdsize 40 +LD_OPT: count 2 +LD_OPT: string #1 -framework +LD_OPT: string #2 Foundation + +SUB_FRAME: Load command 10 +SUB_FRAME: cmd LC_SUB_FRAMEWORK +SUB_FRAME: cmdsize 16 +SUB_FRAME: umbrella Bar (offset 12) + +SUB_UMB: Load command 5 +SUB_UMB: cmd LC_SUB_UMBRELLA +SUB_UMB: cmdsize 16 +SUB_UMB: sub_umbrella Foo (offset 12) + +SUB_LIB: Load command 5 +SUB_LIB: cmd LC_SUB_LIBRARY +SUB_LIB: cmdsize 20 +SUB_LIB: sub_library libfoo (offset 12) + +SUB_CLI: Load command 10 +SUB_CLI: cmd LC_SUB_CLIENT +SUB_CLI: cmdsize 16 +SUB_CLI: client bar (offset 12) + +ROUTINE: Load command 6 +ROUTINE: cmd LC_ROUTINES_64 +ROUTINE: cmdsize 72 +ROUTINE: init_address 0x0000000000000f80 +ROUTINE: init_module 0 +ROUTINE: reserved1 0 +ROUTINE: reserved2 0 +ROUTINE: reserved3 0 +ROUTINE: reserved4 0 +ROUTINE: reserved5 0 +ROUTINE: reserved6 0 + +THREAD: Load command 10 +THREAD: cmd LC_UNIXTHREAD +THREAD: cmdsize 184 +THREAD: flavor x86_THREAD_STATE64 +THREAD: count x86_THREAD_STATE64_COUNT +THREAD: rax 0x0000000000000000 rbx 0x0000000000000000 rcx 0x0000000000000000 +THREAD: rdx 0x0000000000000000 rdi 0x0000000000000000 rsi 0x0000000000000000 +THREAD: rbp 0x0000000000000000 rsp 0x0000000000000000 r8 0x0000000000000000 +THREAD: r9 0x0000000000000000 r10 0x0000000000000000 r11 0x0000000000000000 +THREAD: r12 0x0000000000000000 r13 0x0000000000000000 r14 0x0000000000000000 +THREAD: r15 0x0000000000000000 rip 0x0000000100000d00 +THREAD: rflags 0x0000000000000000 cs 0x0000000000000000 fs 0x0000000000000000 +THREAD: gs 0x0000000000000000 + +FATi386: Mach header +FATi386: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +FATi386: MH_MAGIC I386 ALL 0x00 EXECUTE 16 716 NOUNDEFS DYLDLINK TWOLEVEL PIE MH_NO_HEAP_EXECUTION diff --git a/test/tools/llvm-objdump/X86/macho-relocations.test b/test/tools/llvm-objdump/X86/macho-relocations.test new file mode 100644 index 0000000..536aec8 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-relocations.test @@ -0,0 +1,7 @@ +RUN: llvm-objdump -macho -r %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: RELOCATION RECORDS FOR [__text]: +CHECK: 0000000000000027 X86_64_RELOC_BRANCH _printf +CHECK: 000000000000000b X86_64_RELOC_SIGNED L_.str +CHECK: RELOCATION RECORDS FOR [__compact_unwind]: +CHECK: 0000000000000000 X86_64_RELOC_UNSIGNED __text diff --git a/test/tools/llvm-objdump/X86/macho-section-contents.test b/test/tools/llvm-objdump/X86/macho-section-contents.test new file mode 100644 index 0000000..f62b5a7 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-section-contents.test @@ -0,0 +1,17 @@ +RUN: llvm-objdump -macho -s %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: Contents of section __text: +CHECK: 0000 554889e5 4883ec20 488d0500 000000c7 UH..H.. H....... +CHECK: 0010 45fc0000 0000897d f8488975 f0488955 E......}.H.u.H.U +CHECK: 0020 e84889c7 b000e800 000000b9 00000000 .H.............. +CHECK: 0030 8945e489 c84883c4 205dc3 .E...H.. ]. +CHECK: Contents of section __cstring: +CHECK: 003b 48656c6c 6f20776f 726c640a 00 Hello world.. +CHECK: Contents of section __compact_unwind: +CHECK: 0048 00000000 00000000 3b000000 00000001 ........;....... +CHECK: 0058 00000000 00000000 00000000 00000000 ................ +CHECK: Contents of section __eh_frame: +CHECK: 0068 14000000 00000000 017a5200 01781001 .........zR..x.. +CHECK: 0078 100c0708 90010000 24000000 1c000000 ........$....... +CHECK: 0088 78ffffff ffffffff 3b000000 00000000 x.......;....... +CHECK: 0098 00410e10 8602430d 06000000 00000000 .A....C......... diff --git a/test/tools/llvm-objdump/X86/macho-section-headers.test b/test/tools/llvm-objdump/X86/macho-section-headers.test new file mode 100644 index 0000000..5159d18 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-section-headers.test @@ -0,0 +1,8 @@ +RUN: llvm-objdump -macho -h %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: Sections: +CHECK: Idx Name Size Address Type +CHECK: 0 __text 0000003b 0000000000000000 TEXT +CHECK: 1 __cstring 0000000d 000000000000003b DATA +CHECK: 2 __compact_unwind 00000020 0000000000000048 DATA +CHECK: 3 __eh_frame 00000040 0000000000000068 DATA diff --git a/test/tools/llvm-objdump/X86/macho-section.test b/test/tools/llvm-objdump/X86/macho-section.test new file mode 100644 index 0000000..720b9a4 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-section.test @@ -0,0 +1,4 @@ +// RUN: llvm-objdump -m -section __DATA,__mod_init_func %p/Inputs/dylibModInit.macho-x86_64 | FileCheck %s -check-prefix=MODINIT + +MODINIT: Contents of (__DATA,__mod_init_func) section +MODINIT: 0x0000000000001000 0x0000000000000f30 _libinit diff --git a/test/tools/llvm-objdump/X86/macho-symbol-table.test b/test/tools/llvm-objdump/X86/macho-symbol-table.test new file mode 100644 index 0000000..5b9a4f8 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-symbol-table.test @@ -0,0 +1,8 @@ +RUN: llvm-objdump -macho -t %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: SYMBOL TABLE: +CHECK: 000000000000003b l F __TEXT,__cstring 0000000d L_.str +CHECK: 0000000000000068 l F __TEXT,__eh_frame 00000018 EH_frame0 +CHECK: 0000000000000000 g F __TEXT,__text 0000003b _main +CHECK: 0000000000000080 g F __TEXT,__eh_frame 00000028 _main.eh +CHECK: 0000000000000000 *UND* 00000000 _printf diff --git a/test/tools/llvm-objdump/X86/macho-universal-x86_64.i386.test b/test/tools/llvm-objdump/X86/macho-universal-x86_64.i386.test new file mode 100644 index 0000000..e4fd37a --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-universal-x86_64.i386.test @@ -0,0 +1,44 @@ +RUN: llvm-objdump %p/Inputs/macho-universal.x86_64.i386 -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex -arch all \ +RUN: | FileCheck %s -check-prefix UEXE-all +RUN: llvm-objdump %p/Inputs/macho-universal-archive.x86_64.i386 -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex -arch i386 \ +RUN: | FileCheck %s -check-prefix UArchive-i386 +RUN: llvm-objdump %p/Inputs/macho-universal.x86_64.i386 -universal-headers -m \ +RUN: | FileCheck %s -check-prefix FAT + +UEXE-all: macho-universal.x86_64.i386 (architecture x86_64): +UEXE-all: (__TEXT,__text) section +UEXE-all: _main: +UEXE-all: 0000000100000f60 pushq %rbp +UEXE-all: 0000000100000f61 movq %rsp, %rbp +UEXE-all: macho-universal.x86_64.i386 (architecture i386): +UEXE-all: (__TEXT,__text) section +UEXE-all: _main: +UEXE-all: 00001fa0 pushl %ebp +UEXE-all: 00001fa1 movl %esp, %ebp + +UArchive-i386: Archive : {{.*}}/macho-universal-archive.x86_64.i386 +UArchive-i386: macho-universal-archive.x86_64.i386(foo.o): +UArchive-i386: (__TEXT,__text) section +UArchive-i386: _foo: +UArchive-i386: 00000000 pushl %ebp +UArchive-i386: 00000001 movl %esp, %ebp +UArchive-i386: 00000003 popl %ebp +UArchive-i386: 00000004 retl + +FAT: Fat headers +FAT: fat_magic FAT_MAGIC +FAT: nfat_arch 2 +FAT: architecture x86_64 +FAT: cputype CPU_TYPE_X86_64 +FAT: cpusubtype CPU_SUBTYPE_X86_64_ALL +FAT: capabilities CPU_SUBTYPE_LIB64 +FAT: offset 4096 +FAT: size 4360 +FAT: align 2^12 (4096) +FAT: architecture i386 +FAT: cputype CPU_TYPE_I386 +FAT: cpusubtype CPU_SUBTYPE_I386_ALL +FAT: capabilities 0x0 +FAT: offset 12288 +FAT: size 4336 +FAT: align 2^12 (4096) diff --git a/test/tools/llvm-objdump/X86/macho-unwind-info.test b/test/tools/llvm-objdump/X86/macho-unwind-info.test new file mode 100644 index 0000000..33db84f --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-unwind-info.test @@ -0,0 +1,7 @@ +RUN: llvm-objdump -macho -u %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s + +CHECK: Contents of __compact_unwind section: +CHECK: Entry at offset 0x0: +CHECK: start: 0x0 _main +CHECK: length: 0x3b +CHECK: compact encoding: 0x01000000 diff --git a/test/tools/llvm-objdump/common-symbol-elf.test b/test/tools/llvm-objdump/common-symbol-elf.test new file mode 100644 index 0000000..32df05a --- /dev/null +++ b/test/tools/llvm-objdump/common-symbol-elf.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -t %p/Inputs/common-symbol-elf | FileCheck %s + +CHECK: 00000400 g *COM* 00000008 common_symbol diff --git a/test/tools/llvm-objdump/proc-specific-section-elf.test b/test/tools/llvm-objdump/proc-specific-section-elf.test new file mode 100644 index 0000000..b3067d4 --- /dev/null +++ b/test/tools/llvm-objdump/proc-specific-section-elf.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -t %p/Inputs/proc-specific-section-elf | FileCheck %s + +CHECK: 00000000 *UND* 00000000 print diff --git a/test/tools/llvm-readobj/ARM/attribute-0.s b/test/tools/llvm-readobj/ARM/attribute-0.s new file mode 100644 index 0000000..b761dd8 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-0.s @@ -0,0 +1,234 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 0 +@CHECK: .eabi_attribute 6, 0 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: Pre-v4 + +.eabi_attribute Tag_CPU_arch_profile, 0 +@CHECK: .eabi_attribute 7, 0 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ARM_ISA_use, 0 +@CHECK: .eabi_attribute 8, 0 +@CHECK-OBJ: Tag: 8 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ARM_ISA_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_THUMB_ISA_use, 0 +@CHECK: .eabi_attribute 9, 0 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_FP_arch, 0 +@CHECK: .eabi_attribute 10, 0 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_WMMX_arch, 0 +@CHECK: .eabi_attribute 11, 0 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_Advanced_SIMD_arch, 0 +@CHECK: .eabi_attribute 12, 0 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_PCS_config, 0 +@CHECK: .eabi_attribute 13, 0 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ABI_PCS_R9_use, 0 +@CHECK: .eabi_attribute 14, 0 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: v6 + +.eabi_attribute Tag_ABI_PCS_RW_data, 0 +@CHECK: .eabi_attribute 15, 0 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: Absolute + +.eabi_attribute Tag_ABI_PCS_RO_data, 0 +@CHECK: .eabi_attribute 16, 0 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: Absolute + +.eabi_attribute Tag_ABI_PCS_GOT_use, 0 +@CHECK: .eabi_attribute 17, 0 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_PCS_wchar_t, 0 +@CHECK: .eabi_attribute 18, 0 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_rounding, 0 +@CHECK: .eabi_attribute 19, 0 +@CHECK-OBJ: Tag: 19 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_rounding +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_denormal, 0 +@CHECK: .eabi_attribute 20, 0 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: Unsupported + +.eabi_attribute Tag_ABI_FP_exceptions, 0 +@CHECK: .eabi_attribute 21, 0 +@CHECK-OBJ: Tag: 21 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_exceptions +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_user_exceptions, 0 +@CHECK: .eabi_attribute 22, 0 +@CHECK-OBJ: Tag: 22 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_user_exceptions +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_number_model, 0 +@CHECK: .eabi_attribute 23, 0 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_align_needed, 0 +@CHECK: .eabi_attribute 24, 0 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_align_preserved, 0 +@CHECK: .eabi_attribute 25, 0 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: Not Required + +.eabi_attribute Tag_ABI_enum_size, 0 +@CHECK: .eabi_attribute 26, 0 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_HardFP_use, 0 +@CHECK: .eabi_attribute 27, 0 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Tag_FP_arch + +.eabi_attribute Tag_ABI_VFP_args, 0 +@CHECK: .eabi_attribute 28, 0 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: AAPCS + +.eabi_attribute Tag_ABI_WMMX_args, 0 +@CHECK: .eabi_attribute 29, 0 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: AAPCS + +.eabi_attribute Tag_ABI_optimization_goals, 0 +@CHECK: .eabi_attribute 30, 0 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ABI_FP_optimization_goals, 0 +@CHECK: .eabi_attribute 31, 0 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_compatibility, 0, "ARM" +@CHECK: .eabi_attribute 32, 0 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 0, ARM +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: No Specific Requirements + +.eabi_attribute Tag_CPU_unaligned_access, 0 +@CHECK: .eabi_attribute 34, 0 +@CHECK-OBJ: Tag: 34 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_unaligned_access +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_FP_HP_extension, 0 +@CHECK: .eabi_attribute 36, 0 +@CHECK-OBJ: Tag: 36 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: FP_HP_extension +@CHECK-OBJ-NEXT: Description: If Available + +.eabi_attribute Tag_ABI_FP_16bit_format, 0 +@CHECK: .eabi_attribute 38, 0 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_MPextension_use, 0 +@CHECK: .eabi_attribute 42, 0 +@CHECK-OBJ: Tag: 42 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: MPextension_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_DIV_use, 0 +@CHECK: .eabi_attribute 44, 0 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: If Available + +.eabi_attribute Tag_Virtualization_use, 0 +@CHECK: .eabi_attribute 68, 0 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: Not Permitted + diff --git a/test/tools/llvm-readobj/ARM/attribute-1.s b/test/tools/llvm-readobj/ARM/attribute-1.s new file mode 100644 index 0000000..f433cbc --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-1.s @@ -0,0 +1,220 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 1 +@CHECK: .eabi_attribute 6, 1 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v4 + +.eabi_attribute Tag_ARM_ISA_use, 1 +@CHECK: .eabi_attribute 8, 1 +@CHECK-OBJ: Tag: 8 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ARM_ISA_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_THUMB_ISA_use, 1 +@CHECK: .eabi_attribute 9, 1 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Thumb-1 + +.eabi_attribute Tag_FP_arch, 1 +@CHECK: .eabi_attribute 10, 1 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv1 + +.eabi_attribute Tag_WMMX_arch, 1 +@CHECK: .eabi_attribute 11, 1 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: WMMXv1 + +.eabi_attribute Tag_Advanced_SIMD_arch, 1 +@CHECK: .eabi_attribute 12, 1 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: NEONv1 + +.eabi_attribute Tag_PCS_config, 1 +@CHECK: .eabi_attribute 13, 1 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Bare Platform + +.eabi_attribute Tag_ABI_PCS_R9_use, 1 +@CHECK: .eabi_attribute 14, 1 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: Static Base + +.eabi_attribute Tag_ABI_PCS_RW_data, 1 +@CHECK: .eabi_attribute 15, 1 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: PC-relative + +.eabi_attribute Tag_ABI_PCS_RO_data, 1 +@CHECK: .eabi_attribute 16, 1 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: PC-relative + +.eabi_attribute Tag_ABI_PCS_GOT_use, 1 +@CHECK: .eabi_attribute 17, 1 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: Direct + +.eabi_attribute Tag_ABI_FP_rounding, 1 +@CHECK: .eabi_attribute 19, 1 +@CHECK-OBJ: Tag: 19 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_rounding +@CHECK-OBJ-NEXT: Description: Runtime + +.eabi_attribute Tag_ABI_FP_denormal, 1 +@CHECK: .eabi_attribute 20, 1 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_exceptions, 1 +@CHECK: .eabi_attribute 21, 1 +@CHECK-OBJ: Tag: 21 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_exceptions +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_user_exceptions, 1 +@CHECK: .eabi_attribute 22, 1 +@CHECK-OBJ: Tag: 22 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_user_exceptions +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_number_model, 1 +@CHECK: .eabi_attribute 23, 1 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: Finite Only + +.eabi_attribute Tag_ABI_align_needed, 1 +@CHECK: .eabi_attribute 24, 1 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment + +.eabi_attribute Tag_ABI_align_preserved, 1 +@CHECK: .eabi_attribute 25, 1 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte data alignment + +.eabi_attribute Tag_ABI_enum_size, 1 +@CHECK: .eabi_attribute 26, 1 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Packed + +.eabi_attribute Tag_ABI_HardFP_use, 1 +@CHECK: .eabi_attribute 27, 1 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Single-Precision + +.eabi_attribute Tag_ABI_VFP_args, 1 +@CHECK: .eabi_attribute 28, 1 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: AAPCS VFP + +.eabi_attribute Tag_ABI_WMMX_args, 1 +@CHECK: .eabi_attribute 29, 1 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: iWMMX + +.eabi_attribute Tag_ABI_optimization_goals, 1 +@CHECK: .eabi_attribute 30, 1 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Speed + +.eabi_attribute Tag_ABI_FP_optimization_goals, 1 +@CHECK: .eabi_attribute 31, 1 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Speed + +.eabi_attribute Tag_compatibility, 1, "" +@CHECK: .eabi_attribute 32, 1 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 1, +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Conformant + +.eabi_attribute Tag_CPU_unaligned_access, 1 +@CHECK: .eabi_attribute 34, 1 +@CHECK-OBJ: Tag: 34 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: CPU_unaligned_access +@CHECK-OBJ-NEXT: Description: v6-style + +.eabi_attribute Tag_FP_HP_extension, 1 +@CHECK: .eabi_attribute 36, 1 +@CHECK-OBJ: Tag: 36 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: FP_HP_extension +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_ABI_FP_16bit_format, 1 +@CHECK: .eabi_attribute 38, 1 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_MPextension_use, 1 +@CHECK: .eabi_attribute 42, 1 +@CHECK-OBJ: Tag: 42 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: MPextension_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_DIV_use, 1 +@CHECK: .eabi_attribute 44, 1 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_Virtualization_use, 1 +@CHECK: .eabi_attribute 68, 1 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: TrustZone + diff --git a/test/tools/llvm-readobj/ARM/attribute-10.s b/test/tools/llvm-readobj/ARM/attribute-10.s new file mode 100644 index 0000000..667db8c --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-10.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 10 +@CHECK: .eabi_attribute 6, 10 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v7 + +.eabi_attribute Tag_ABI_align_needed, 10 +@CHECK: .eabi_attribute 24, 10 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 1024-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 10 +@CHECK: .eabi_attribute 25, 10 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 1024-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-11.s b/test/tools/llvm-readobj/ARM/attribute-11.s new file mode 100644 index 0000000..2d8e43b --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-11.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 11 +@CHECK: .eabi_attribute 6, 11 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6-M + +.eabi_attribute Tag_ABI_align_needed, 11 +@CHECK: .eabi_attribute 24, 11 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 2048-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 11 +@CHECK: .eabi_attribute 25, 11 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 2048-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-12.s b/test/tools/llvm-readobj/ARM/attribute-12.s new file mode 100644 index 0000000..4387527 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-12.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 12 +@CHECK: .eabi_attribute 6, 12 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6S-M + +.eabi_attribute Tag_ABI_align_needed, 12 +@CHECK: .eabi_attribute 24, 12 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 4096-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 12 +@CHECK: .eabi_attribute 25, 12 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 4096-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-13.s b/test/tools/llvm-readobj/ARM/attribute-13.s new file mode 100644 index 0000000..25ac5f1 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-13.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 13 +@CHECK: .eabi_attribute 6, 13 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 13 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v7E-M + diff --git a/test/tools/llvm-readobj/ARM/attribute-136.s b/test/tools/llvm-readobj/ARM/attribute-136.s new file mode 100644 index 0000000..a2d2a9a --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-136.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_compatibility, 136, "Foo Corp" +@CHECK: .eabi_attribute 32, 136 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 136, Foo Corp +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + diff --git a/test/tools/llvm-readobj/ARM/attribute-14.s b/test/tools/llvm-readobj/ARM/attribute-14.s new file mode 100644 index 0000000..e0d8e46 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-14.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 14 +@CHECK: .eabi_attribute 6, 14 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 14 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v8 + diff --git a/test/tools/llvm-readobj/ARM/attribute-15.s b/test/tools/llvm-readobj/ARM/attribute-15.s new file mode 100644 index 0000000..7877ce7 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-15.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_compatibility, 15, "Longer Corporation NaMe" +@CHECK: .eabi_attribute 32, 15 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 15, Longer Corporation NaMe +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + diff --git a/test/tools/llvm-readobj/ARM/attribute-2.s b/test/tools/llvm-readobj/ARM/attribute-2.s new file mode 100644 index 0000000..21ee41f --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-2.s @@ -0,0 +1,178 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 2 +@CHECK: .eabi_attribute 6, 2 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v4T + +.eabi_attribute Tag_THUMB_ISA_use, 2 +@CHECK: .eabi_attribute 9, 2 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Thumb-2 + +.eabi_attribute Tag_FP_arch, 2 +@CHECK: .eabi_attribute 10, 2 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv2 + +.eabi_attribute Tag_WMMX_arch, 2 +@CHECK: .eabi_attribute 11, 2 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: WMMXv2 + +.eabi_attribute Tag_Advanced_SIMD_arch, 2 +@CHECK: .eabi_attribute 12, 2 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: NEONv2+FMA + +.eabi_attribute Tag_PCS_config, 2 +@CHECK: .eabi_attribute 13, 2 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Linux Application + +.eabi_attribute Tag_ABI_PCS_R9_use, 2 +@CHECK: .eabi_attribute 14, 2 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: TLS + +.eabi_attribute Tag_ABI_PCS_RW_data, 2 +@CHECK: .eabi_attribute 15, 2 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: SB-relative + +.eabi_attribute Tag_ABI_PCS_RO_data, 2 +@CHECK: .eabi_attribute 16, 2 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_PCS_GOT_use, 2 +@CHECK: .eabi_attribute 17, 2 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: GOT-Indirect + +.eabi_attribute Tag_ABI_PCS_wchar_t, 2 +@CHECK: .eabi_attribute 18, 2 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: 2-byte + +.eabi_attribute Tag_ABI_FP_denormal, 2 +@CHECK: .eabi_attribute 20, 2 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: Sign Only + +.eabi_attribute Tag_ABI_FP_number_model, 2 +@CHECK: .eabi_attribute 23, 2 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: RTABI + +.eabi_attribute Tag_ABI_align_needed, 2 +@CHECK: .eabi_attribute 24, 2 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 4-byte alignment + +.eabi_attribute Tag_ABI_align_preserved, 2 +@CHECK: .eabi_attribute 25, 2 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte data and code alignment + +.eabi_attribute Tag_ABI_enum_size, 2 +@CHECK: .eabi_attribute 26, 2 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Int32 + +.eabi_attribute Tag_ABI_HardFP_use, 2 +@CHECK: .eabi_attribute 27, 2 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_VFP_args, 2 +@CHECK: .eabi_attribute 28, 2 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: Custom + +.eabi_attribute Tag_ABI_WMMX_args, 2 +@CHECK: .eabi_attribute 29, 2 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: Custom + +.eabi_attribute Tag_ABI_optimization_goals, 2 +@CHECK: .eabi_attribute 30, 2 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Speed + +.eabi_attribute Tag_ABI_FP_optimization_goals, 2 +@CHECK: .eabi_attribute 31, 2 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Speed + +.eabi_attribute Tag_compatibility, 2, "" +@CHECK: .eabi_attribute 32, 2 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 2, +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + +.eabi_attribute Tag_ABI_FP_16bit_format, 2 +@CHECK: .eabi_attribute 38, 2 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: VFPv3 + +.eabi_attribute Tag_DIV_use, 2 +@CHECK: .eabi_attribute 44, 2 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_Virtualization_use, 2 +@CHECK: .eabi_attribute 68, 2 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: Virtualization Extensions + diff --git a/test/tools/llvm-readobj/ARM/attribute-3.s b/test/tools/llvm-readobj/ARM/attribute-3.s new file mode 100644 index 0000000..ad2de25 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-3.s @@ -0,0 +1,108 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 3 +@CHECK: .eabi_attribute 6, 3 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5T + +.eabi_attribute Tag_FP_arch, 3 +@CHECK: .eabi_attribute 10, 3 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv3 + +.eabi_attribute Tag_Advanced_SIMD_arch, 3 +@CHECK: .eabi_attribute 12, 3 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a NEON + +.eabi_attribute Tag_PCS_config, 3 +@CHECK: .eabi_attribute 13, 3 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Linux DSO + +.eabi_attribute Tag_ABI_PCS_R9_use, 3 +@CHECK: .eabi_attribute 14, 3 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: Unused + +.eabi_attribute Tag_ABI_PCS_RW_data, 3 +@CHECK: .eabi_attribute 15, 3 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_number_model, 3 +@CHECK: .eabi_attribute 23, 3 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_align_needed, 3 +@CHECK: .eabi_attribute 24, 3 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_align_preserved, 3 +@CHECK: .eabi_attribute 25, 3 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_enum_size, 3 +@CHECK: .eabi_attribute 26, 3 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: External Int32 + +.eabi_attribute Tag_ABI_HardFP_use, 3 +@CHECK: .eabi_attribute 27, 3 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Tag_FP_arch (deprecated) + +.eabi_attribute Tag_ABI_VFP_args, 3 +@CHECK: .eabi_attribute 28, 3 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_optimization_goals, 3 +@CHECK: .eabi_attribute 30, 3 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Size + +.eabi_attribute Tag_ABI_FP_optimization_goals, 3 +@CHECK: .eabi_attribute 31, 3 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Size + +.eabi_attribute Tag_Virtualization_use, 3 +@CHECK: .eabi_attribute 68, 3 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: TrustZone + Virtualization Extensions + diff --git a/test/tools/llvm-readobj/ARM/attribute-4.s b/test/tools/llvm-readobj/ARM/attribute-4.s new file mode 100644 index 0000000..dd0a4a6 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-4.s @@ -0,0 +1,59 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 4 +@CHECK: .eabi_attribute 6, 4 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5TE + +.eabi_attribute Tag_FP_arch, 4 +@CHECK: .eabi_attribute 10, 4 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv3-D16 + +.eabi_attribute Tag_PCS_config, 4 +@CHECK: .eabi_attribute 13, 4 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Palm OS 2004 + +.eabi_attribute Tag_ABI_PCS_wchar_t, 4 +@CHECK: .eabi_attribute 18, 4 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: 4-byte + +.eabi_attribute Tag_ABI_align_needed, 4 +@CHECK: .eabi_attribute 24, 4 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 16-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 4 +@CHECK: .eabi_attribute 25, 4 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 16-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 4 +@CHECK: .eabi_attribute 30, 4 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Size + +.eabi_attribute Tag_ABI_FP_optimization_goals, 4 +@CHECK: .eabi_attribute 31, 4 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Size + diff --git a/test/tools/llvm-readobj/ARM/attribute-5.s b/test/tools/llvm-readobj/ARM/attribute-5.s new file mode 100644 index 0000000..97e37e2 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-5.s @@ -0,0 +1,52 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 5 +@CHECK: .eabi_attribute 6, 5 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5TEJ + +.eabi_attribute Tag_FP_arch, 5 +@CHECK: .eabi_attribute 10, 5 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv4 + +.eabi_attribute Tag_PCS_config, 5 +@CHECK: .eabi_attribute 13, 5 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Reserved (Palm OS) + +.eabi_attribute Tag_ABI_align_needed, 5 +@CHECK: .eabi_attribute 24, 5 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 32-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 5 +@CHECK: .eabi_attribute 25, 5 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 32-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 5 +@CHECK: .eabi_attribute 30, 5 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Debugging + +.eabi_attribute Tag_ABI_FP_optimization_goals, 5 +@CHECK: .eabi_attribute 31, 5 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Accuracy + diff --git a/test/tools/llvm-readobj/ARM/attribute-6.s b/test/tools/llvm-readobj/ARM/attribute-6.s new file mode 100644 index 0000000..8da7b99 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-6.s @@ -0,0 +1,52 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 6 +@CHECK: .eabi_attribute 6, 6 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6 + +.eabi_attribute Tag_FP_arch, 6 +@CHECK: .eabi_attribute 10, 6 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv4-D16 + +.eabi_attribute Tag_PCS_config, 6 +@CHECK: .eabi_attribute 13, 6 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Symbian OS 2004 + +.eabi_attribute Tag_ABI_align_needed, 6 +@CHECK: .eabi_attribute 24, 6 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 64-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 6 +@CHECK: .eabi_attribute 25, 6 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 64-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 6 +@CHECK: .eabi_attribute 30, 6 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Best Debugging + +.eabi_attribute Tag_ABI_FP_optimization_goals, 6 +@CHECK: .eabi_attribute 31, 6 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Best Accuracy + diff --git a/test/tools/llvm-readobj/ARM/attribute-7.s b/test/tools/llvm-readobj/ARM/attribute-7.s new file mode 100644 index 0000000..2fd1b20 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-7.s @@ -0,0 +1,38 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 7 +@CHECK: .eabi_attribute 6, 7 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6KZ + +.eabi_attribute Tag_FP_arch, 7 +@CHECK: .eabi_attribute 10, 7 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a FP + +.eabi_attribute Tag_PCS_config, 7 +@CHECK: .eabi_attribute 13, 7 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Reserved (Symbian OS) + +.eabi_attribute Tag_ABI_align_needed, 7 +@CHECK: .eabi_attribute 24, 7 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 128-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 7 +@CHECK: .eabi_attribute 25, 7 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 128-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-8.s b/test/tools/llvm-readobj/ARM/attribute-8.s new file mode 100644 index 0000000..ac3e3a0 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-8.s @@ -0,0 +1,31 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 8 +@CHECK: .eabi_attribute 6, 8 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6T2 + +.eabi_attribute Tag_FP_arch, 8 +@CHECK: .eabi_attribute 10, 8 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a FP-D16 + +.eabi_attribute Tag_ABI_align_needed, 8 +@CHECK: .eabi_attribute 24, 8 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 256-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 8 +@CHECK: .eabi_attribute 25, 8 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 256-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-9.s b/test/tools/llvm-readobj/ARM/attribute-9.s new file mode 100644 index 0000000..68f6ccb --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-9.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 9 +@CHECK: .eabi_attribute 6, 9 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6K + +.eabi_attribute Tag_ABI_align_needed, 9 +@CHECK: .eabi_attribute 24, 9 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 512-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 9 +@CHECK: .eabi_attribute 25, 9 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 512-byte data alignment + diff --git a/test/tools/llvm-readobj/ARM/attribute-A.s b/test/tools/llvm-readobj/ARM/attribute-A.s new file mode 100644 index 0000000..720f56e --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-A.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'A' +@CHECK: .eabi_attribute 7, 65 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 65 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Application + diff --git a/test/tools/llvm-readobj/ARM/attribute-M.s b/test/tools/llvm-readobj/ARM/attribute-M.s new file mode 100644 index 0000000..7d1e1ef --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-M.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'M' +@CHECK: .eabi_attribute 7, 77 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 77 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Microcontroller + diff --git a/test/tools/llvm-readobj/ARM/attribute-R.s b/test/tools/llvm-readobj/ARM/attribute-R.s new file mode 100644 index 0000000..096d557 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-R.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'R' +@CHECK: .eabi_attribute 7, 82 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 82 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Real-time + diff --git a/test/tools/llvm-readobj/ARM/attribute-S.s b/test/tools/llvm-readobj/ARM/attribute-S.s new file mode 100644 index 0000000..cb90958 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-S.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'S' +@CHECK: .eabi_attribute 7, 83 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 83 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Classic + diff --git a/test/tools/llvm-readobj/ARM/attribute-conformance-1.s b/test/tools/llvm-readobj/ARM/attribute-conformance-1.s new file mode 100644 index 0000000..daa44c1 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-conformance-1.s @@ -0,0 +1,8 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_conformance, "0" +@CHECK: .eabi_attribute 67, "0" +@CHECK-OBJ: Tag: 67 +@CHECK-OBJ-NEXT: TagName: conformance +@CHECK-OBJ-NEXT: Value: 0 diff --git a/test/tools/llvm-readobj/ARM/attribute-conformance-2.s b/test/tools/llvm-readobj/ARM/attribute-conformance-2.s new file mode 100644 index 0000000..47c83c0 --- /dev/null +++ b/test/tools/llvm-readobj/ARM/attribute-conformance-2.s @@ -0,0 +1,8 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_conformance, "A.long--non numeric oddity...!!" +@CHECK: .eabi_attribute 67, "A.long--non numeric oddity...!!" +@CHECK-OBJ: Tag: 67 +@CHECK-OBJ-NEXT: TagName: conformance +@CHECK-OBJ-NEXT: Value: A.long--non numeric oddity...!! diff --git a/test/tools/llvm-readobj/ARM/attributes.s b/test/tools/llvm-readobj/ARM/attributes.s deleted file mode 100644 index 594bab8..0000000 --- a/test/tools/llvm-readobj/ARM/attributes.s +++ /dev/null @@ -1,287 +0,0 @@ -@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ -@ RUN: | llvm-readobj -arm-attributes - | FileCheck %s - - .syntax unified - - .cpu cortex-a8 - .fpu neon - - .eabi_attribute Tag_CPU_raw_name, "Cortex-A9" - .eabi_attribute Tag_CPU_name, "cortex-a9" - .eabi_attribute Tag_CPU_arch, 10 - .eabi_attribute Tag_CPU_arch_profile, 'A' - .eabi_attribute Tag_ARM_ISA_use, 0 - .eabi_attribute Tag_THUMB_ISA_use, 2 - .eabi_attribute Tag_FP_arch, 3 - .eabi_attribute Tag_WMMX_arch, 0 - .eabi_attribute Tag_Advanced_SIMD_arch, 1 - .eabi_attribute Tag_PCS_config, 2 - .eabi_attribute Tag_ABI_PCS_R9_use, 0 - .eabi_attribute Tag_ABI_PCS_RW_data, 0 - .eabi_attribute Tag_ABI_PCS_RO_data, 0 - .eabi_attribute Tag_ABI_PCS_GOT_use, 0 - .eabi_attribute Tag_ABI_PCS_wchar_t, 4 - .eabi_attribute Tag_ABI_FP_rounding, 1 - .eabi_attribute Tag_ABI_FP_denormal, 2 - .eabi_attribute Tag_ABI_FP_exceptions, 1 - .eabi_attribute Tag_ABI_FP_user_exceptions, 1 - .eabi_attribute Tag_ABI_FP_number_model, 3 - .eabi_attribute Tag_ABI_align_needed, 1 - .eabi_attribute Tag_ABI_align_preserved, 2 - .eabi_attribute Tag_ABI_enum_size, 3 - .eabi_attribute Tag_ABI_HardFP_use, 0 - .eabi_attribute Tag_ABI_VFP_args, 1 - .eabi_attribute Tag_ABI_WMMX_args, 0 - .eabi_attribute Tag_ABI_optimization_goals, 2 - .eabi_attribute Tag_ABI_FP_optimization_goals, 2 - .eabi_attribute Tag_compatibility, 1 - .eabi_attribute Tag_compatibility, 1, "aeabi" - .eabi_attribute Tag_CPU_unaligned_access, 0 - .eabi_attribute Tag_FP_HP_extension, 0 - .eabi_attribute Tag_ABI_FP_16bit_format, 0 - .eabi_attribute Tag_MPextension_use, 0 - .eabi_attribute Tag_DIV_use, 0 - .eabi_attribute Tag_nodefaults, 0 - .eabi_attribute Tag_also_compatible_with, "gnu" - .eabi_attribute Tag_T2EE_use, 0 - .eabi_attribute Tag_conformance, "2.09" - .eabi_attribute Tag_Virtualization_use, 0 - -@ CHECK: BuildAttributes { -@ CHECK: Section 1 { -@ CHECK: Tag: Tag_File (0x1) -@ CHECK: FileAttributes { -@ CHECK: Attribute { -@ CHECK: Tag: 4 -@ CHECK: TagName: CPU_raw_name -@ CHECK: Value: CORTEX-A9 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 5 -@ CHECK: TagName: CPU_name -@ CHECK: Value: CORTEX-A9 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 6 -@ CHECK: Value: 10 -@ CHECK: TagName: CPU_arch -@ CHECK: Description: ARM v7 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 7 -@ CHECK: Value: 65 -@ CHECK: TagName: CPU_arch_profile -@ CHECK: Description: Application -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 8 -@ CHECK: Value: 0 -@ CHECK: TagName: ARM_ISA_use -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 9 -@ CHECK: Value: 2 -@ CHECK: TagName: THUMB_ISA_use -@ CHECK: Description: Thumb-2 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 10 -@ CHECK: Value: 3 -@ CHECK: TagName: FP_arch -@ CHECK: Description: VFPv3 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 11 -@ CHECK: Value: 0 -@ CHECK: TagName: WMMX_arch -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 12 -@ CHECK: Value: 1 -@ CHECK: TagName: Advanced_SIMD_arch -@ CHECK: Description: NEONv1 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 13 -@ CHECK: Value: 2 -@ CHECK: TagName: PCS_config -@ CHECK: Description: Linux Application -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 14 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_PCS_R9_use -@ CHECK: Description: v6 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 15 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_PCS_RW_data -@ CHECK: Description: Absolute -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 16 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_PCS_RO_data -@ CHECK: Description: Absolute -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 17 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_PCS_GOT_use -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 18 -@ CHECK: Value: 4 -@ CHECK: TagName: ABI_PCS_wchar_t -@ CHECK: Description: 4-byte -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 19 -@ CHECK: Value: 1 -@ CHECK: TagName: ABI_FP_rounding -@ CHECK: Description: Runtime -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 20 -@ CHECK: Value: 2 -@ CHECK: TagName: ABI_FP_denormal -@ CHECK: Description: Sign Only -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 21 -@ CHECK: Value: 1 -@ CHECK: TagName: ABI_FP_exceptions -@ CHECK: Description: IEEE-754 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 22 -@ CHECK: Value: 1 -@ CHECK: TagName: ABI_FP_user_exceptions -@ CHECK: Description: IEEE-754 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 23 -@ CHECK: Value: 3 -@ CHECK: TagName: ABI_FP_number_model -@ CHECK: Description: IEEE-754 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 24 -@ CHECK: Value: 1 -@ CHECK: TagName: ABI_align_needed -@ CHECK: Description: 8-byte alignment -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 25 -@ CHECK: Value: 2 -@ CHECK: TagName: ABI_align_preserved -@ CHECK: Description: 8-byte data and code alignment -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 26 -@ CHECK: Value: 3 -@ CHECK: TagName: ABI_enum_size -@ CHECK: Description: External Int32 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 27 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_HardFP_use -@ CHECK: Description: Tag_FP_arch -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 28 -@ CHECK: Value: 1 -@ CHECK: TagName: ABI_VFP_args -@ CHECK: Description: AAPCS VFP -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 29 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_WMMX_args -@ CHECK: Description: AAPCS -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 30 -@ CHECK: Value: 2 -@ CHECK: TagName: ABI_optimization_goals -@ CHECK: Description: Aggressive Speed -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 31 -@ CHECK: Value: 2 -@ CHECK: TagName: ABI_FP_optimization_goals -@ CHECK: Description: Aggressive Speed -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 32 -@ CHECK: Value: 1, AEABI -@ CHECK: TagName: compatibility -@ CHECK: Description: AEABI Conformant -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 34 -@ CHECK: Value: 0 -@ CHECK: TagName: CPU_unaligned_access -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 36 -@ CHECK: Value: 0 -@ CHECK: TagName: FP_HP_extension -@ CHECK: Description: If Available -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 38 -@ CHECK: Value: 0 -@ CHECK: TagName: ABI_FP_16bit_format -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 42 -@ CHECK: Value: 0 -@ CHECK: TagName: MPextension_use -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 44 -@ CHECK: Value: 0 -@ CHECK: TagName: DIV_use -@ CHECK: Description: If Available -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 64 -@ CHECK: Value: 0 -@ CHECK: TagName: nodefaults -@ CHECK: Description: Unspecified Tags UNDEFINED -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 65 -@ CHECK: TagName: also_compatible_with -@ CHECK: Value: GNU -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 66 -@ CHECK: Value: 0 -@ CHECK: TagName: T2EE_use -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 67 -@ CHECK: TagName: conformance -@ CHECK: Value: 2.09 -@ CHECK: } -@ CHECK: Attribute { -@ CHECK: Tag: 68 -@ CHECK: Value: 0 -@ CHECK: TagName: Virtualization_use -@ CHECK: Description: Not Permitted -@ CHECK: } -@ CHECK: } -@ CHECK: } -@ CHECK: } - diff --git a/test/tools/llvm-readobj/Inputs/export-arm.dll b/test/tools/llvm-readobj/Inputs/export-arm.dll new file mode 100755 index 0000000..a555562 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/export-arm.dll differ diff --git a/test/tools/llvm-readobj/Inputs/export-x64.dll b/test/tools/llvm-readobj/Inputs/export-x64.dll new file mode 100755 index 0000000..10b14e8 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/export-x64.dll differ diff --git a/test/tools/llvm-readobj/Inputs/export-x86.dll b/test/tools/llvm-readobj/Inputs/export-x86.dll new file mode 100755 index 0000000..9efcd31 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/export-x86.dll differ diff --git a/test/tools/llvm-readobj/Inputs/relocs-no-symtab.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/relocs-no-symtab.obj.coff-i386 new file mode 100644 index 0000000..5882daf Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/relocs-no-symtab.obj.coff-i386 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 index a1034cb..658b0ea 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.obj.elf-arm b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-arm index 908507d..206c933 100644 Binary files a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-arm and b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-arm differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.py b/test/tools/llvm-readobj/Inputs/relocs.py index ffddf3d..62dbd62 100644 --- a/test/tools/llvm-readobj/Inputs/relocs.py +++ b/test/tools/llvm-readobj/Inputs/relocs.py @@ -591,7 +591,7 @@ class Relocs_Elf_PPC64(Enum): R_PPC64_TLSLD = 108 class Relocs_Elf_AArch64(Enum): - R_AARCH64_NONE = 0x100 + R_AARCH64_NONE = 0 R_AARCH64_ABS64 = 0x101 R_AARCH64_ABS32 = 0x102 R_AARCH64_ABS16 = 0x103 @@ -611,6 +611,7 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_LD_PREL_LO19 = 0x111 R_AARCH64_ADR_PREL_LO21 = 0x112 R_AARCH64_ADR_PREL_PG_HI21 = 0x113 + R_AARCH64_ADR_PREL_PG_HI21_NC = 0x114 R_AARCH64_ADD_ABS_LO12_NC = 0x115 R_AARCH64_LDST8_ABS_LO12_NC = 0x116 R_AARCH64_TSTBR14 = 0x117 @@ -620,11 +621,39 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_LDST16_ABS_LO12_NC = 0x11c R_AARCH64_LDST32_ABS_LO12_NC = 0x11d R_AARCH64_LDST64_ABS_LO12_NC = 0x11e + R_AARCH64_MOVW_PREL_G0 = 0x11f + R_AARCH64_MOVW_PREL_G0_NC = 0x120 + R_AARCH64_MOVW_PREL_G1 = 0x121 + R_AARCH64_MOVW_PREL_G1_NC = 0x122 + R_AARCH64_MOVW_PREL_G2 = 0x123 + R_AARCH64_MOVW_PREL_G2_NC = 0x124 + R_AARCH64_MOVW_PREL_G3 = 0x125 R_AARCH64_LDST128_ABS_LO12_NC = 0x12b + R_AARCH64_MOVW_GOTOFF_G0 = 0x12c + R_AARCH64_MOVW_GOTOFF_G0_NC = 0x12d + R_AARCH64_MOVW_GOTOFF_G1 = 0x12e + R_AARCH64_MOVW_GOTOFF_G1_NC = 0x12f + R_AARCH64_MOVW_GOTOFF_G2 = 0x130 + R_AARCH64_MOVW_GOTOFF_G2_NC = 0x131 + R_AARCH64_MOVW_GOTOFF_G3 = 0x132 R_AARCH64_GOTREL64 = 0x133 R_AARCH64_GOTREL32 = 0x134 + R_AARCH64_GOT_LD_PREL19 = 0x135 + R_AARCH64_LD64_GOTOFF_LO15 = 0x136 R_AARCH64_ADR_GOT_PAGE = 0x137 R_AARCH64_LD64_GOT_LO12_NC = 0x138 + R_AARCH64_LD64_GOTPAGE_LO15 = 0x139 + R_AARCH64_TLSGD_ADR_PREL21 = 0x200 + R_AARCH64_TLSGD_ADR_PAGE21 = 0x201 + R_AARCH64_TLSGD_ADD_LO12_NC = 0x202 + R_AARCH64_TLSGD_MOVW_G1 = 0x203 + R_AARCH64_TLSGD_MOVW_G0_NC = 0x204 + R_AARCH64_TLSLD_ADR_PREL21 = 0x205 + R_AARCH64_TLSLD_ADR_PAGE21 = 0x206 + R_AARCH64_TLSLD_ADD_LO12_NC = 0x207 + R_AARCH64_TLSLD_MOVW_G1 = 0x208 + R_AARCH64_TLSLD_MOVW_G0_NC = 0x209 + R_AARCH64_TLSLD_LD_PREL19 = 0x20a R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b R_AARCH64_TLSLD_MOVW_DTPREL_G1 = 0x20c R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC = 0x20d @@ -662,10 +691,20 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 0x22d R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 0x22e R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC = 0x22f - R_AARCH64_TLSDESC_ADR_PAGE = 0x232 + R_AARCH64_TLSDESC_LD_PREL19 = 0x230 + R_AARCH64_TLSDESC_ADR_PREL21 = 0x231 + R_AARCH64_TLSDESC_ADR_PAGE21 = 0x232 R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233 R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234 + R_AARCH64_TLSDESC_OFF_G1 = 0x235 + R_AARCH64_TLSDESC_OFF_G0_NC = 0x236 + R_AARCH64_TLSDESC_LDR = 0x237 + R_AARCH64_TLSDESC_ADD = 0x238 R_AARCH64_TLSDESC_CALL = 0x239 + R_AARCH64_TLSLE_LDST128_TPREL_LO12 = 0x23a + R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC = 0x23b + R_AARCH64_TLSLD_LDST128_DTPREL_LO12 = 0x23c + R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC = 0x23d R_AARCH64_COPY = 0x400 R_AARCH64_GLOB_DAT = 0x401 R_AARCH64_JUMP_SLOT = 0x402 @@ -808,6 +847,7 @@ class Relocs_Elf_ARM(Enum): R_ARM_ME_TOO = 0x80 R_ARM_THM_TLS_DESCSEQ16 = 0x81 R_ARM_THM_TLS_DESCSEQ32 = 0x82 + R_ARM_IRELATIVE = 0xa0 class Relocs_Elf_Mips(Enum): R_MIPS_NONE = 0 diff --git a/test/tools/llvm-readobj/Inputs/trivial.exe.coff-arm b/test/tools/llvm-readobj/Inputs/trivial.exe.coff-arm new file mode 100755 index 0000000..121d820 Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/trivial.exe.coff-arm differ diff --git a/test/tools/llvm-readobj/codeview-linetables.test b/test/tools/llvm-readobj/codeview-linetables.test index e5e344b..b2acee1 100644 --- a/test/tools/llvm-readobj/codeview-linetables.test +++ b/test/tools/llvm-readobj/codeview-linetables.test @@ -18,16 +18,16 @@ ; 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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \ RUN: | FileCheck %s -check-prefix MFUN64 -RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \ +RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \ RUN: | FileCheck %s -check-prefix MFUN64 -MFUN32: CodeViewLineTables [ +MFUN32: CodeViewDebugInfo [ MFUN32-NEXT: Magic: 0x4 MFUN32-NEXT: Subsection [ MFUN32-NEXT: Type: 0xF1 @@ -136,7 +136,7 @@ MFUN32-NEXT: ] MFUN32-NEXT: ] MFUN32-NEXT: ] -MFUN64: CodeViewLineTables [ +MFUN64: CodeViewDebugInfo [ MFUN64-NEXT: Magic: 0x4 MFUN64-NEXT: Subsection [ MFUN64-NEXT: Type: 0xF1 @@ -248,16 +248,16 @@ MFUN64-NEXT: ] ; 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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \ RUN: | FileCheck %s -check-prefix MFILE64 -MFILE32: CodeViewLineTables [ +MFILE32: CodeViewDebugInfo [ MFILE32-NEXT: Magic: 0x4 MFILE32-NEXT: Subsection [ MFILE32-NEXT: Type: 0xF1 @@ -317,7 +317,7 @@ MFILE32-NEXT: ] MFILE32-NEXT: ] MFILE32-NEXT: ] -MFILE64: CodeViewLineTables [ +MFILE64: CodeViewDebugInfo [ MFILE64-NEXT: Magic: 0x4 MFILE64-NEXT: Subsection [ MFILE64-NEXT: Type: 0xF1 @@ -387,9 +387,9 @@ MFILE64-NEXT: ] ; 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: llvm-readobj -s -codeview -section-symbols %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: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \ RUN: | FileCheck %s -check-prefix MCOMDAT MCOMDAT: ProcStart { diff --git a/test/tools/llvm-readobj/coff-arm-baserelocs.test b/test/tools/llvm-readobj/coff-arm-baserelocs.test new file mode 100644 index 0000000..c0febd7 --- /dev/null +++ b/test/tools/llvm-readobj/coff-arm-baserelocs.test @@ -0,0 +1,7 @@ +# RUN: llvm-readobj -coff-basereloc %p/Inputs/trivial.exe.coff-arm | FileCheck %s + +# CHECK: Entry { +# CHECK: Type: ARM_MOV32(T) +# CHECK: Address: 0x9390 +# CHECK: } + diff --git a/test/tools/llvm-readobj/coff-exports.test b/test/tools/llvm-readobj/coff-exports.test new file mode 100644 index 0000000..54b42fe --- /dev/null +++ b/test/tools/llvm-readobj/coff-exports.test @@ -0,0 +1,11 @@ +RUN: llvm-readobj -coff-exports %p/Inputs/export-x86.dll | FileCheck %s -check-prefix CHECK -check-prefix CHECK-X86 +RUN: llvm-readobj -coff-exports %p/Inputs/export-x64.dll | FileCheck %s -check-prefix CHECK -check-prefix CHECK-X64 +RUN: llvm-readobj -coff-exports %p/Inputs/export-arm.dll | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM + +CHECK: Export { +CHECK: Ordinal: 1 +CHECK: Name: function +CHECK-X86: RVA: 0x1000 +CHECK-X64: RVA: 0x1000 +CHECK-ARM: RVA: 0x1001 +CHECK: } diff --git a/test/tools/llvm-readobj/reloc-types.test b/test/tools/llvm-readobj/reloc-types.test index 20c2538..36e2f70 100644 --- a/test/tools/llvm-readobj/reloc-types.test +++ b/test/tools/llvm-readobj/reloc-types.test @@ -149,7 +149,7 @@ ELF-PPC64: Type: R_PPC64_GOT_TPREL16_HA (90) ELF-PPC64: Type: R_PPC64_TLSGD (107) ELF-PPC64: Type: R_PPC64_TLSLD (108) -ELF-AARCH64: Type: R_AARCH64_NONE (256) +ELF-AARCH64: Type: R_AARCH64_NONE (0) ELF-AARCH64: Type: R_AARCH64_ABS64 (257) ELF-AARCH64: Type: R_AARCH64_ABS32 (258) ELF-AARCH64: Type: R_AARCH64_ABS16 (259) @@ -169,6 +169,7 @@ ELF-AARCH64: Type: R_AARCH64_MOVW_SABS_G2 (272) ELF-AARCH64: Type: R_AARCH64_LD_PREL_LO19 (273) ELF-AARCH64: Type: R_AARCH64_ADR_PREL_LO21 (274) ELF-AARCH64: Type: R_AARCH64_ADR_PREL_PG_HI21 (275) +ELF-AARCH64: Type: R_AARCH64_ADR_PREL_PG_HI21_NC (276) ELF-AARCH64: Type: R_AARCH64_ADD_ABS_LO12_NC (277) ELF-AARCH64: Type: R_AARCH64_LDST8_ABS_LO12_NC (278) ELF-AARCH64: Type: R_AARCH64_TSTBR14 (279) @@ -178,11 +179,39 @@ ELF-AARCH64: Type: R_AARCH64_CALL26 (283) 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_MOVW_PREL_G0 (287) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G0_NC (288) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G1 (289) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G1_NC (290) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G2 (291) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G2_NC (292) +ELF-AARCH64: Type: R_AARCH64_MOVW_PREL_G3 (293) ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G0 (300) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G0_NC (301) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G1 (302) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G1_NC (303) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G2 (304) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G2_NC (305) +ELF-AARCH64: Type: R_AARCH64_MOVW_GOTOFF_G3 (306) ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307) ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308) +ELF-AARCH64: Type: R_AARCH64_GOT_LD_PREL19 (309) +ELF-AARCH64: Type: R_AARCH64_LD64_GOTOFF_LO15 (310) ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311) ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312) +ELF-AARCH64: Type: R_AARCH64_LD64_GOTPAGE_LO15 (313) +ELF-AARCH64: Type: R_AARCH64_TLSGD_ADR_PREL21 (512) +ELF-AARCH64: Type: R_AARCH64_TLSGD_ADR_PAGE21 (513) +ELF-AARCH64: Type: R_AARCH64_TLSGD_ADD_LO12_NC (514) +ELF-AARCH64: Type: R_AARCH64_TLSGD_MOVW_G1 (515) +ELF-AARCH64: Type: R_AARCH64_TLSGD_MOVW_G0_NC (516) +ELF-AARCH64: Type: R_AARCH64_TLSLD_ADR_PREL21 (517) +ELF-AARCH64: Type: R_AARCH64_TLSLD_ADR_PAGE21 (518) +ELF-AARCH64: Type: R_AARCH64_TLSLD_ADD_LO12_NC (519) +ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_G1 (520) +ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_G0_NC (521) +ELF-AARCH64: Type: R_AARCH64_TLSLD_LD_PREL19 (522) ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523) ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1 (524) ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC (525) @@ -220,10 +249,20 @@ ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12 (556) ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC (557) ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12 (558) ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC (559) -ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD_PREL19 (560) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PREL21 (561) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE21 (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_OFF_G1 (565) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_OFF_G0_NC (566) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_LDR (567) +ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD (568) ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569) +ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12 (570) +ELF-AARCH64: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC (571) +ELF-AARCH64: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12 (572) +ELF-AARCH64: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC (573) ELF-AARCH64: Type: R_AARCH64_COPY (1024) ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025) ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026) @@ -364,6 +403,7 @@ ELF-ARM: Type: R_ARM_PRIVATE_15 (127) ELF-ARM: Type: R_ARM_ME_TOO (128) ELF-ARM: Type: R_ARM_THM_TLS_DESCSEQ16 (129) ELF-ARM: Type: R_ARM_THM_TLS_DESCSEQ32 (130) +ELF-ARM: Type: R_ARM_IRELATIVE (160) ELF-MIPS: Type: R_MIPS_NONE (0) ELF-MIPS: Type: R_MIPS_16 (1) diff --git a/test/tools/llvm-readobj/relocations.test b/test/tools/llvm-readobj/relocations.test index 222dcf1..2e11aa2 100644 --- a/test/tools/llvm-readobj/relocations.test +++ b/test/tools/llvm-readobj/relocations.test @@ -2,6 +2,8 @@ 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/relocs-no-symtab.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 \ -- cgit v1.1