92 lines
2.5 KiB
Plaintext
92 lines
2.5 KiB
Plaintext
Verify that llvm-ar uses COFF archive format by ensuring that archive map is sorted.
|
|
|
|
RUN: rm -rf %t.dir && split-file %s %t.dir && cd %t.dir
|
|
|
|
RUN: yaml2obj coff-symtab.yaml -o coff-symtab.obj
|
|
RUN: llvm-ar crs out.a coff-symtab.obj
|
|
RUN: llvm-nm --print-armap out.a | FileCheck %s
|
|
|
|
RUN: llvm-as coff-symtab.ll -o coff-symtab.bc
|
|
RUN: llvm-ar crs out2.a coff-symtab.bc
|
|
RUN: llvm-nm --print-armap out2.a | FileCheck %s
|
|
|
|
RUN: yaml2obj elf.yaml -o coff-symtab.o
|
|
RUN: llvm-ar crs --format coff out3.a coff-symtab.o
|
|
RUN: llvm-nm --print-armap out3.a | FileCheck %s
|
|
|
|
Create an empty archive with no symbol map, add a COFF file to it and check that the output archive is a COFF archive.
|
|
|
|
RUN: llvm-ar --format coff rcS out4.a
|
|
RUN: llvm-ar rs out4.a coff-symtab.obj
|
|
RUN: llvm-nm --print-armap out4.a | FileCheck %s
|
|
|
|
CHECK: Archive map
|
|
CHECK-NEXT: a in coff-symtab
|
|
CHECK-NEXT: b in coff-symtab
|
|
CHECK-NEXT: c in coff-symtab
|
|
CHECK-EMPTY:
|
|
|
|
#--- coff-symtab.yaml
|
|
--- !COFF
|
|
header:
|
|
Machine: IMAGE_FILE_MACHINE_UNKNOWN
|
|
Characteristics: [ ]
|
|
sections:
|
|
- Name: .text
|
|
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
|
|
Alignment: 4
|
|
SectionData: ''
|
|
symbols:
|
|
- Name: b
|
|
Value: 0
|
|
SectionNumber: 1
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
|
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
|
- Name: c
|
|
Value: 0
|
|
SectionNumber: 1
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
|
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
|
- Name: a
|
|
Value: 0
|
|
SectionNumber: 1
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
|
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
|
...
|
|
|
|
|
|
#--- coff-symtab.ll
|
|
target triple = "x86_64-unknown-windows-msvc"
|
|
|
|
define void @b() { ret void }
|
|
define void @c() { ret void }
|
|
define void @a() { ret void }
|
|
|
|
#--- elf.yaml
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data : ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
AddressAlign: 0x0000000000000004
|
|
Content: ''
|
|
Symbols:
|
|
- Name: b
|
|
Binding: STB_GLOBAL
|
|
Section: .text
|
|
- Name: c
|
|
Binding: STB_GLOBAL
|
|
Section: .text
|
|
- Name: a
|
|
Binding: STB_GLOBAL
|
|
Section: .text
|
|
...
|