summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj/COFF
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-readobj/COFF')
-rw-r--r--llvm/test/tools/llvm-readobj/COFF/hex-dump.test8
-rw-r--r--llvm/test/tools/llvm-readobj/COFF/relocations.test22
-rw-r--r--llvm/test/tools/llvm-readobj/COFF/sections-ext.test63
-rw-r--r--llvm/test/tools/llvm-readobj/COFF/sections.test42
-rw-r--r--llvm/test/tools/llvm-readobj/COFF/symbols.test40
5 files changed, 175 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/COFF/hex-dump.test b/llvm/test/tools/llvm-readobj/COFF/hex-dump.test
new file mode 100644
index 00000000000..d9dd993e29c
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/hex-dump.test
@@ -0,0 +1,8 @@
+## Test that --hex-dump/-x can be used to display the contents
+## of the indicated section as hexadecimal bytes.
+
+# RUN: llvm-readobj --hex-dump 1 %p/Inputs/trivial.obj.coff-x86-64 | FileCheck %s
+# RUN: llvm-readobj -x 1 %p/Inputs/trivial.obj.coff-x86-64 | FileCheck %s
+
+# CHECK: 0x00000000 4883ec28 488d0d00 000000e8 00000000 H..(H...........
+# CHECK: 0x00000010 e8000000 0031c048 83c428c3 .....1.H..(.
diff --git a/llvm/test/tools/llvm-readobj/COFF/relocations.test b/llvm/test/tools/llvm-readobj/COFF/relocations.test
new file mode 100644
index 00000000000..5644e734bb0
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/relocations.test
@@ -0,0 +1,22 @@
+## Check how we print relocations.
+
+# 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
+
+# COFF: Relocations [
+# COFF-NEXT: Section (1) .text {
+# COFF-NEXT: 0x4 IMAGE_REL_I386_DIR32 .data (4)
+# COFF-NEXT: 0x9 IMAGE_REL_I386_REL32 _puts (7)
+# COFF-NEXT: 0xE IMAGE_REL_I386_REL32 _SomeOtherFunction (8)
+# COFF-NEXT: }
+# COFF-NEXT: ]
+
+# BAD-COFF-RELOCS: Relocations [
+# BAD-COFF-RELOCS-NEXT: Section (1) sec {
+# BAD-COFF-RELOCS-NEXT: 0xDEADBEEF IMAGE_REL_I386_ABSOLUTE -
+# BAD-COFF-RELOCS-NEXT: }
+# BAD-COFF-RELOCS-NEXT: ]
diff --git a/llvm/test/tools/llvm-readobj/COFF/sections-ext.test b/llvm/test/tools/llvm-readobj/COFF/sections-ext.test
new file mode 100644
index 00000000000..b07347a2b47
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/sections-ext.test
@@ -0,0 +1,63 @@
+## This is a test case for --section-symbols, --section-relocations
+## and --section-data command line options and their aliases.
+
+# RUN: llvm-readobj -S --st --sr --sd %p/Inputs/trivial.obj.coff-i386 | FileCheck %s
+# RUN: llvm-readobj -S --section-symbols --section-relocations --section-data \
+# RUN: %p/Inputs/trivial.obj.coff-i386 | FileCheck %s
+
+# CHECK: Sections [
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Number: 1
+# CHECK-NEXT: Name: .text (2E 74 65 78 74 00 00 00)
+# CHECK-NEXT: VirtualSize: 0x0
+# CHECK-NEXT: VirtualAddress: 0x0
+# CHECK-NEXT: RawDataSize: 22
+# CHECK-NEXT: PointerToRawData: 0x64
+# CHECK-NEXT: PointerToRelocations: 0x7A
+# CHECK-NEXT: PointerToLineNumbers: 0x0
+# CHECK-NEXT: RelocationCount: 3
+# CHECK-NEXT: LineNumberCount: 0
+# CHECK-NEXT: Characteristics [ (0x60500020)
+# CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
+# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
+# CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
+# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Relocations [
+# CHECK-NEXT: 0x4 IMAGE_REL_I386_DIR32 .data
+# CHECK-NEXT: 0x9 IMAGE_REL_I386_REL32 _puts
+# CHECK-NEXT: 0xE IMAGE_REL_I386_REL32 _SomeOtherFunction
+# CHECK-NEXT: ]
+# CHECK-NEXT: Symbols [
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: .text
+# CHECK-NEXT: Value: 0
+# CHECK-NEXT: Section: .text (1)
+# CHECK-NEXT: BaseType: Null (0x0)
+# CHECK-NEXT: ComplexType: Null (0x0)
+# CHECK-NEXT: StorageClass: Static (0x3)
+# CHECK-NEXT: AuxSymbolCount: 1
+# CHECK-NEXT: AuxSectionDef {
+# CHECK-NEXT: Length: 22
+# CHECK-NEXT: RelocationCount: 3
+# CHECK-NEXT: LineNumberCount: 0
+# CHECK-NEXT: Checksum: 0x0
+# CHECK-NEXT: Number: 1
+# CHECK-NEXT: Selection: 0x0
+# CHECK-NEXT: }
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: _main
+# CHECK-NEXT: Value: 0
+# CHECK-NEXT: Section: .text (1)
+# CHECK-NEXT: BaseType: Null (0x0)
+# CHECK-NEXT: ComplexType: Function (0x2)
+# CHECK-NEXT: StorageClass: External (0x2)
+# CHECK-NEXT: AuxSymbolCount: 0
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 50C70424 00000000 E8000000 00E80000 |P..$............|
+# CHECK-NEXT: 0010: 000031C0 5AC3 |..1.Z.|
+# CHECK-NEXT: )
+# CHECK-NEXT: }
diff --git a/llvm/test/tools/llvm-readobj/COFF/sections.test b/llvm/test/tools/llvm-readobj/COFF/sections.test
new file mode 100644
index 00000000000..826cc60c8be
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/sections.test
@@ -0,0 +1,42 @@
+## Check how we print sections.
+
+# RUN: llvm-readobj --sections %p/Inputs/trivial.obj.coff-i386 | FileCheck %s
+
+# CHECK: Sections [
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Number: 1
+# CHECK-NEXT: Name: .text (2E 74 65 78 74 00 00 00)
+# CHECK-NEXT: VirtualSize: 0x0
+# CHECK-NEXT: VirtualAddress: 0x0
+# CHECK-NEXT: RawDataSize: 22
+# CHECK-NEXT: PointerToRawData: 0x64
+# CHECK-NEXT: PointerToRelocations: 0x7A
+# CHECK-NEXT: PointerToLineNumbers: 0x0
+# CHECK-NEXT: RelocationCount: 3
+# CHECK-NEXT: LineNumberCount: 0
+# CHECK-NEXT: Characteristics [ (0x60500020)
+# CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
+# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
+# CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
+# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+# CHECK-NEXT: ]
+# CHECK-NEXT: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Number: 2
+# CHECK-NEXT: Name: .data (2E 64 61 74 61 00 00 00)
+# CHECK-NEXT: VirtualSize: 0x0
+# CHECK-NEXT: VirtualAddress: 0x0
+# CHECK-NEXT: RawDataSize: 13
+# CHECK-NEXT: PointerToRawData: 0x98
+# CHECK-NEXT: PointerToRelocations: 0x0
+# CHECK-NEXT: PointerToLineNumbers: 0x0
+# CHECK-NEXT: RelocationCount: 0
+# CHECK-NEXT: LineNumberCount: 0
+# CHECK-NEXT: Characteristics [ (0xC0300040)
+# CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES (0x300000)
+# CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+# CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+# CHECK-NEXT: ]
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
diff --git a/llvm/test/tools/llvm-readobj/COFF/symbols.test b/llvm/test/tools/llvm-readobj/COFF/symbols.test
new file mode 100644
index 00000000000..2e808f33613
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/COFF/symbols.test
@@ -0,0 +1,40 @@
+## Test how we print symbols.
+
+# RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.coff-i386 | FileCheck %s
+
+# CHECK: Symbols [
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: @comp.id
+# CHECK-NEXT: Value: 14766605
+# CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
+# CHECK-NEXT: BaseType: Null (0x0)
+# CHECK-NEXT: ComplexType: Null (0x0)
+# CHECK-NEXT: StorageClass: Static (0x3)
+# CHECK-NEXT: AuxSymbolCount: 0
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: @feat.00
+# CHECK-NEXT: Value: 2147484049
+# CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
+# CHECK-NEXT: BaseType: Null (0x0)
+# CHECK-NEXT: ComplexType: Null (0x0)
+# CHECK-NEXT: StorageClass: Static (0x3)
+# CHECK-NEXT: AuxSymbolCount: 0
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: .text
+# CHECK-NEXT: Value: 0
+# CHECK-NEXT: Section: .text (1)
+# CHECK-NEXT: BaseType: Null (0x0)
+# CHECK-NEXT: ComplexType: Null (0x0)
+# CHECK-NEXT: StorageClass: Static (0x3)
+# CHECK-NEXT: AuxSymbolCount: 1
+# CHECK-NEXT: AuxSectionDef {
+# CHECK-NEXT: Length: 22
+# CHECK-NEXT: RelocationCount: 3
+# CHECK-NEXT: LineNumberCount: 0
+# CHECK-NEXT: Checksum: 0x0
+# CHECK-NEXT: Number: 1
+# CHECK-NEXT: Selection: 0x0
+# CHECK-NEXT: }
+# CHECK-NEXT: }
OpenPOWER on IntegriCloud