summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-09-10 12:51:52 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-09-10 12:51:52 +0000
commit44f51e511374f467d70c37324a8e5bbf2ea270d8 (patch)
tree3073f00e67964e434982e150df56ac5a33a4a6fb /llvm/test/tools/llvm-readobj
parent5d34a2b887a985651cd098153506c45227123b65 (diff)
downloadbcm5719-llvm-44f51e511374f467d70c37324a8e5bbf2ea270d8.tar.gz
bcm5719-llvm-44f51e511374f467d70c37324a8e5bbf2ea270d8.zip
Object: Add support for bigobj
This adds support for reading the "bigobj" variant of COFF produced by cl's /bigobj and mingw's -mbig-obj. The most significant difference that bigobj brings is more than 2**16 sections to COFF. bigobj brings a few interesting differences with it: - It doesn't have a Characteristics field in the file header. - It doesn't have a SizeOfOptionalHeader field in the file header (it's only used in executable files). - Auxiliary symbol records have the same width as a symbol table entry. Since symbol table entries are bigger, so are auxiliary symbol records. Write support will come soon. Differential Revision: http://reviews.llvm.org/D5259 llvm-svn: 217496
Diffstat (limited to 'llvm/test/tools/llvm-readobj')
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64bin0 -> 340 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/bigobj.test139
-rw-r--r--llvm/test/tools/llvm-readobj/coff-file-sections-reading.test2
-rw-r--r--llvm/test/tools/llvm-readobj/cxx-cli-aux.test6
-rw-r--r--llvm/test/tools/llvm-readobj/sections-ext.test1
-rw-r--r--llvm/test/tools/llvm-readobj/symbols.test5
6 files changed, 144 insertions, 9 deletions
diff --git a/llvm/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64 b/llvm/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
new file mode 100644
index 00000000000..fdfda5e5713
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
Binary files differ
diff --git a/llvm/test/tools/llvm-readobj/bigobj.test b/llvm/test/tools/llvm-readobj/bigobj.test
new file mode 100644
index 00000000000..361a9e44fe6
--- /dev/null
+++ b/llvm/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: (-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/llvm/test/tools/llvm-readobj/coff-file-sections-reading.test b/llvm/test/tools/llvm-readobj/coff-file-sections-reading.test
index 5c44c16f005..846247fd9cf 100644
--- a/llvm/test/tools/llvm-readobj/coff-file-sections-reading.test
+++ b/llvm/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: (-2)
CHECK: BaseType: Null (0x0)
CHECK: ComplexType: Null (0x0)
CHECK: StorageClass: File (0x67)
diff --git a/llvm/test/tools/llvm-readobj/cxx-cli-aux.test b/llvm/test/tools/llvm-readobj/cxx-cli-aux.test
index 90e73c033a8..cac9e71c252 100644
--- a/llvm/test/tools/llvm-readobj/cxx-cli-aux.test
+++ b/llvm/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: (-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: (-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/llvm/test/tools/llvm-readobj/sections-ext.test b/llvm/test/tools/llvm-readobj/sections-ext.test
index 972d8e6f4ef..4024878d2bd 100644
--- a/llvm/test/tools/llvm-readobj/sections-ext.test
+++ b/llvm/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/llvm/test/tools/llvm-readobj/symbols.test b/llvm/test/tools/llvm-readobj/symbols.test
index 26830ac46a8..3876138f9d2 100644
--- a/llvm/test/tools/llvm-readobj/symbols.test
+++ b/llvm/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: (-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: (-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: }
OpenPOWER on IntegriCloud