# RUN: yaml2obj < %s > %t.obj # # RUN: lld-link /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib # RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck %s -check-prefix=BASEREL # # RUN: lld-link /out:%t.exe /entry:main /fixed %t.obj %p/Inputs/std64.lib # RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck %s -check-prefix=NOBASEREL # # BASEREL: BaseReloc [ # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x2007 # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x200C # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x201E # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: ABSOLUTE # BASEREL-NEXT: Address: 0x2000 # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x3007 # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x300C # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: DIR64 # BASEREL-NEXT: Address: 0x301E # BASEREL-NEXT: } # BASEREL-NEXT: Entry { # BASEREL-NEXT: Type: ABSOLUTE # BASEREL-NEXT: Address: 0x3000 # BASEREL-NEXT: } # # NOBASEREL: BaseReloc [ # NOBASEREL-NEXT: ] # # RUN: lld-link /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib # RUN: llvm-readobj -file-headers -sections %t.exe | FileCheck %s \ # RUN: --check-prefix=BASEREL-HEADER # # RN: lld-link /out:%t.exe /entry:main /fixed %t.obj %p/Inputs/std64.lib # RN: llvm-readobj -file-headers %t.exe | FileCheck %s \ # RN: --check-prefix=NOBASEREL-HEADER # # BASEREL-HEADER-NOT: IMAGE_FILE_RELOCS_STRIPPED # # NOBASEREL-HEADER: IMAGE_FILE_RELOCS_STRIPPED # # BASEREL-HEADER: BaseRelocationTableRVA: 0x5000 # BASEREL-HEADER: BaseRelocationTableSize: 0x20 # BASEREL-HEADER: Name: .reloc (2E 72 65 6C 6F 63 00 00) # BASEREL-HEADER-NEXT: VirtualSize: 0x20 # BASEREL-HEADER-NEXT: VirtualAddress: 0x5000 # BASEREL-HEADER-NEXT: RawDataSize: 512 # BASEREL-HEADER-NEXT: PointerToRawData: 0xC00 # BASEREL-HEADER-NEXT: PointerToRelocations: 0x0 # BASEREL-HEADER-NEXT: PointerToLineNumbers: 0x0 # BASEREL-HEADER-NEXT: RelocationCount: 0 # BASEREL-HEADER-NEXT: LineNumberCount: 0 # BASEREL-HEADER-NEXT: Characteristics [ (0x42000040) # BASEREL-HEADER-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40) # BASEREL-HEADER-NEXT: IMAGE_SCN_MEM_DISCARDABLE (0x2000000) # BASEREL-HEADER-NEXT: IMAGE_SCN_MEM_READ (0x40000000) # BASEREL-HEADER-NEXT: ] --- !COFF header: Machine: IMAGE_FILE_MACHINE_AMD64 Characteristics: [] sections: - Name: .text Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 4096 SectionData: B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000 Relocations: - VirtualAddress: 0 SymbolName: abs_symbol Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 7 SymbolName: caption Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 12 SymbolName: message Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 18 SymbolName: MessageBoxA Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 24 SymbolName: ExitProcess Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 30 SymbolName: __ImageBase Type: IMAGE_REL_AMD64_ADDR64 - Name: .text2 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 4096 SectionData: B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000 Relocations: - VirtualAddress: 0 SymbolName: abs_symbol Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 7 SymbolName: caption Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 12 SymbolName: message Type: IMAGE_REL_AMD64_ADDR64 - VirtualAddress: 18 SymbolName: MessageBoxA Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 24 SymbolName: ExitProcess Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 30 SymbolName: __ImageBase Type: IMAGE_REL_AMD64_ADDR64 - Name: .data Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: 48656C6C6F0048656C6C6F20576F726C6400 symbols: - Name: "@comp.id" Value: 10394907 SectionNumber: 65535 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC - Name: .text Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 28 NumberOfRelocations: 6 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: .text2 Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 28 NumberOfRelocations: 6 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: .data Value: 0 SectionNumber: 3 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 18 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: MessageBoxA Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: ExitProcess Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: message Value: 6 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC - Name: main Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: caption Value: 0 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC - Name: abs_symbol Value: 0xDEADBEEF SectionNumber: -1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: __ImageBase Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...