xref: /llvm-project/llvm/test/tools/llvm-readobj/thin-archive.test (revision 42a21778f61cdc8462ce2cfb6ad7bc1992b2063c)
15b27402bSJames Henderson# RUN: rm -f %t.a
25b27402bSJames Henderson# RUN: rm -rf %t
35b27402bSJames Henderson# RUN: mkdir -p %t
4fff9f049SGeorgii Rymar# RUN: yaml2obj --docnum=1 %s -o %t/1.o
5fff9f049SGeorgii Rymar# RUN: yaml2obj --docnum=2 %s -o %t/2.o
6fff9f049SGeorgii Rymar# RUN: yaml2obj --docnum=3 %s -o %t/3.o
75b27402bSJames Henderson# RUN: llvm-ar rcT %t.a %t/1.o %t/2.o %t/3.o
85b27402bSJames Henderson
95b27402bSJames Henderson# Test that basic dumping works for all members.
105b27402bSJames Henderson# RUN: llvm-readobj --all %t.a | FileCheck %s --check-prefixes=LLVM,COFF
115b27402bSJames Henderson# RUN: llvm-readelf --all %t.a | FileCheck %s --check-prefixes=GNU,COFF
125b27402bSJames Henderson
135b27402bSJames Henderson# LLVM: File: {{.*}}1.o
14536ba637SFangrui Song# LLVM: Format: elf64-x86-64
155b27402bSJames Henderson# LLVM: ElfHeader {
16fff9f049SGeorgii Rymar# LLVM:   SectionHeaderCount: 3
175b27402bSJames Henderson# LLVM: Sections [
185b27402bSJames Henderson# LLVM: Relocations [
195b27402bSJames Henderson# LLVM: Symbols [
205b27402bSJames Henderson
215b27402bSJames Henderson# GNU: ELF Header:
22fff9f049SGeorgii Rymar# GNU:   Number of section headers: 3
235b27402bSJames Henderson# GNU: Section Headers:
245b27402bSJames Henderson
255b27402bSJames Henderson# LLVM: File: {{.*}}2.o
26536ba637SFangrui Song# LLVM: Format: elf32-i386
275b27402bSJames Henderson# LLVM: ElfHeader {
28fff9f049SGeorgii Rymar# LLVM:   SectionHeaderCount: 4
295b27402bSJames Henderson# LLVM: Sections [
305b27402bSJames Henderson# LLVM: Relocations [
315b27402bSJames Henderson# LLVM: Symbols [
325b27402bSJames Henderson
335b27402bSJames Henderson# GNU: ELF Header:
34fff9f049SGeorgii Rymar# GNU:   Number of section headers: 4
355b27402bSJames Henderson# GNU: Section Headers:
365b27402bSJames Henderson
375b27402bSJames Henderson# LLVM: File: {{.*}}3.o
385b27402bSJames Henderson# LLVM: Format: COFF-ARM
395b27402bSJames Henderson# COFF: ImageFileHeader {
405b27402bSJames Henderson# COFF: Sections [
415b27402bSJames Henderson# COFF: Relocations [
425b27402bSJames Henderson# COFF: Symbols [
435b27402bSJames Henderson
445b27402bSJames Henderson# Overwrite one of the members with a member of a different size to show that
455b27402bSJames Henderson# the size field in the member header is not relevant.
46f33b1f49SJames Y Knight# RUN: rm -f %t/2.o
475b27402bSJames Henderson# RUN: cp %t/1.o %t/2.o
485b27402bSJames Henderson# RUN: llvm-readobj --file-headers %t.a | FileCheck %s --check-prefix=RESIZED
495b27402bSJames Henderson
505b27402bSJames Henderson# RESIZED: File: {{.*}}1.o
51536ba637SFangrui Song# RESIZED: Format: elf64-x86-64
525b27402bSJames Henderson# RESIZED: File: {{.*}}2.o
53536ba637SFangrui Song# RESIZED: Format: elf64-x86-64
545b27402bSJames Henderson
555b27402bSJames Henderson# Remove the second member and show that the first can still be dumped, but that the last isn't.
565b27402bSJames Henderson# RUN: rm %t/2.o
575b27402bSJames Henderson# RUN: not llvm-readobj --file-headers %t.a 2> %t.err | FileCheck %s --check-prefix=MISSING
58*42a21778SAbhina Sreeskantharajan# RUN: FileCheck -DMSG=%errc_ENOENT %s --check-prefix=ERR --input-file=%t.err
595b27402bSJames Henderson
605b27402bSJames Henderson# MISSING:     File: {{.*}}1.o
61536ba637SFangrui Song# MISSING:     Format: elf64-x86-64
625b27402bSJames Henderson# MISSING-NOT: File: {{.*}}3.o
63*42a21778SAbhina Sreeskantharajan# ERR: error: '{{.*}}.a': '{{.*}}2.o': [[MSG]]
64fff9f049SGeorgii Rymar
65fff9f049SGeorgii Rymar--- !ELF
66fff9f049SGeorgii RymarFileHeader:
67fff9f049SGeorgii Rymar  Class:   ELFCLASS64
68fff9f049SGeorgii Rymar  Data:    ELFDATA2LSB
69fff9f049SGeorgii Rymar  Type:    ET_REL
70fff9f049SGeorgii Rymar  Machine: EM_X86_64
71fff9f049SGeorgii Rymar
72fff9f049SGeorgii Rymar--- !ELF
73fff9f049SGeorgii RymarFileHeader:
74fff9f049SGeorgii Rymar  Class:   ELFCLASS32
75fff9f049SGeorgii Rymar  Data:    ELFDATA2LSB
76fff9f049SGeorgii Rymar  Type:    ET_REL
77fff9f049SGeorgii Rymar  Machine: EM_386
78fff9f049SGeorgii RymarSections:
79fff9f049SGeorgii Rymar  - Name: .foo
80fff9f049SGeorgii Rymar    Type: SHT_PROGBITS
81fff9f049SGeorgii Rymar
82fff9f049SGeorgii Rymar--- !COFF
83fff9f049SGeorgii Rymarheader:
84fff9f049SGeorgii Rymar  Machine:         IMAGE_FILE_MACHINE_ARMNT
85fff9f049SGeorgii Rymar  Characteristics: [  ]
86fff9f049SGeorgii Rymarsections: []
87fff9f049SGeorgii Rymarsymbols: []
88