diff options
Diffstat (limited to 'test/tools')
28 files changed, 411 insertions, 125 deletions
diff --git a/test/tools/llvm-cov/Inputs/README b/test/tools/llvm-cov/Inputs/README new file mode 100644 index 0000000..2cfb191 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/README @@ -0,0 +1,7 @@ +These inputs were pre-generated to allow for easier testing of llvm-cov. + +test.gcno and test.gcda were create by running clang: + clang++ -g -ftest-coverage -fprofile-arcs test.cpp + +test.cpp.gcov was created by running gcov 4.2.1: + gcov test.cpp diff --git a/test/tools/llvm-cov/Inputs/test.cpp b/test/tools/llvm-cov/Inputs/test.cpp new file mode 100644 index 0000000..07bc3f2 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.cpp @@ -0,0 +1,77 @@ +#include <cstdlib> + +bool on = false; +int len = 42; +double grid[10][10] = {0}; +const char * hello = "world"; +const char * world = "hello"; + +struct A { + virtual void B(); +}; + +void A::B() {} + +void useless() {} + +double more_useless() { + return 0; +} + +int foo() { + on = true; + return 3; +} + +int bar() { + len--; + return foo() + 45; +} + +void assign(int ii, int jj) { + grid[ii][jj] = (ii+1) * (jj+1); +} + +void initialize_grid() { + for (int ii = 0; ii < 2; ii++) + for (int jj = 0; jj < 2; jj++) + assign(ii, jj); +} + +int main() { + initialize_grid(); + + int a = 2; + on = rand() % 2; + if (on) { + foo(); + ++a; + } else { + bar(); + a += rand(); + } + + for (int ii = 0; ii < 10; ++ii) { + switch (rand() % 5) { + case 0: + a += rand(); + break; + case 1: + case 2: + a += rand() / rand(); + break; + case 3: + a -= rand(); + break; + default: + a = -1; + } + } + + A thing; + for (uint64_t ii = 0; ii < 4294967296; ++ii) + thing.B(); + + return a + 8 + grid[2][3] + len; + return more_useless(); +} diff --git a/test/tools/llvm-cov/Inputs/test.cpp.gcov b/test/tools/llvm-cov/Inputs/test.cpp.gcov new file mode 100644 index 0000000..a3dacc2 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.cpp.gcov @@ -0,0 +1,82 @@ + -: 0:Source:test.cpp + -: 0:Graph:test.gcno + -: 0:Data:test.gcda + -: 0:Runs:2 + -: 0:Programs:1 + -: 1:#include <cstdlib> + -: 2: + -: 3:bool on = false; + -: 4:int len = 42; + -: 5:double grid[10][10] = {0}; + -: 6:const char * hello = "world"; + -: 7:const char * world = "hello"; + -: 8: + 4: 9:struct A { + -: 10: virtual void B(); + -: 11:}; + -: 12: +8589934592: 13:void A::B() {} + -: 14: + #####: 15:void useless() {} + -: 16: + -: 17:double more_useless() { + #####: 18: return 0; + -: 19:} + -: 20: + -: 21:int foo() { + 2: 22: on = true; + 2: 23: return 3; + -: 24:} + -: 25: + -: 26:int bar() { + #####: 27: len--; + #####: 28: return foo() + 45; + -: 29:} + -: 30: + 8: 31:void assign(int ii, int jj) { + 8: 32: grid[ii][jj] = (ii+1) * (jj+1); + 8: 33:} + -: 34: + -: 35:void initialize_grid() { + 12: 36: for (int ii = 0; ii < 2; ii++) + 24: 37: for (int jj = 0; jj < 2; jj++) + 12: 38: assign(ii, jj); + 2: 39:} + -: 40: + -: 41:int main() { + 2: 42: initialize_grid(); + -: 43: + 2: 44: int a = 2; + 2: 45: on = rand() % 2; + 2: 46: if (on) { + 2: 47: foo(); + 2: 48: ++a; + 2: 49: } else { + #####: 50: bar(); + #####: 51: a += rand(); + -: 52: } + -: 53: + 44: 54: for (int ii = 0; ii < 10; ++ii) { + 20: 55: switch (rand() % 5) { + -: 56: case 0: + 4: 57: a += rand(); + 4: 58: break; + -: 59: case 1: + -: 60: case 2: + 2: 61: a += rand() / rand(); + 2: 62: break; + -: 63: case 3: + 6: 64: a -= rand(); + 6: 65: break; + -: 66: default: + 8: 67: a = -1; + 8: 68: } + 20: 69: } + -: 70: + 2: 71: A thing; +17179869188: 72: for (uint64_t ii = 0; ii < 4294967296; ++ii) +8589934592: 73: thing.B(); + -: 74: + 2: 75: return a + 8 + grid[2][3] + len; + -: 76: return more_useless(); + -: 77:} diff --git a/test/tools/llvm-cov/Inputs/test.gcda b/test/tools/llvm-cov/Inputs/test.gcda Binary files differnew file mode 100644 index 0000000..23d03bd --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.gcda diff --git a/test/tools/llvm-cov/Inputs/test.gcno b/test/tools/llvm-cov/Inputs/test.gcno Binary files differnew file mode 100644 index 0000000..6162604 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.gcno diff --git a/test/tools/llvm-cov/Inputs/test_read_fail.gcno b/test/tools/llvm-cov/Inputs/test_read_fail.gcno Binary files differnew file mode 100644 index 0000000..63b5d71 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test_read_fail.gcno diff --git a/test/tools/llvm-readobj/lit.local.cfg b/test/tools/llvm-cov/lit.local.cfg index df9b335..df9b335 100644 --- a/test/tools/llvm-readobj/lit.local.cfg +++ b/test/tools/llvm-cov/lit.local.cfg diff --git a/test/tools/llvm-cov/llvm-cov.test b/test/tools/llvm-cov/llvm-cov.test new file mode 100644 index 0000000..28738a7 --- /dev/null +++ b/test/tools/llvm-cov/llvm-cov.test @@ -0,0 +1,10 @@ +RUN: cd %p/Inputs +# "cd" is unsupported in lit internal runner. +REQUIRES: shell + +RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda \ +RUN: | diff -aub test.cpp.gcov - + +RUN: not llvm-cov -gcno=test_read_fail.gcno -gcda=test.gcda + +XFAIL: powerpc64, s390x diff --git a/test/tools/llvm-lit/lit.local.cfg b/test/tools/llvm-lit/lit.local.cfg deleted file mode 100644 index 856a549..0000000 --- a/test/tools/llvm-lit/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.c'] diff --git a/test/tools/llvm-objdump/Inputs/nop.exe.coff-i386 b/test/tools/llvm-objdump/Inputs/nop.exe.coff-i386 Binary files differnew file mode 100644 index 0000000..68c9d3d --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/nop.exe.coff-i386 diff --git a/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 b/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 Binary files differnew file mode 100644 index 0000000..fdc4874 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 diff --git a/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64 b/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64 Binary files differnew file mode 100644 index 0000000..63460e7 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64 diff --git a/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64.asm b/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64.asm new file mode 100644 index 0000000..4d47fa4 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64.asm @@ -0,0 +1,53 @@ + .text + .globl func + .def func; .scl 2; .type 32; .endef + .seh_proc func +func: + .seh_pushframe @code + subq $24, %rsp + .seh_stackalloc 24 + movq %rsi, 16(%rsp) + .seh_savereg %rsi, 16 + movups %xmm8, (%rsp) + .seh_savexmm %xmm8, 0 + pushq %rbx + .seh_pushreg 3 + mov %rsp, %rbx + .seh_setframe 3, 0 + .seh_endprologue + .seh_handler __C_specific_handler, @except + .seh_handlerdata + .long 0 + .text + .seh_startchained + .seh_endprologue + .seh_endchained + lea (%rbx), %rsp + pop %rbx + addq $24, %rsp + ret + .seh_endproc + +// Test emission of small functions. + .globl smallFunc + .def smallFunc; .scl 2; .type 32; .endef + .seh_proc smallFunc +smallFunc: + ret + .seh_endproc + +// Function with big stack allocation. + .globl allocFunc + .def allocFunc; .scl 2; .type 32; .endef + .seh_proc allocFunc +allocFunc: + .seh_pushframe @code + subq $65520, %rsp + .seh_stackalloc 65520 + sub $8454128, %rsp + .seh_stackalloc 8454128 + .seh_endprologue + add $8454128, %rsp + addq $65520, %rsp + ret + .seh_endproc diff --git a/test/tools/llvm-objdump/coff-private-headers.test b/test/tools/llvm-objdump/coff-private-headers.test new file mode 100644 index 0000000..d36c148 --- /dev/null +++ b/test/tools/llvm-objdump/coff-private-headers.test @@ -0,0 +1,9 @@ +// RUN: llvm-objdump -p %p/Inputs/nop.exe.coff-i386 | FileCheck %s + +CHECK: The Import Tables: +CHECK-NEXT: lookup 00005028 time 00000000 fwd 00000000 name 00005096 addr 00005058 +CHECK: DLL Name: KERNEL32.dll +CHECK-NEXT: Hint/Ord Name +CHECK-NEXT: 365 ExitProcess + + diff --git a/test/tools/llvm-objdump/disassembly-show-raw.s b/test/tools/llvm-objdump/disassembly-show-raw.s deleted file mode 100644 index 32fcad4..0000000 --- a/test/tools/llvm-objdump/disassembly-show-raw.s +++ /dev/null @@ -1,15 +0,0 @@ -// RUN: llvm-mc -filetype=obj -arch=x86 %s | llvm-objdump -d - \ -// RUN: | FileCheck %s -check-prefix=WITHRAW -// RUN: llvm-mc -filetype=obj -arch=x86 %s | llvm-objdump -d -no-show-raw-insn - \ -// RUN: | FileCheck %s -check-prefix=NORAW - -// Expect to find the raw incoding when run with raw output (default), but not -// when run explicitly with -no-show-raw-insn - -movl 0, %eax -// WITHRAW: a1 00 00 00 00 movl - -// NORAW: movl -// NORAW-NOT: a1 00 - - diff --git a/test/tools/llvm-objdump/disassembly-show-raw.test b/test/tools/llvm-objdump/disassembly-show-raw.test new file mode 100644 index 0000000..e9956a5 --- /dev/null +++ b/test/tools/llvm-objdump/disassembly-show-raw.test @@ -0,0 +1,14 @@ +// RUN: llvm-objdump -d %p/Inputs/trivial.obj.elf-i386 \ +// RUN: | FileCheck %s -check-prefix=WITHRAW +// RUN: llvm-objdump -d -no-show-raw-insn %p/Inputs/trivial.obj.elf-i386 \ +// RUN: | FileCheck %s -check-prefix=NORAW + +// Expect to find the raw incoding when run with raw output (default), but not +// when run explicitly with -no-show-raw-insn + +WITHRAW: a1 00 00 00 00 movl + +NORAW: movl +NORAW-NOT: a1 00 + + diff --git a/test/tools/llvm-objdump/lit.local.cfg b/test/tools/llvm-objdump/lit.local.cfg index 56bf008..19840aa 100644 --- a/test/tools/llvm-objdump/lit.local.cfg +++ b/test/tools/llvm-objdump/lit.local.cfg @@ -1,6 +1,3 @@ -config.suffixes = ['.ll', '.s'] - targets = set(config.root.targets_to_build.split()) if not 'X86' in targets: config.unsupported = True - diff --git a/test/tools/llvm-objdump/win64-unwind-data.s b/test/tools/llvm-objdump/win64-unwind-data.s deleted file mode 100644 index 1e4c742..0000000 --- a/test/tools/llvm-objdump/win64-unwind-data.s +++ /dev/null @@ -1,106 +0,0 @@ -// This test checks that the unwind data is dumped by llvm-objdump. -// RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-objdump -u - | FileCheck %s - -// CHECK: Unwind info: -// CHECK: Function Table: -// CHECK-NEXT: Start Address: .text -// CHECK-NEXT: End Address: .text + 0x001b -// CHECK-NEXT: Unwind Info Address: .xdata -// CHECK-NEXT: Version: 1 -// CHECK-NEXT: Flags: 1 UNW_ExceptionHandler -// CHECK-NEXT: Size of prolog: 18 -// CHECK-NEXT: Number of Codes: 8 -// CHECK-NEXT: Frame register: RBX -// CHECK-NEXT: Frame offset: 0 -// CHECK-NEXT: Unwind Codes: -// CHECK-NEXT: 0x00: UOP_SetFPReg -// CHECK-NEXT: 0x0f: UOP_PushNonVol RBX -// CHECK-NEXT: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] -// CHECK-NEXT: 0x09: UOP_SaveNonVol RSI [0x0010] -// CHECK-NEXT: 0x04: UOP_AllocSmall 24 -// CHECK-NEXT: 0x00: UOP_PushMachFrame w/o error code -// CHECK: Function Table: -// CHECK-NEXT: Start Address: .text + 0x0012 -// CHECK-NEXT: End Address: .text + 0x0012 -// CHECK-NEXT: Unwind Info Address: .xdata + 0x001c -// CHECK-NEXT: Version: 1 -// CHECK-NEXT: Flags: 4 UNW_ChainInfo -// CHECK-NEXT: Size of prolog: 0 -// CHECK-NEXT: Number of Codes: 0 -// CHECK-NEXT: No frame pointer used -// CHECK: Function Table: -// CHECK-NEXT: Start Address: .text + 0x001b -// CHECK-NEXT: End Address: .text + 0x001c -// CHECK-NEXT: Unwind Info Address: .xdata + 0x002c -// CHECK-NEXT: Version: 1 -// CHECK-NEXT: Flags: 0 -// CHECK-NEXT: Size of prolog: 0 -// CHECK-NEXT: Number of Codes: 0 -// CHECK-NEXT: No frame pointer used -// CHECK: Function Table: -// CHECK-NEXT: Start Address: .text + 0x001c -// CHECK-NEXT: End Address: .text + 0x0039 -// CHECK-NEXT: Unwind Info Address: .xdata + 0x0034 -// CHECK-NEXT: Version: 1 -// CHECK-NEXT: Flags: 0 -// CHECK-NEXT: Size of prolog: 14 -// CHECK-NEXT: Number of Codes: 6 -// CHECK-NEXT: No frame pointer used -// CHECK-NEXT: Unwind Codes: -// CHECK-NEXT: 0x0e: UOP_AllocLarge 8454128 -// CHECK-NEXT: 0x07: UOP_AllocLarge 8190 -// CHECK-NEXT: 0x00: UOP_PushMachFrame w/o error code - - .text - .globl func - .def func; .scl 2; .type 32; .endef - .seh_proc func -func: - .seh_pushframe @code - subq $24, %rsp - .seh_stackalloc 24 - movq %rsi, 16(%rsp) - .seh_savereg %rsi, 16 - movups %xmm8, (%rsp) - .seh_savexmm %xmm8, 0 - pushq %rbx - .seh_pushreg 3 - mov %rsp, %rbx - .seh_setframe 3, 0 - .seh_endprologue - .seh_handler __C_specific_handler, @except - .seh_handlerdata - .long 0 - .text - .seh_startchained - .seh_endprologue - .seh_endchained - lea (%rbx), %rsp - pop %rbx - addq $24, %rsp - ret - .seh_endproc - -// Test emission of small functions. - .globl smallFunc - .def smallFunc; .scl 2; .type 32; .endef - .seh_proc smallFunc -smallFunc: - ret - .seh_endproc - -// Function with big stack allocation. - .globl smallFunc - .def allocFunc; .scl 2; .type 32; .endef - .seh_proc smallFunc -allocFunc: - .seh_pushframe @code - subq $65520, %rsp - .seh_stackalloc 65520 - sub $8454128, %rsp - .seh_stackalloc 8454128 - .seh_endprologue - add $8454128, %rsp - addq $65520, %rsp - ret - .seh_endproc diff --git a/test/tools/llvm-objdump/win64-unwind-data.test b/test/tools/llvm-objdump/win64-unwind-data.test new file mode 100644 index 0000000..a723ffe --- /dev/null +++ b/test/tools/llvm-objdump/win64-unwind-data.test @@ -0,0 +1,52 @@ +// This test checks that the unwind data is dumped by llvm-objdump. +// RUN: llvm-objdump -u %p/Inputs/win64-unwind.exe.coff-x86_64 | FileCheck %s + +CHECK: Unwind info: +CHECK: Function Table: +CHECK-NEXT: Start Address: func +CHECK-NEXT: End Address: func + 0x001b +CHECK-NEXT: Unwind Info Address: .xdata +CHECK-NEXT: Version: 1 +CHECK-NEXT: Flags: 1 UNW_ExceptionHandler +CHECK-NEXT: Size of prolog: 18 +CHECK-NEXT: Number of Codes: 8 +CHECK-NEXT: Frame register: RBX +CHECK-NEXT: Frame offset: 0 +CHECK-NEXT: Unwind Codes: +CHECK-NEXT: 0x12: UOP_SetFPReg +CHECK-NEXT: 0x0f: UOP_PushNonVol RBX +CHECK-NEXT: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] +CHECK-NEXT: 0x09: UOP_SaveNonVol RSI [0x0010] +CHECK-NEXT: 0x04: UOP_AllocSmall 24 +CHECK-NEXT: 0x00: UOP_PushMachFrame w/o error code +CHECK: Function Table: +CHECK-NEXT: Start Address: func + 0x0012 +CHECK-NEXT: End Address: func + 0x0012 +CHECK-NEXT: Unwind Info Address: .xdata + 0x001c +CHECK-NEXT: Version: 1 +CHECK-NEXT: Flags: 4 UNW_ChainInfo +CHECK-NEXT: Size of prolog: 0 +CHECK-NEXT: Number of Codes: 0 +CHECK-NEXT: No frame pointer used +CHECK: Function Table: +CHECK-NEXT: Start Address: smallFunc +CHECK-NEXT: End Address: smallFunc + 0x0001 +CHECK-NEXT: Unwind Info Address: .xdata + 0x002c +CHECK-NEXT: Version: 1 +CHECK-NEXT: Flags: 0 +CHECK-NEXT: Size of prolog: 0 +CHECK-NEXT: Number of Codes: 0 +CHECK-NEXT: No frame pointer used +CHECK: Function Table: +CHECK-NEXT: Start Address: allocFunc +CHECK-NEXT: End Address: allocFunc + 0x001d +CHECK-NEXT: Unwind Info Address: .xdata + 0x0034 +CHECK-NEXT: Version: 1 +CHECK-NEXT: Flags: 0 +CHECK-NEXT: Size of prolog: 14 +CHECK-NEXT: Number of Codes: 6 +CHECK-NEXT: No frame pointer used +CHECK-NEXT: Unwind Codes: +CHECK-NEXT: 0x0e: UOP_AllocLarge 8454128 +CHECK-NEXT: 0x07: UOP_AllocLarge 8190 +CHECK-NEXT: 0x00: UOP_PushMachFrame w/o error code diff --git a/test/tools/llvm-readobj/Inputs/dynamic-table.c b/test/tools/llvm-readobj/Inputs/dynamic-table.c new file mode 100644 index 0000000..6d36e8a --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/dynamic-table.c @@ -0,0 +1,7 @@ +// clang -target mipsel-linux-gnu -shared -fPIC -lc dynamic-table.c \ +// -o dynamic-table.mips +int puts(const char *); + +void foo(void) { + puts("Hello, World"); +} diff --git a/test/tools/llvm-readobj/Inputs/dynamic-table.mips b/test/tools/llvm-readobj/Inputs/dynamic-table.mips Binary files differnew file mode 100644 index 0000000..ab36cee --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/dynamic-table.mips diff --git a/test/tools/llvm-readobj/Inputs/magic.coff-importlib b/test/tools/llvm-readobj/Inputs/magic.coff-importlib Binary files differnew file mode 100644 index 0000000..b934afb --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/magic.coff-importlib diff --git a/test/tools/llvm-readobj/Inputs/magic.coff-unknown b/test/tools/llvm-readobj/Inputs/magic.coff-unknown Binary files differnew file mode 100644 index 0000000..7b3b461 --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/magic.coff-unknown diff --git a/test/tools/llvm-readobj/Inputs/rpath.exe.elf-x86_64 b/test/tools/llvm-readobj/Inputs/rpath.exe.elf-x86_64 Binary files differnew file mode 100644 index 0000000..8c01c50 --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/rpath.exe.elf-x86_64 diff --git a/test/tools/llvm-readobj/dynamic.test b/test/tools/llvm-readobj/dynamic.test new file mode 100644 index 0000000..78a9b3b --- /dev/null +++ b/test/tools/llvm-readobj/dynamic.test @@ -0,0 +1,33 @@ +RUN: llvm-readobj -dynamic-table %p/Inputs/dynamic-table.mips \ +RUN: | FileCheck %s -check-prefix ELF-MIPS + +ELF-MIPS: Format: ELF32-mips +ELF-MIPS: Arch: mipsel +ELF-MIPS: AddressSize: 32bit +ELF-MIPS: LoadName: +ELF-MIPS: DynamicSection [ (23 entries) +ELF-MIPS: Tag Type Name/Value +ELF-MIPS: 0x00000001 NEEDED SharedLibrary (libc.so.6) +ELF-MIPS: 0x0000000C INIT 0x528 +ELF-MIPS: 0x0000000D FINI 0x860 +ELF-MIPS: 0x00000004 HASH 0x210 +ELF-MIPS: 0x00000005 STRTAB 0x3D8 +ELF-MIPS: 0x00000006 SYMTAB 0x2A8 +ELF-MIPS: 0x0000000A STRSZ 231 (bytes) +ELF-MIPS: 0x0000000B SYMENT 16 (bytes) +ELF-MIPS: 0x00000003 PLTGOT 0x108E0 +ELF-MIPS: 0x00000011 REL 0x518 +ELF-MIPS: 0x00000012 RELSZ 16 (bytes) +ELF-MIPS: 0x00000013 RELENT 8 (bytes) +ELF-MIPS: 0x70000001 MIPS_RLD_VERSION 1 +ELF-MIPS: 0x70000005 MIPS_FLAGS 0x2 +ELF-MIPS: 0x70000006 MIPS_BASE_ADDRESS 0x0 +ELF-MIPS: 0x7000000A MIPS_LOCAL_GOTNO 10 +ELF-MIPS: 0x70000011 MIPS_SYMTABNO 19 +ELF-MIPS: 0x70000012 MIPS_UNREFEXTNO 26 +ELF-MIPS: 0x70000013 MIPS_GOTSYM 0xD +ELF-MIPS: 0x6FFFFFFE VERNEED 0x4E8 +ELF-MIPS: 0x6FFFFFFF VERNEEDNUM 1 +ELF-MIPS: 0x6FFFFFF0 VERSYM 0x4C0 +ELF-MIPS: 0x00000000 NULL 0x0 +ELF-MIPS: ] diff --git a/test/tools/llvm-readobj/file-headers.test b/test/tools/llvm-readobj/file-headers.test index b900e36..b2b4547 100644 --- a/test/tools/llvm-readobj/file-headers.test +++ b/test/tools/llvm-readobj/file-headers.test @@ -8,6 +8,10 @@ RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF32 RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF64 +RUN: llvm-readobj -h %p/Inputs/magic.coff-unknown \ +RUN: | FileCheck %s -check-prefix COFF-UNKNOWN +RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \ +RUN: | FileCheck %s -check-prefix COFF-IMPORTLIB COFF32: File: {{(.*[/\\])?}}trivial.obj.coff-i386 COFF32-NEXT: Format: COFF-i386 @@ -183,3 +187,32 @@ PE32-NEXT: ReservedRVA: 0x0 PE32-NEXT: ReservedSize: 0x0 PE32-NEXT: } PE32-NEXT: } + +COFF-UNKNOWN: Format: COFF-<unknown arch> +COFF-UNKNOWN-NEXT: Arch: unknown +COFF-UNKNOWN-NEXT: AddressSize: 32bit +COFF-UNKNOWN-NEXT: ImageFileHeader { +COFF-UNKNOWN-NEXT: Machine: IMAGE_FILE_MACHINE_UNKNOWN (0x0) +COFF-UNKNOWN-NEXT: SectionCount: 3 +COFF-UNKNOWN-NEXT: TimeDateStamp: 2013-11-14 21:19:28 (0x52853E60) +COFF-UNKNOWN-NEXT: PointerToSymbolTable: 0xF8 +COFF-UNKNOWN-NEXT: SymbolCount: 11 +COFF-UNKNOWN-NEXT: OptionalHeaderSize: 0 +COFF-UNKNOWN-NEXT: Characteristics [ (0x0) +COFF-UNKNOWN-NEXT: ] +COFF-UNKNOWN-NEXT: } + +COFF-IMPORTLIB: Format: COFF-<unknown arch> +COFF-IMPORTLIB-NEXT: Arch: unknown +COFF-IMPORTLIB-NEXT: AddressSize: 32bit +COFF-IMPORTLIB-NEXT: ImageFileHeader { +COFF-IMPORTLIB-NEXT: Machine: IMAGE_FILE_MACHINE_UNKNOWN (0x0) +COFF-IMPORTLIB-NEXT: SectionCount: 65535 +COFF-IMPORTLIB-NEXT: TimeDateStamp: 1970-09-09 19:52:32 (0x14C0000) +COFF-IMPORTLIB-NEXT: PointerToSymbolTable: 0x528542EB +COFF-IMPORTLIB-NEXT: SymbolCount: 20 +COFF-IMPORTLIB-NEXT: OptionalHeaderSize: 0 +COFF-IMPORTLIB-NEXT: Characteristics [ (0x8) +COFF-IMPORTLIB-NEXT: IMAGE_FILE_LOCAL_SYMS_STRIPPED (0x8) +COFF-IMPORTLIB-NEXT: ] +COFF-IMPORTLIB-NEXT: } diff --git a/test/tools/llvm-readobj/program-headers.test b/test/tools/llvm-readobj/program-headers.test index 2a574bb..7c22f2b 100644 --- a/test/tools/llvm-readobj/program-headers.test +++ b/test/tools/llvm-readobj/program-headers.test @@ -2,6 +2,8 @@ RUN: llvm-readobj -program-headers %p/../../Object/Inputs/program-headers.elf-i3 RUN: | FileCheck %s -check-prefix ELF-I386 RUN: llvm-readobj -program-headers %p/../../Object/Inputs/program-headers.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF-X86-64 +RUN: llvm-readobj -program-headers %p/../../Object/Inputs/program-headers.mips \ +RUN: | FileCheck %s -check-prefix ELF-MIPS ELF-I386: ProgramHeaders [ ELF-I386-NEXT: ProgramHeader { @@ -72,3 +74,31 @@ ELF-X86-64-NEXT: ] ELF-X86-64-NEXT: Alignment: 8 ELF-X86-64-NEXT: } ELF-X86-64-NEXT: ] + +ELF-MIPS: ProgramHeaders [ +ELF-MIPS-NEXT: ProgramHeader { +ELF-MIPS-NEXT: Type: PT_MIPS_REGINFO (0x70000000) +ELF-MIPS-NEXT: Offset: 0x74 +ELF-MIPS-NEXT: VirtualAddress: 0x400074 +ELF-MIPS-NEXT: PhysicalAddress: 0x400074 +ELF-MIPS-NEXT: FileSize: 24 +ELF-MIPS-NEXT: MemSize: 24 +ELF-MIPS-NEXT: Flags [ (0x4) +ELF-MIPS-NEXT: PF_R (0x4) +ELF-MIPS-NEXT: ] +ELF-MIPS-NEXT: Alignment: 4 +ELF-MIPS-NEXT: } +ELF-MIPS-NEXT: ProgramHeader { +ELF-MIPS-NEXT: Type: PT_LOAD (0x1) +ELF-MIPS-NEXT: Offset: 0x0 +ELF-MIPS-NEXT: VirtualAddress: 0x400000 +ELF-MIPS-NEXT: PhysicalAddress: 0x400000 +ELF-MIPS-NEXT: FileSize: 160 +ELF-MIPS-NEXT: MemSize: 160 +ELF-MIPS-NEXT: Flags [ (0x5) +ELF-MIPS-NEXT: PF_R (0x4) +ELF-MIPS-NEXT: PF_X (0x1) +ELF-MIPS-NEXT: ] +ELF-MIPS-NEXT: Alignment: 65536 +ELF-MIPS-NEXT: } +ELF-MIPS-NEXT: ] diff --git a/test/tools/llvm-readobj/rpath.test b/test/tools/llvm-readobj/rpath.test new file mode 100644 index 0000000..600938e --- /dev/null +++ b/test/tools/llvm-readobj/rpath.test @@ -0,0 +1,4 @@ +RUN: llvm-readobj -dynamic-table %p/Inputs/rpath.exe.elf-x86_64 \ +RUN: | FileCheck %s + +CHECK: 0x000000000000000F RPATH /usr/local/lib |