diff options
author | Rui Ueyama <ruiu@google.com> | 2013-09-27 21:04:00 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2013-09-27 21:04:00 +0000 |
commit | a6610ee882fcb8bcad60d53fc52b80f00a3fddae (patch) | |
tree | 83c3eaa619ccecb6a3b9a53f4d0bf662f3c1f3aa /test/tools/llvm-objdump | |
parent | 52fbca55ad4c11516b87544a2048667b63d0694c (diff) | |
download | llvm-a6610ee882fcb8bcad60d53fc52b80f00a3fddae.tar.gz llvm-a6610ee882fcb8bcad60d53fc52b80f00a3fddae.tar.bz2 llvm-a6610ee882fcb8bcad60d53fc52b80f00a3fddae.tar.xz |
Re-submit r191472 with a fix for big endian.
llvm-objdump: Dump COFF import table if -private-headers option is given.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191557 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tools/llvm-objdump')
-rw-r--r-- | test/tools/llvm-objdump/Inputs/nop.exe.coff-i386 | bin | 0 -> 7680 bytes | |||
-rw-r--r-- | test/tools/llvm-objdump/Inputs/trivial.obj.elf-i386 | bin | 0 -> 449 bytes | |||
-rw-r--r-- | test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64 | bin | 0 -> 698 bytes | |||
-rw-r--r-- | test/tools/llvm-objdump/Inputs/win64-unwind.exe.coff-x86_64.asm | 53 | ||||
-rw-r--r-- | test/tools/llvm-objdump/coff-private-headers.test | 9 | ||||
-rw-r--r-- | test/tools/llvm-objdump/disassembly-show-raw.s | 15 | ||||
-rw-r--r-- | test/tools/llvm-objdump/disassembly-show-raw.test | 14 | ||||
-rw-r--r-- | test/tools/llvm-objdump/lit.local.cfg | 4 | ||||
-rw-r--r-- | test/tools/llvm-objdump/win64-unwind-data.s | 106 | ||||
-rw-r--r-- | test/tools/llvm-objdump/win64-unwind-data.test | 52 |
10 files changed, 128 insertions, 125 deletions
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 0000000000..68c9d3db0f --- /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 0000000000..fdc48743a8 --- /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 0000000000..63460e7826 --- /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 0000000000..4d47fa4515 --- /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 0000000000..d36c148cec --- /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 32fcad4a36..0000000000 --- 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 0000000000..e9956a5ebe --- /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 deleted file mode 100644 index ba763cf03f..0000000000 --- a/test/tools/llvm-objdump/lit.local.cfg +++ /dev/null @@ -1,4 +0,0 @@ -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 f8463fb062..0000000000 --- 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: 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 - - .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/win64-unwind-data.test b/test/tools/llvm-objdump/win64-unwind-data.test new file mode 100644 index 0000000000..a723ffed3e --- /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 |