aboutsummaryrefslogtreecommitdiffstats
path: root/test/tools/llvm-readobj
diff options
context:
space:
mode:
authorStephen Hines <srhines@google.com>2014-12-04 19:51:48 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-04 19:51:48 +0000
commita21bbdfad461e957fa42ac9d6860ddc9de2da3e9 (patch)
tree8d32ff2094b47e15a8def30d62fd7dee6e009de3 /test/tools/llvm-readobj
parent6b8c6a5088c221af2b25065b8b6b8b0fec8a116f (diff)
parent876d6995443e99d13696f3941c3a789a4daa7c7a (diff)
downloadexternal_llvm-a21bbdfad461e957fa42ac9d6860ddc9de2da3e9.zip
external_llvm-a21bbdfad461e957fa42ac9d6860ddc9de2da3e9.tar.gz
external_llvm-a21bbdfad461e957fa42ac9d6860ddc9de2da3e9.tar.bz2
am 876d6995: Merge "Update aosp/master LLVM for rebase to r222494."
* commit '876d6995443e99d13696f3941c3a789a4daa7c7a': Update aosp/master LLVM for rebase to r222494.
Diffstat (limited to 'test/tools/llvm-readobj')
-rw-r--r--test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386bin0 -> 97 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386bin0 -> 2560 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64bin0 -> 340 bytes
-rwxr-xr-xtest/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386bin0 -> 2005 bytes
-rwxr-xr-xtest/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386bin0 -> 8501 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64bin0 -> 244 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/file-aux-record.yaml4
-rw-r--r--test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml4
-rw-r--r--test/tools/llvm-readobj/Inputs/imports.exe.coff-i386bin0 -> 3072 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64bin0 -> 4096 bytes
-rwxr-xr-x[-rw-r--r--]test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368bin1631 -> 1631 bytes
-rwxr-xr-x[-rw-r--r--]test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64bin1799 -> 1799 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368bin0 -> 1631 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64bin0 -> 1795 bytes
-rwxr-xr-x[-rw-r--r--]test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368bin2155 -> 2155 bytes
-rwxr-xr-x[-rw-r--r--]test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64bin2475 -> 2475 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368bin0 -> 2155 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64bin0 -> 2471 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386bin305 -> 305 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64bin424 -> 424 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64bin2832 -> 3144 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/relocs.py15
-rw-r--r--test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipselbin0 -> 629 bytes
-rw-r--r--test/tools/llvm-readobj/bigobj.test139
-rw-r--r--test/tools/llvm-readobj/codeview-linetables.test150
-rw-r--r--test/tools/llvm-readobj/coff-basereloc.test24
-rw-r--r--test/tools/llvm-readobj/coff-directives.test2
-rw-r--r--test/tools/llvm-readobj/coff-file-sections-reading.test2
-rw-r--r--test/tools/llvm-readobj/cxx-cli-aux.test6
-rw-r--r--test/tools/llvm-readobj/file-headers.test122
-rw-r--r--test/tools/llvm-readobj/imports.test88
-rw-r--r--test/tools/llvm-readobj/peplus.test2
-rw-r--r--test/tools/llvm-readobj/reloc-types.test12
-rw-r--r--test/tools/llvm-readobj/relocations.test8
-rw-r--r--test/tools/llvm-readobj/sections-ext.test1
-rw-r--r--test/tools/llvm-readobj/sections.test33
-rw-r--r--test/tools/llvm-readobj/symbols.test5
37 files changed, 592 insertions, 25 deletions
diff --git a/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386
new file mode 100644
index 0000000..06ec471
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/bad-relocs.obj.coff-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386
new file mode 100644
index 0000000..0aeed44
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/basereloc.obj.coff-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 b/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
new file mode 100644
index 0000000..fdfda5e
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386 b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386
new file mode 100755
index 0000000..4a72304
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2012-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386 b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386
new file mode 100755
index 0000000..4adaf2e
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/comdat-function-linetables.obj.coff-2013-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64 b/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64
new file mode 100644
index 0000000..4c156dc
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/directives.obj.coff-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/file-aux-record.yaml b/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
index d19afaf..89d6761 100644
--- a/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
+++ b/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
@@ -6,7 +6,7 @@ symbols:
- !Symbol
Name: .file
Value: 0
- SectionNumber: 65534
+ SectionNumber: -2
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_FILE
@@ -14,7 +14,7 @@ symbols:
- !Symbol
Name: '@comp.id'
Value: 13485607
- SectionNumber: 65535
+ SectionNumber: -1
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
diff --git a/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml b/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
index 8d8f684..d5b1eec 100644
--- a/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
+++ b/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
@@ -6,7 +6,7 @@ symbols:
- !Symbol
Name: .file
Value: 0
- SectionNumber: 65534
+ SectionNumber: -2
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_FILE
@@ -14,7 +14,7 @@ symbols:
- !Symbol
Name: '@comp.id'
Value: 13485607
- SectionNumber: 65535
+ SectionNumber: -1
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
diff --git a/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386 b/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386
new file mode 100644
index 0000000..72077ad
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/imports.exe.coff-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64 b/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64
new file mode 100644
index 0000000..5ee198e
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/imports.exe.coff-x86-64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368
index 1672d3a..213331f 100644..100755
--- a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368
+++ b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-i368
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64
index 30bfe79..a35cc11 100644..100755
--- a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64
+++ b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2012-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368
new file mode 100644
index 0000000..8a901f6
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-i368
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64 b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64
new file mode 100644
index 0000000..f1c2e1f
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/multifile-linetables.obj.coff-2013-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368
index a0196ff..41479ed 100644..100755
--- a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368
+++ b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-i368
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64
index 14f65ab..8d30f32 100644..100755
--- a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64
+++ b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2012-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368
new file mode 100644
index 0000000..4269b21
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-i368
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64 b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64
new file mode 100644
index 0000000..65a1af0
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/multifunction-linetables.obj.coff-2013-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386 b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386
index 15e43ef..9c24ac8 100644
--- a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386
+++ b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-i386
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64 b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64
index cd63173..356437e 100644
--- a/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64
+++ b/test/tools/llvm-readobj/Inputs/relocs.obj.coff-x86_64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64
index d39e60c..a1034cb 100644
--- a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64
+++ b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/relocs.py b/test/tools/llvm-readobj/Inputs/relocs.py
index af9459d..ffddf3d 100644
--- a/test/tools/llvm-readobj/Inputs/relocs.py
+++ b/test/tools/llvm-readobj/Inputs/relocs.py
@@ -327,6 +327,10 @@ def patchCoff(path, relocs):
machine_type = f.uint16()
section_count = f.uint16()
+
+ # Zero out timestamp to prevent churn when regenerating COFF files.
+ f.writeUInt32(0)
+
f.seek(20)
sections = [CoffSection(f) for idx in range(section_count)]
@@ -617,6 +621,8 @@ class Relocs_Elf_AArch64(Enum):
R_AARCH64_LDST32_ABS_LO12_NC = 0x11d
R_AARCH64_LDST64_ABS_LO12_NC = 0x11e
R_AARCH64_LDST128_ABS_LO12_NC = 0x12b
+ R_AARCH64_GOTREL64 = 0x133
+ R_AARCH64_GOTREL32 = 0x134
R_AARCH64_ADR_GOT_PAGE = 0x137
R_AARCH64_LD64_GOT_LO12_NC = 0x138
R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b
@@ -660,6 +666,15 @@ class Relocs_Elf_AArch64(Enum):
R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233
R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234
R_AARCH64_TLSDESC_CALL = 0x239
+ R_AARCH64_COPY = 0x400
+ R_AARCH64_GLOB_DAT = 0x401
+ R_AARCH64_JUMP_SLOT = 0x402
+ R_AARCH64_RELATIVE = 0x403
+ R_AARCH64_TLS_DTPREL64 = 0x404
+ R_AARCH64_TLS_DTPMOD64 = 0x405
+ R_AARCH64_TLS_TPREL64 = 0x406
+ R_AARCH64_TLSDESC = 0x407
+ R_AARCH64_IRELATIVE = 0x408
class Relocs_Elf_ARM(Enum):
R_ARM_NONE = 0x00
diff --git a/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel b/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel
new file mode 100644
index 0000000..c523908
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/trivial.obj.elf-mipsel
Binary files differ
diff --git a/test/tools/llvm-readobj/bigobj.test b/test/tools/llvm-readobj/bigobj.test
new file mode 100644
index 0000000..1097214
--- /dev/null
+++ b/test/tools/llvm-readobj/bigobj.test
@@ -0,0 +1,139 @@
+RUN: llvm-readobj --file-headers --sections --symbols --relocations %p/Inputs/bigobj.coff-x86-64 | FileCheck %s
+
+CHECK: File: {{(.*[/\\])?}}bigobj.coff-x86-64
+CHECK-NEXT: Format: COFF-x86-64
+CHECK-NEXT: Arch: x86_64
+CHECK-NEXT: AddressSize: 64bit
+CHECK-NEXT: ImageFileHeader {
+CHECK-NEXT: Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664)
+CHECK-NEXT: SectionCount: 3
+CHECK-NEXT: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
+CHECK-NEXT: PointerToSymbolTable: 0xB0
+CHECK-NEXT: SymbolCount: 8
+CHECK-NEXT: OptionalHeaderSize: 0
+CHECK-NEXT: Characteristics [ (0x0)
+CHECK-NEXT: ]
+CHECK-NEXT: }
+CHECK-NEXT: Sections [
+CHECK-NEXT: Section {
+CHECK-NEXT: Number: 1
+CHECK-NEXT: Name: .text (2E 74 65 78 74 00 00 00)
+CHECK-NEXT: VirtualSize: 0x0
+CHECK-NEXT: VirtualAddress: 0x0
+CHECK-NEXT: RawDataSize: 0
+CHECK-NEXT: PointerToRawData: 0x0
+CHECK-NEXT: PointerToRelocations: 0x0
+CHECK-NEXT: PointerToLineNumbers: 0x0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Characteristics [ (0x60500020)
+CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
+CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
+CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
+CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+CHECK-NEXT: ]
+CHECK-NEXT: }
+CHECK-NEXT: Section {
+CHECK-NEXT: Number: 2
+CHECK-NEXT: Name: .data (2E 64 61 74 61 00 00 00)
+CHECK-NEXT: VirtualSize: 0x0
+CHECK-NEXT: VirtualAddress: 0x0
+CHECK-NEXT: RawDataSize: 0
+CHECK-NEXT: PointerToRawData: 0x0
+CHECK-NEXT: PointerToRelocations: 0x0
+CHECK-NEXT: PointerToLineNumbers: 0x0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Characteristics [ (0xC0500040)
+CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
+CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+CHECK-NEXT: ]
+CHECK-NEXT: }
+CHECK-NEXT: Section {
+CHECK-NEXT: Number: 3
+CHECK-NEXT: Name: .bss (2E 62 73 73 00 00 00 00)
+CHECK-NEXT: VirtualSize: 0x0
+CHECK-NEXT: VirtualAddress: 0x0
+CHECK-NEXT: RawDataSize: 0
+CHECK-NEXT: PointerToRawData: 0x0
+CHECK-NEXT: PointerToRelocations: 0x0
+CHECK-NEXT: PointerToLineNumbers: 0x0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Characteristics [ (0xC0500080)
+CHECK-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
+CHECK-NEXT: IMAGE_SCN_CNT_UNINITIALIZED_DATA (0x80)
+CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+CHECK-NEXT: ]
+CHECK-NEXT: }
+CHECK-NEXT: ]
+CHECK-NEXT: Relocations [
+CHECK-NEXT: ]
+CHECK-NEXT: Symbols [
+CHECK-NEXT: Symbol {
+CHECK-NEXT: Name: .file
+CHECK-NEXT: Value: 0
+CHECK-NEXT: Section: IMAGE_SYM_DEBUG (-2)
+CHECK-NEXT: BaseType: Null (0x0)
+CHECK-NEXT: ComplexType: Null (0x0)
+CHECK-NEXT: StorageClass: File (0x67)
+CHECK-NEXT: AuxSymbolCount: 1
+CHECK-NEXT: AuxFileRecord {
+CHECK-NEXT: FileName: fake
+CHECK-NEXT: }
+CHECK-NEXT: }
+CHECK-NEXT: Symbol {
+CHECK-NEXT: Name: .text
+CHECK-NEXT: Value: 0
+CHECK-NEXT: Section: .text (1)
+CHECK-NEXT: BaseType: Null (0x0)
+CHECK-NEXT: ComplexType: Null (0x0)
+CHECK-NEXT: StorageClass: Static (0x3)
+CHECK-NEXT: AuxSymbolCount: 1
+CHECK-NEXT: AuxSectionDef {
+CHECK-NEXT: Length: 0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Checksum: 0x0
+CHECK-NEXT: Number: 0
+CHECK-NEXT: Selection: 0x0
+CHECK-NEXT: }
+CHECK-NEXT: }
+CHECK-NEXT: Symbol {
+CHECK-NEXT: Name: .data
+CHECK-NEXT: Value: 0
+CHECK-NEXT: Section: .data (2)
+CHECK-NEXT: BaseType: Null (0x0)
+CHECK-NEXT: ComplexType: Null (0x0)
+CHECK-NEXT: StorageClass: Static (0x3)
+CHECK-NEXT: AuxSymbolCount: 1
+CHECK-NEXT: AuxSectionDef {
+CHECK-NEXT: Length: 0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Checksum: 0x0
+CHECK-NEXT: Number: 0
+CHECK-NEXT: Selection: 0x0
+CHECK-NEXT: }
+CHECK-NEXT: }
+CHECK-NEXT: Symbol {
+CHECK-NEXT: Name: .bss
+CHECK-NEXT: Value: 0
+CHECK-NEXT: Section: .bss (3)
+CHECK-NEXT: BaseType: Null (0x0)
+CHECK-NEXT: ComplexType: Null (0x0)
+CHECK-NEXT: StorageClass: Static (0x3)
+CHECK-NEXT: AuxSymbolCount: 1
+CHECK-NEXT: AuxSectionDef {
+CHECK-NEXT: Length: 0
+CHECK-NEXT: RelocationCount: 0
+CHECK-NEXT: LineNumberCount: 0
+CHECK-NEXT: Checksum: 0x0
+CHECK-NEXT: Number: 0
+CHECK-NEXT: Selection: 0x0
+CHECK-NEXT: }
+CHECK-NEXT: }
+CHECK-NEXT: ]
diff --git a/test/tools/llvm-readobj/codeview-linetables.test b/test/tools/llvm-readobj/codeview-linetables.test
index 4854d7a..e5e344b 100644
--- a/test/tools/llvm-readobj/codeview-linetables.test
+++ b/test/tools/llvm-readobj/codeview-linetables.test
@@ -1,11 +1,31 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; The following two object files were generated using the following command:
+; D:\> cl /Z7 /c source.c
+; with the following contents of D:\source.c:
+; void z(void);
+;
+; void x(void) {
+; z();
+; }
+;
+; void y(void) {
+; z();
+; }
+;
+; void f(void) {
+; x();
+; y();
+; z();
+; }
+; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \
RUN: | FileCheck %s -check-prefix MFUN32
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \
+RUN: | FileCheck %s -check-prefix MFUN32
RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \
RUN: | FileCheck %s -check-prefix MFUN64
-RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-i368 \
-RUN: | FileCheck %s -check-prefix MFILE32
-RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \
-RUN: | FileCheck %s -check-prefix MFILE64
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \
+RUN: | FileCheck %s -check-prefix MFUN64
MFUN32: CodeViewLineTables [
MFUN32-NEXT: Magic: 0x4
@@ -20,6 +40,12 @@ MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
+MFUN32: ProcStart {
+MFUN32-NEXT: DisplayName: x
+MFUN32-NEXT: Section: _x
+MFUN32-NEXT: CodeSize: 0xA
+MFUN32-NEXT: }
+MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
@@ -33,6 +59,12 @@ MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
+MFUN32: ProcStart {
+MFUN32-NEXT: DisplayName: y
+MFUN32-NEXT: Section: _y
+MFUN32-NEXT: CodeSize: 0xA
+MFUN32-NEXT: }
+MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
@@ -46,6 +78,12 @@ MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF1
MFUN32-NEXT: PayloadSize: 0x4B
+MFUN32: ProcStart {
+MFUN32-NEXT: DisplayName: f
+MFUN32-NEXT: Section: _f
+MFUN32-NEXT: CodeSize: 0x14
+MFUN32-NEXT: }
+MFUN32-NEXT: ProcEnd
MFUN32: ]
MFUN32-NEXT: Subsection [
MFUN32-NEXT: Type: 0xF2
@@ -107,6 +145,12 @@ MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
+MFUN64: ProcStart {
+MFUN64-NEXT: DisplayName: x
+MFUN64-NEXT: Section: x
+MFUN64-NEXT: CodeSize: 0xE
+MFUN64-NEXT: }
+MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
@@ -116,6 +160,12 @@ MFUN64-NEXT: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
+MFUN64: ProcStart {
+MFUN64-NEXT: DisplayName: y
+MFUN64-NEXT: Section: y
+MFUN64-NEXT: CodeSize: 0xE
+MFUN64-NEXT: }
+MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
@@ -125,6 +175,12 @@ MFUN64-NEXT: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF1
MFUN64-NEXT: PayloadSize: 0x4B
+MFUN64: ProcStart {
+MFUN64-NEXT: DisplayName: f
+MFUN64-NEXT: Section: f
+MFUN64-NEXT: CodeSize: 0x18
+MFUN64-NEXT: }
+MFUN64-NEXT: ProcEnd
MFUN64: ]
MFUN64-NEXT: Subsection [
MFUN64-NEXT: Type: 0xF2
@@ -177,6 +233,30 @@ MFUN64-NEXT: ]
MFUN64-NEXT: ]
MFUN64-NEXT: ]
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; The following two object files were generated using the following command:
+; D:\> cl /Z7 /c input.c
+; with the following contents of D:\input.c:
+; void g(void);
+;
+; void f(void) {
+; #line 1 "one.c"
+; g();
+; #line 2 "two.c"
+; g();
+; #line 7 "one.c"
+; g();
+; }
+; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-i368 \
+RUN: | FileCheck %s -check-prefix MFILE32
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-i368 \
+RUN: | FileCheck %s -check-prefix MFILE32
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \
+RUN: | FileCheck %s -check-prefix MFILE64
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \
+RUN: | FileCheck %s -check-prefix MFILE64
+
MFILE32: CodeViewLineTables [
MFILE32-NEXT: Magic: 0x4
MFILE32-NEXT: Subsection [
@@ -190,6 +270,12 @@ MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF1
MFILE32-NEXT: PayloadSize: 0x4B
+MFILE32: ProcStart {
+MFILE32-NEXT: DisplayName: f
+MFILE32-NEXT: Section: _f
+MFILE32-NEXT: CodeSize: 0x14
+MFILE32-NEXT: }
+MFILE32-NEXT: ProcEnd
MFILE32: ]
MFILE32-NEXT: Subsection [
MFILE32-NEXT: Type: 0xF2
@@ -240,6 +326,12 @@ MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF1
MFILE64-NEXT: PayloadSize: 0x4B
+MFILE64: ProcStart {
+MFILE64-NEXT: DisplayName: f
+MFILE64-NEXT: Section: f
+MFILE64-NEXT: CodeSize: 0x18
+MFILE64-NEXT: }
+MFILE64-NEXT: ProcEnd
MFILE64: ]
MFILE64-NEXT: Subsection [
MFILE64-NEXT: Type: 0xF2
@@ -280,3 +372,53 @@ MFILE64-NEXT: +0x13: 8
MFILE64-NEXT: ]
MFILE64-NEXT: ]
MFILE64-NEXT: ]
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; The following object files were generated using the following command:
+; C:\src> cl /Z7 /Gy /c test.cc
+; with the following contents of C:\src\test.cc:
+; int f()
+; {
+; return 0;
+; }
+;
+; int g()
+; {
+; return 0;
+; }
+; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively.
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \
+RUN: | FileCheck %s -check-prefix MCOMDAT
+RUN: llvm-readobj -s -codeview-linetables %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \
+RUN: | FileCheck %s -check-prefix MCOMDAT
+
+MCOMDAT: ProcStart {
+MCOMDAT-NEXT: DisplayName: f
+MCOMDAT-NEXT: Section: ?f@@YAHXZ
+MCOMDAT-NEXT: CodeSize: 0x7
+MCOMDAT-NEXT: }
+MCOMDAT: FunctionLineTable [
+MCOMDAT-NEXT: FunctionName: ?f@@YAHXZ
+MCOMDAT-NEXT: CodeSize: 0x7
+MCOMDAT-NEXT: FilenameSegment [
+MCOMDAT-NEXT: Filename: c:\src\test.cc
+MCOMDAT-NEXT: +0x0: 2
+MCOMDAT-NEXT: +0x3: 3
+MCOMDAT-NEXT: +0x5: 4
+MCOMDAT-NEXT: ]
+MCOMDAT-NEXT: ]
+MCOMDAT: ProcStart {
+MCOMDAT-NEXT: DisplayName: g
+MCOMDAT-NEXT: Section: ?g@@YAHXZ
+MCOMDAT-NEXT: CodeSize: 0x7
+MCOMDAT-NEXT: }
+MCOMDAT: FunctionLineTable [
+MCOMDAT-NEXT: FunctionName: ?g@@YAHXZ
+MCOMDAT-NEXT: CodeSize: 0x7
+MCOMDAT-NEXT: FilenameSegment [
+MCOMDAT-NEXT: Filename: c:\src\test.cc
+MCOMDAT-NEXT: +0x0: 7
+MCOMDAT-NEXT: +0x3: 8
+MCOMDAT-NEXT: +0x5: 9
+MCOMDAT-NEXT: ]
+MCOMDAT-NEXT: ]
diff --git a/test/tools/llvm-readobj/coff-basereloc.test b/test/tools/llvm-readobj/coff-basereloc.test
new file mode 100644
index 0000000..cd6687c
--- /dev/null
+++ b/test/tools/llvm-readobj/coff-basereloc.test
@@ -0,0 +1,24 @@
+RUN: llvm-readobj -coff-basereloc %p/Inputs/basereloc.obj.coff-i386 | FileCheck %s
+
+CHECK: Format: COFF-i386
+CHECK-NEXT: Arch: i386
+CHECK-NEXT: AddressSize: 32bit
+CHECK-NEXT: BaseReloc [
+CHECK-NEXT: Entry {
+CHECK-NEXT: Type: HIGHLOW
+CHECK-NEXT: Address: 0x1004
+CHECK-NEXT: }
+CHECK-NEXT: Entry {
+CHECK-NEXT: Type: HIGHLOW
+CHECK-NEXT: Address: 0x100A
+CHECK-NEXT: }
+CHECK-NEXT: Entry {
+CHECK-NEXT: Type: HIGHLOW
+CHECK-NEXT: Address: 0x1010
+CHECK-NEXT: }
+CHECK-NEXT: Entry {
+CHECK-NEXT: Type: ABSOLUTE
+CHECK-NEXT: Address: 0x1000
+CHECK-NEXT: }
+CHECK-NEXT: ]
+
diff --git a/test/tools/llvm-readobj/coff-directives.test b/test/tools/llvm-readobj/coff-directives.test
new file mode 100644
index 0000000..83efffc
--- /dev/null
+++ b/test/tools/llvm-readobj/coff-directives.test
@@ -0,0 +1,2 @@
+RUN: llvm-readobj -coff-directives %p/Inputs/directives.obj.coff-x86_64 | FileCheck %s
+CHECK: Directive(s): /DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES"
diff --git a/test/tools/llvm-readobj/coff-file-sections-reading.test b/test/tools/llvm-readobj/coff-file-sections-reading.test
index 5c44c16..c2f02d4 100644
--- a/test/tools/llvm-readobj/coff-file-sections-reading.test
+++ b/test/tools/llvm-readobj/coff-file-sections-reading.test
@@ -4,7 +4,7 @@ CHECK: Symbols [
CHECK: Symbol {
CHECK: Name: .file
CHECK: Value: 0
-CHECK: Section: (65534)
+CHECK: Section: IMAGE_SYM_DEBUG (-2)
CHECK: BaseType: Null (0x0)
CHECK: ComplexType: Null (0x0)
CHECK: StorageClass: File (0x67)
diff --git a/test/tools/llvm-readobj/cxx-cli-aux.test b/test/tools/llvm-readobj/cxx-cli-aux.test
index 90e73c0..0b68779 100644
--- a/test/tools/llvm-readobj/cxx-cli-aux.test
+++ b/test/tools/llvm-readobj/cxx-cli-aux.test
@@ -9,7 +9,7 @@ CHECK: Symbols [
CHECK: Symbol {
CHECK: Name: ?PerAppDomain@@$$Q3HA
CHECK-NEXT: Value: 4
-CHECK-NEXT: Section: (65535)
+CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
CHECK-NEXT: BaseType: Null (0x0)
CHECK-NEXT: ComplexType: Null (0x0)
CHECK-NEXT: StorageClass: External (0x2)
@@ -21,14 +21,13 @@ CHECK-NEXT: LineNumberCount: 0
CHECK-NEXT: Checksum: 0x0
CHECK-NEXT: Number: 0
CHECK-NEXT: Selection: NoDuplicates (0x1)
-CHECK-NEXT: Unused: (00 00 00)
CHECK-NEXT: }
CHECK-NEXT: }
CHECK: Symbol {
CHECK: Name: 04000001
CHECK-NEXT: Value: 4
-CHECK-NEXT: Section: (65535)
+CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
CHECK-NEXT: BaseType: Null (0x0)
CHECK-NEXT: ComplexType: Null (0x0)
CHECK-NEXT: StorageClass: CLRToken (0x6B)
@@ -37,6 +36,5 @@ CHECK-NEXT: AuxCLRToken {
CHECK-NEXT: AuxType: 1
CHECK-NEXT: Reserved: 0
CHECK-NEXT: SymbolTableIndex: ?PerAppDomain@@$$Q3HA (19)
-CHECK-NEXT: Unused: (00 00 00 00 00 00 00 00 00 00 00 00)
CHECK-NEXT: }
CHECK-NEXT: }
diff --git a/test/tools/llvm-readobj/file-headers.test b/test/tools/llvm-readobj/file-headers.test
index 39a8c0e..fd030ef 100644
--- a/test/tools/llvm-readobj/file-headers.test
+++ b/test/tools/llvm-readobj/file-headers.test
@@ -10,6 +10,16 @@ RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-i386 \
RUN: | FileCheck %s -check-prefix ELF32
RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-x86-64 \
RUN: | FileCheck %s -check-prefix ELF64
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-i386 \
+RUN: | FileCheck %s -check-prefix MACHO32
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-x86-64 \
+RUN: | FileCheck %s -check-prefix MACHO64
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-ppc \
+RUN: | FileCheck %s -check-prefix MACHO-PPC
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-ppc64 \
+RUN: | FileCheck %s -check-prefix MACHO-PPC64
+RUN: llvm-readobj -h %p/Inputs/trivial.obj.macho-arm \
+RUN: | FileCheck %s -check-prefix MACHO-ARM
RUN: llvm-readobj -h %p/Inputs/magic.coff-unknown \
RUN: | FileCheck %s -check-prefix COFF-UNKNOWN
RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \
@@ -122,6 +132,88 @@ ELF64-NEXT: SectionHeaderCount: 10
ELF64-NEXT: StringTableSectionIndex: 7
ELF64-NEXT: }
+MACHO32: File: {{(.*[/\\])?}}trivial.obj.macho-i386
+MACHO32-NEXT: Format: Mach-O 32-bit i386
+MACHO32-NEXT: Arch: i386
+MACHO32-NEXT: AddressSize: 32bit
+MACHO32-NEXT: MachHeader {
+MACHO32-NEXT: Magic: Magic (0xFEEDFACE)
+MACHO32-NEXT: CpuType: X86 (0x7)
+MACHO32-NEXT: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
+MACHO32-NEXT: FileType: Relocatable (0x1)
+MACHO32-NEXT: NumOfLoadCommands: 3
+MACHO32-NEXT: SizeOfLoadCommands: 296
+MACHO32-NEXT: Flags [ (0x2000)
+MACHO32-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
+MACHO32-NEXT: ]
+MACHO32-NEXT: }
+
+MACHO64: File: {{(.*[/\\])?}}trivial.obj.macho-x86-64
+MACHO64-NEXT: Format: Mach-O 64-bit x86-64
+MACHO64-NEXT: Arch: x86_64
+MACHO64-NEXT: AddressSize: 64bit
+MACHO64-NEXT: MachHeader {
+MACHO64-NEXT: Magic: Magic64 (0xFEEDFACF)
+MACHO64-NEXT: CpuType: X86-64 (0x1000007)
+MACHO64-NEXT: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3)
+MACHO64-NEXT: FileType: Relocatable (0x1)
+MACHO64-NEXT: NumOfLoadCommands: 3
+MACHO64-NEXT: SizeOfLoadCommands: 336
+MACHO64-NEXT: Flags [ (0x2000)
+MACHO64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
+MACHO64-NEXT: ]
+MACHO64-NEXT: Reserved: 0x0
+MACHO64-NEXT: }
+
+MACHO-PPC: File: {{(.*[/\\])?}}trivial.obj.macho-ppc
+MACHO-PPC-NEXT: Format: Mach-O 32-bit ppc
+MACHO-PPC-NEXT: Arch: powerpc
+MACHO-PPC-NEXT: AddressSize: 32bit
+MACHO-PPC-NEXT: MachHeader {
+MACHO-PPC-NEXT: Magic: Magic (0xFEEDFACE)
+MACHO-PPC-NEXT: CpuType: PowerPC (0x12)
+MACHO-PPC-NEXT: CpuSubType: CPU_SUBTYPE_POWERPC_ALL (0x0)
+MACHO-PPC-NEXT: FileType: Relocatable (0x1)
+MACHO-PPC-NEXT: NumOfLoadCommands: 3
+MACHO-PPC-NEXT: SizeOfLoadCommands: 500
+MACHO-PPC-NEXT: Flags [ (0x2000)
+MACHO-PPC-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
+MACHO-PPC-NEXT: ]
+MACHO-PPC-NEXT: }
+
+MACHO-PPC64: File: {{(.*[/\\])?}}trivial.obj.macho-ppc64
+MACHO-PPC64-NEXT: Format: Mach-O 64-bit ppc64
+MACHO-PPC64-NEXT: Arch: powerpc64
+MACHO-PPC64-NEXT: AddressSize: 64bit
+MACHO-PPC64-NEXT: MachHeader {
+MACHO-PPC64-NEXT: Magic: Magic64 (0xFEEDFACF)
+MACHO-PPC64-NEXT: CpuType: PowerPC64 (0x1000012)
+MACHO-PPC64-NEXT: CpuSubtype: 0x0
+MACHO-PPC64-NEXT: FileType: Relocatable (0x1)
+MACHO-PPC64-NEXT: NumOfLoadCommands: 3
+MACHO-PPC64-NEXT: SizeOfLoadCommands: 576
+MACHO-PPC64-NEXT: Flags [ (0x2000)
+MACHO-PPC64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
+MACHO-PPC64-NEXT: ]
+MACHO-PPC64-NEXT: Reserved: 0x0
+MACHO-PPC64-NEXT: }
+
+MACHO-ARM: File: {{(.*[/\\])?}}trivial.obj.macho-arm
+MACHO-ARM-NEXT: Format: Mach-O arm
+MACHO-ARM-NEXT: Arch: arm
+MACHO-ARM-NEXT: AddressSize: 32bit
+MACHO-ARM-NEXT: MachHeader {
+MACHO-ARM-NEXT: Magic: Magic (0xFEEDFACE)
+MACHO-ARM-NEXT: CpuType: Arm (0xC)
+MACHO-ARM-NEXT: CpuSubType: CPU_SUBTYPE_ARM_V7 (0x9)
+MACHO-ARM-NEXT: FileType: Relocatable (0x1)
+MACHO-ARM-NEXT: NumOfLoadCommands: 3
+MACHO-ARM-NEXT: SizeOfLoadCommands: 636
+MACHO-ARM-NEXT: Flags [ (0x2000)
+MACHO-ARM-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
+MACHO-ARM-NEXT: ]
+MACHO-ARM-NEXT: }
+
PE32: File: {{(.*[/\\])?}}trivial.exe.coff-i386
PE32-NEXT: Format: COFF-i386
PE32-NEXT: Arch: i386
@@ -159,7 +251,7 @@ PE32-NEXT: MinorSubsystemVersion: 0
PE32-NEXT: SizeOfImage: 16384
PE32-NEXT: SizeOfHeaders: 1024
PE32-NEXT: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
-PE32-NEXT: Subsystem [ (0x8140)
+PE32-NEXT: Characteristics [ (0x8140)
PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
PE32-NEXT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
@@ -204,6 +296,25 @@ PE32-NEXT: ReservedRVA: 0x0
PE32-NEXT: ReservedSize: 0x0
PE32-NEXT: }
PE32-NEXT: }
+PE32-NEXT: DOSHeader {
+PE32-NEXT: Magic: MZ
+PE32-NEXT: UsedBytesInTheLastPage: 144
+PE32-NEXT: FileSizeInPages: 3
+PE32-NEXT: NumberOfRelocationItems: 0
+PE32-NEXT: HeaderSizeInParagraphs: 4
+PE32-NEXT: MinimumExtraParagraphs: 0
+PE32-NEXT: MaximumExtraParagraphs: 65535
+PE32-NEXT: InitialRelativeSS: 0
+PE32-NEXT: InitialSP: 184
+PE32-NEXT: Checksum: 0
+PE32-NEXT: InitialIP: 0
+PE32-NEXT: InitialRelativeCS: 0
+PE32-NEXT: AddressOfRelocationTable: 64
+PE32-NEXT: OverlayNumber: 0
+PE32-NEXT: OEMid: 0
+PE32-NEXT: OEMinfo: 0
+PE32-NEXT: AddressOfNewExeHeader: 176
+PE32-NEXT: }
COFF-UNKNOWN: Format: COFF-<unknown arch>
COFF-UNKNOWN-NEXT: Arch: unknown
@@ -224,12 +335,11 @@ COFF-IMPORTLIB-NEXT: Arch: unknown
COFF-IMPORTLIB-NEXT: AddressSize: 32bit
COFF-IMPORTLIB-NEXT: ImageFileHeader {
COFF-IMPORTLIB-NEXT: Machine: IMAGE_FILE_MACHINE_UNKNOWN (0x0)
-COFF-IMPORTLIB-NEXT: SectionCount: 65535
+COFF-IMPORTLIB-NEXT: SectionCount: 0
COFF-IMPORTLIB-NEXT: TimeDateStamp: 1970-09-09 19:52:32 (0x14C0000)
-COFF-IMPORTLIB-NEXT: PointerToSymbolTable: 0x528542EB
-COFF-IMPORTLIB-NEXT: SymbolCount: 20
+COFF-IMPORTLIB-NEXT: PointerToSymbolTable: 0x0
+COFF-IMPORTLIB-NEXT: SymbolCount: 0
COFF-IMPORTLIB-NEXT: OptionalHeaderSize: 0
-COFF-IMPORTLIB-NEXT: Characteristics [ (0x8)
-COFF-IMPORTLIB-NEXT: IMAGE_FILE_LOCAL_SYMS_STRIPPED (0x8)
+COFF-IMPORTLIB-NEXT: Characteristics [ (0x0)
COFF-IMPORTLIB-NEXT: ]
COFF-IMPORTLIB-NEXT: }
diff --git a/test/tools/llvm-readobj/imports.test b/test/tools/llvm-readobj/imports.test
new file mode 100644
index 0000000..58512f4
--- /dev/null
+++ b/test/tools/llvm-readobj/imports.test
@@ -0,0 +1,88 @@
+RUN: llvm-readobj --coff-imports %p/Inputs/imports.exe.coff-i386 | FileCheck -check-prefix=X86 %s
+RUN: llvm-readobj --coff-imports %p/Inputs/imports.exe.coff-x86-64 | FileCheck -check-prefix=X64 %s
+
+X86: Import {
+X86-NEXT: Name: KERNEL32.dll
+X86-NEXT: ImportLookupTableRVA: 0x2108
+X86-NEXT: ImportAddressTableRVA: 0x2000
+X86-NEXT: Symbol: ExitProcess (337)
+X86-NEXT: Symbol: GetProcAddress (669)
+X86-NEXT: Symbol: FreeLibrary (414)
+X86-NEXT: Symbol: GetLastError (592)
+X86-NEXT: Symbol: RaiseException (1087)
+X86-NEXT: Symbol: LoadLibraryExA (934)
+X86-NEXT: }
+X86-NEXT: Import {
+X86-NEXT: Name: USER32.dll
+X86-NEXT: ImportLookupTableRVA: 0x2124
+X86-NEXT: ImportAddressTableRVA: 0x201C
+X86-NEXT: Symbol: MessageBoxA (582)
+X86-NEXT: }
+X86-NEXT: Import {
+X86-NEXT: Name: mydll.dll
+X86-NEXT: ImportLookupTableRVA: 0x212C
+X86-NEXT: ImportAddressTableRVA: 0x2024
+X86-NEXT: Symbol: Func1 (0)
+X86-NEXT: Symbol: Func2 (1)
+X86-NEXT: Symbol: (3)
+X86-NEXT: }
+X86-NEXT: DelayImport {
+X86-NEXT: Name: lazyload.dll
+X86-NEXT: Attributes: 0x1
+X86-NEXT: ModuleHandle: 0x301C
+X86-NEXT: ImportAddressTable: 0x3010
+X86-NEXT: ImportNameTable: 0x2090
+X86-NEXT: BoundDelayImportTable: 0x20AC
+X86-NEXT: UnloadDelayImportTable: 0x0
+X86-NEXT: Import {
+X86-NEXT: Symbol: Func5 (0)
+X86-NEXT: Address: 0x401073
+X86-NEXT: }
+X86-NEXT: Import {
+X86-NEXT: Symbol: Func4 (0)
+X86-NEXT: Address: 0x401052
+X86-NEXT: }
+X86-NEXT: }
+
+X64: Import {
+X64-NEXT: Name: KERNEL32.dll
+X64-NEXT: ImportLookupTableRVA: 0x2170
+X64-NEXT: ImportAddressTableRVA: 0x2000
+X64-NEXT: Symbol: ExitProcess (343)
+X64-NEXT: Symbol: GetProcAddress (676)
+X64-NEXT: Symbol: FreeLibrary (420)
+X64-NEXT: Symbol: GetLastError (598)
+X64-NEXT: Symbol: RaiseException (1091)
+X64-NEXT: Symbol: LoadLibraryExA (937)
+X64-NEXT: }
+X64-NEXT: Import {
+X64-NEXT: Name: USER32.dll
+X64-NEXT: ImportLookupTableRVA: 0x21A8
+X64-NEXT: ImportAddressTableRVA: 0x2038
+X64-NEXT: Symbol: MessageBoxA (586)
+X64-NEXT: }
+X64-NEXT: Import {
+X64-NEXT: Name: mydll.dll
+X64-NEXT: ImportLookupTableRVA: 0x21B8
+X64-NEXT: ImportAddressTableRVA: 0x2048
+X64-NEXT: Symbol: Func1 (0)
+X64-NEXT: Symbol: Func2 (1)
+X64-NEXT: Symbol: (3)
+X64-NEXT: }
+X64-NEXT: DelayImport {
+X64-NEXT: Name: lazyload.dll
+X64-NEXT: Attributes: 0x1
+X64-NEXT: ModuleHandle: 0x3028
+X64-NEXT: ImportAddressTable: 0x3010
+X64-NEXT: ImportNameTable: 0x20E0
+X64-NEXT: BoundDelayImportTable: 0x2108
+X64-NEXT: UnloadDelayImportTable: 0x0
+X64-NEXT: Import {
+X64-NEXT: Symbol: Func5 (0)
+X64-NEXT: Address: 0x1400010F1
+X64-NEXT: }
+X64-NEXT: Import {
+X64-NEXT: Symbol: Func4 (0)
+X64-NEXT: Address: 0x140001066
+X64-NEXT: }
+X64-NEXT: }
diff --git a/test/tools/llvm-readobj/peplus.test b/test/tools/llvm-readobj/peplus.test
index 8e6f550..4d8d25d 100644
--- a/test/tools/llvm-readobj/peplus.test
+++ b/test/tools/llvm-readobj/peplus.test
@@ -35,7 +35,7 @@ CHECK: MinorSubsystemVersion: 0
CHECK: SizeOfImage: 8192
CHECK: SizeOfHeaders: 512
CHECK: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
-CHECK: Subsystem [ (0x8160)
+CHECK: Characteristics [ (0x8160)
CHECK: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
CHECK: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA (0x20)
CHECK: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
diff --git a/test/tools/llvm-readobj/reloc-types.test b/test/tools/llvm-readobj/reloc-types.test
index 0c8b54d..20c2538 100644
--- a/test/tools/llvm-readobj/reloc-types.test
+++ b/test/tools/llvm-readobj/reloc-types.test
@@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (284)
ELF-AARCH64: Type: R_AARCH64_LDST32_ABS_LO12_NC (285)
ELF-AARCH64: Type: R_AARCH64_LDST64_ABS_LO12_NC (286)
ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299)
+ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307)
+ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308)
ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311)
ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312)
ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523)
@@ -222,6 +224,15 @@ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562)
ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD64_LO12_NC (563)
ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD_LO12_NC (564)
ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569)
+ELF-AARCH64: Type: R_AARCH64_COPY (1024)
+ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025)
+ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026)
+ELF-AARCH64: Type: R_AARCH64_RELATIVE (1027)
+ELF-AARCH64: Type: R_AARCH64_TLS_DTPREL64 (1028)
+ELF-AARCH64: Type: R_AARCH64_TLS_DTPMOD64 (1029)
+ELF-AARCH64: Type: R_AARCH64_TLS_TPREL64 (1030)
+ELF-AARCH64: Type: R_AARCH64_TLSDESC (1031)
+ELF-AARCH64: Type: R_AARCH64_IRELATIVE (1032)
ELF-ARM: Type: R_ARM_NONE (0)
ELF-ARM: Type: R_ARM_PC24 (1)
@@ -250,7 +261,6 @@ ELF-ARM: Type: R_ARM_RELATIVE (23)
ELF-ARM: Type: R_ARM_GOTOFF32 (24)
ELF-ARM: Type: R_ARM_BASE_PREL (25)
ELF-ARM: Type: R_ARM_GOT_BREL (26)
-ELF-ARM: Type: R_ARM_PLT32 (27)
ELF-ARM: Type: R_ARM_CALL (28)
ELF-ARM: Type: R_ARM_JUMP24 (29)
ELF-ARM: Type: R_ARM_THM_JUMP24 (30)
diff --git a/test/tools/llvm-readobj/relocations.test b/test/tools/llvm-readobj/relocations.test
index 864ded3..222dcf1 100644
--- a/test/tools/llvm-readobj/relocations.test
+++ b/test/tools/llvm-readobj/relocations.test
@@ -1,5 +1,7 @@
RUN: llvm-readobj -r %p/Inputs/trivial.obj.coff-i386 \
RUN: | FileCheck %s -check-prefix COFF
+RUN: llvm-readobj -r %p/Inputs/bad-relocs.obj.coff-i386 \
+RUN: | FileCheck %s -check-prefix BAD-COFF-RELOCS
RUN: llvm-readobj -r %p/Inputs/trivial.obj.elf-i386 \
RUN: | FileCheck %s -check-prefix ELF
RUN: llvm-readobj -r %p/Inputs/trivial.obj.macho-i386 \
@@ -21,6 +23,12 @@ COFF-NEXT: 0xE IMAGE_REL_I386_REL32 _SomeOtherFunction
COFF-NEXT: }
COFF-NEXT: ]
+BAD-COFF-RELOCS: Relocations [
+BAD-COFF-RELOCS-NEXT: Section (1) sec {
+BAD-COFF-RELOCS-NEXT: 0xDEADBEEF IMAGE_REL_I386_ABSOLUTE -
+BAD-COFF-RELOCS-NEXT: }
+BAD-COFF-RELOCS-NEXT: ]
+
ELF: Relocations [
ELF-NEXT: Section (2) .rel.text {
ELF-NEXT: 0xC R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0
diff --git a/test/tools/llvm-readobj/sections-ext.test b/test/tools/llvm-readobj/sections-ext.test
index 972d8e6..4024878 100644
--- a/test/tools/llvm-readobj/sections-ext.test
+++ b/test/tools/llvm-readobj/sections-ext.test
@@ -52,7 +52,6 @@ COFF-NEXT: LineNumberCount: 0
COFF-NEXT: Checksum: 0x0
COFF-NEXT: Number: 1
COFF-NEXT: Selection: 0x0
-COFF-NEXT: Unused: (00 00 00)
COFF-NEXT: }
COFF-NEXT: }
COFF-NEXT: Symbol {
diff --git a/test/tools/llvm-readobj/sections.test b/test/tools/llvm-readobj/sections.test
index 16f1131..fe734d7 100644
--- a/test/tools/llvm-readobj/sections.test
+++ b/test/tools/llvm-readobj/sections.test
@@ -2,6 +2,8 @@ RUN: llvm-readobj -s %p/Inputs/trivial.obj.coff-i386 \
RUN: | FileCheck %s -check-prefix COFF
RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-i386 \
RUN: | FileCheck %s -check-prefix ELF
+RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-mipsel \
+RUN: | FileCheck %s -check-prefix ELF-MIPSEL
RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-i386 \
RUN: | FileCheck %s -check-prefix MACHO-I386
RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-x86-64 \
@@ -84,6 +86,37 @@ ELF-NEXT: AddressAlignment: 16
ELF-NEXT: EntrySize: 0
ELF-NEXT: }
+ELF-MIPSEL: Section {
+ELF-MIPSEL: Index: 4
+ELF-MIPSEL-NEXT: Name: .reginfo (27)
+ELF-MIPSEL-NEXT: Type: SHT_MIPS_REGINFO (0x70000006)
+ELF-MIPSEL-NEXT: Flags [ (0x2)
+ELF-MIPSEL-NEXT: SHF_ALLOC (0x2)
+ELF-MIPSEL-NEXT: ]
+ELF-MIPSEL-NEXT: Address: 0x0
+ELF-MIPSEL-NEXT: Offset: 0x34
+ELF-MIPSEL-NEXT: Size: 24
+ELF-MIPSEL-NEXT: Link: 0
+ELF-MIPSEL-NEXT: Info: 0
+ELF-MIPSEL-NEXT: AddressAlignment: 1
+ELF-MIPSEL-NEXT: EntrySize: 0
+ELF-MIPSEL-NEXT: }
+ELF-MIPSEL-NEXT: Section {
+ELF-MIPSEL-NEXT: Index: 5
+ELF-MIPSEL-NEXT: Name: .MIPS.abiflags (12)
+ELF-MIPSEL-NEXT: Type: SHT_MIPS_ABIFLAGS (0x7000002A)
+ELF-MIPSEL-NEXT: Flags [ (0x2)
+ELF-MIPSEL-NEXT: SHF_ALLOC (0x2)
+ELF-MIPSEL-NEXT: ]
+ELF-MIPSEL-NEXT: Address: 0x0
+ELF-MIPSEL-NEXT: Offset: 0x50
+ELF-MIPSEL-NEXT: Size: 24
+ELF-MIPSEL-NEXT: Link: 0
+ELF-MIPSEL-NEXT: Info: 0
+ELF-MIPSEL-NEXT: AddressAlignment: 8
+ELF-MIPSEL-NEXT: EntrySize: 0
+ELF-MIPSEL-NEXT: }
+
MACHO-I386: Sections [
MACHO-I386-NEXT: Section {
MACHO-I386-NEXT: Index: 0
diff --git a/test/tools/llvm-readobj/symbols.test b/test/tools/llvm-readobj/symbols.test
index 26830ac..71955e0 100644
--- a/test/tools/llvm-readobj/symbols.test
+++ b/test/tools/llvm-readobj/symbols.test
@@ -7,7 +7,7 @@ COFF: Symbols [
COFF-NEXT: Symbol {
COFF-NEXT: Name: @comp.id
COFF-NEXT: Value: 14766605
-COFF-NEXT: Section: (65535)
+COFF-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
COFF-NEXT: BaseType: Null (0x0)
COFF-NEXT: ComplexType: Null (0x0)
COFF-NEXT: StorageClass: Static (0x3)
@@ -16,7 +16,7 @@ COFF-NEXT: }
COFF-NEXT: Symbol {
COFF-NEXT: Name: @feat.00
COFF-NEXT: Value: 2147484049
-COFF-NEXT: Section: (65535)
+COFF-NEXT: Section: IMAGE_SYM_ABSOLUTE (-1)
COFF-NEXT: BaseType: Null (0x0)
COFF-NEXT: ComplexType: Null (0x0)
COFF-NEXT: StorageClass: Static (0x3)
@@ -37,7 +37,6 @@ COFF-NEXT: LineNumberCount: 0
COFF-NEXT: Checksum: 0x0
COFF-NEXT: Number: 1
COFF-NEXT: Selection: 0x0
-COFF-NEXT: Unused: (00 00 00)
COFF-NEXT: }
COFF-NEXT: }