mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
b3a86a097b
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
107 lines
3.5 KiB
ArmAsm
107 lines
3.5 KiB
ArmAsm
// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s -o - \
|
|
// RUN: | llvm-readobj -t -r | FileCheck %s
|
|
|
|
local1:
|
|
external_aliased_to_local = local1
|
|
|
|
.globl global_aliased_to_external
|
|
global_aliased_to_external = external1
|
|
|
|
.globl global_aliased_to_local
|
|
local2:
|
|
global_aliased_to_local = local2
|
|
|
|
.weak weak_aliased_to_external
|
|
weak_aliased_to_external = external2
|
|
|
|
// Generate relocs against the above aliases.
|
|
.long external_aliased_to_local
|
|
.long global_aliased_to_external
|
|
.long global_aliased_to_local
|
|
.long weak_aliased_to_external
|
|
|
|
// CHECK: Relocations [
|
|
// CHECK: 0x0 IMAGE_REL_I386_DIR32 local1
|
|
// CHECK: 0x4 IMAGE_REL_I386_DIR32 external1
|
|
// CHECK: 0x8 IMAGE_REL_I386_DIR32 local2
|
|
// CHECK: 0xC IMAGE_REL_I386_DIR32 external2
|
|
// CHECK: ]
|
|
// CHECK: 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: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: local1
|
|
// 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: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK: Name: global_aliased_to_external
|
|
// CHECK-NEXT: Value: 0
|
|
// CHECK-NEXT: Section: (0)
|
|
// CHECK-NEXT: BaseType: Null (0x0)
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
|
// CHECK-NEXT: StorageClass: External (0x2)
|
|
// CHECK-NEXT: AuxSymbolCount: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: external1
|
|
// CHECK-NEXT: Value: 0
|
|
// CHECK-NEXT: Section: (0)
|
|
// CHECK-NEXT: BaseType: Null (0x0)
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
|
// CHECK-NEXT: StorageClass: External (0x2)
|
|
// CHECK-NEXT: AuxSymbolCount: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: global_aliased_to_local
|
|
// CHECK-NEXT: Value: 0
|
|
// CHECK-NEXT: Section: .text (1)
|
|
// CHECK-NEXT: BaseType: Null (0x0)
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
|
// CHECK-NEXT: StorageClass: External (0x2)
|
|
// CHECK-NEXT: AuxSymbolCount: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: local2
|
|
// 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: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: weak_aliased_to_external
|
|
// CHECK-NEXT: Value: 0
|
|
// CHECK-NEXT: Section: (0)
|
|
// CHECK-NEXT: BaseType: Null (0x0)
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
|
// CHECK-NEXT: StorageClass: WeakExternal (0x69)
|
|
// CHECK-NEXT: AuxSymbolCount: 1
|
|
// CHECK-NEXT: AuxWeakExternal {
|
|
// CHECK-NEXT: Linked: external2
|
|
// CHECK-NEXT: Search: Library (0x2)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: external2
|
|
// CHECK-NEXT: Value: 0
|
|
// CHECK-NEXT: Section: (0)
|
|
// CHECK-NEXT: BaseType: Null (0x0)
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
|
// CHECK-NEXT: StorageClass: External (0x2)
|
|
// CHECK-NEXT: AuxSymbolCount: 0
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|