mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217496 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
BIN
test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
Normal file
BIN
test/tools/llvm-readobj/Inputs/bigobj.coff-x86-64
Normal file
Binary file not shown.
139
test/tools/llvm-readobj/bigobj.test
Normal file
139
test/tools/llvm-readobj/bigobj.test
Normal file
@@ -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: ]
|
@@ -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)
|
||||
|
@@ -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: }
|
||||
|
@@ -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 {
|
||||
|
@@ -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: }
|
||||
|
||||
|
Reference in New Issue
Block a user