| ## Test how we dump archives. |
| |
| ## Show that dumping operations apply to all members in an archive. |
| |
| # RUN: rm -f %t.a |
| # RUN: rm -rf %t.dir |
| # RUN: mkdir -p %t.dir |
| # RUN: yaml2obj --docnum=1 %s -o %t.dir/trivial.obj.elf-x86-64 |
| # RUN: yaml2obj --docnum=2 %s -o %t.dir/trivial.obj.elf-i386 |
| # RUN: yaml2obj --docnum=3 %s -o %t.dir/trivial.obj.coff-arm |
| |
| # RUN: llvm-ar rc %t.a %t.dir/trivial.obj.elf-x86-64 %t.dir/trivial.obj.elf-i386 %t.dir/trivial.obj.coff-arm |
| # RUN: llvm-readobj --all %t.a | FileCheck %s -DARFILE="%t.a" --check-prefixes=LLVM,COFF |
| # RUN: llvm-readelf --all %t.a | FileCheck %s -DARFILE="%t.a" --check-prefixes=GNU,COFF |
| |
| # LLVM: {{^$}} |
| # LLVM-NEXT: File: [[ARFILE]](trivial.obj.elf-x86-64) |
| # LLVM: Format: elf64-x86-64 |
| # LLVM: ElfHeader { |
| # LLVM: Machine: EM_X86_64 |
| # LLVM: Sections [ |
| # LLVM: Relocations [ |
| # LLVM: Symbols [ |
| # LLVM: Notes [ |
| # LLVM: ] |
| # LLVM: StackSizes [ |
| # LLVM: ] |
| |
| # GNU: {{^$}} |
| # GNU-NEXT: File: [[ARFILE]](trivial.obj.elf-x86-64) |
| # GNU: ELF Header: |
| # GNU: Machine: Advanced Micro Devices X86-64 |
| # GNU: Section Headers: |
| # GNU: There are no section groups in this file. |
| |
| # LLVM-EMPTY: |
| # LLVM-NEXT: File: [[ARFILE]](trivial.obj.elf-i386) |
| # LLVM: Format: elf32-i386 |
| # LLVM: ElfHeader { |
| # LLVM: Machine: EM_386 |
| # LLVM: Sections [ |
| # LLVM: Relocations [ |
| # LLVM: Symbols [ |
| # LLVM: Notes [ |
| # LLVM: ] |
| # LLVM: StackSizes [ |
| # LLVM: ] |
| |
| # GNU-EMPTY: |
| # GNU-NEXT: File: [[ARFILE]](trivial.obj.elf-i386) |
| # GNU: ELF Header: |
| # GNU: Machine: Intel 80386 |
| # GNU: Section Headers: |
| # GNU: There are no section groups in this file. |
| |
| # LLVM-EMPTY: |
| # LLVM-NEXT: File: [[ARFILE]](trivial.obj.coff-arm) |
| # LLVM: Format: COFF-ARM |
| # GNU-EMPTY: |
| # GNU-NEXT: File: [[ARFILE]](trivial.obj.coff-arm) |
| # COFF: ImageFileHeader { |
| # COFF: Machine: IMAGE_FILE_MACHINE_ARMNT |
| # COFF: Sections [ |
| # COFF: Relocations [ |
| # COFF: Symbols [ |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_386 |
| |
| --- !COFF |
| header: |
| Machine: IMAGE_FILE_MACHINE_ARMNT |
| Characteristics: [ ] |
| sections: [] |
| symbols: [] |
| |
| ## Here we test that we report a warning and continue dumping when an archive contains |
| ## an unrecognized object. We add a dummy archive to the middle of another archive, |
| ## so that it is between two valid objects. |
| |
| # RUN: rm -f %t2.a |
| # RUN: llvm-ar rc %t.dir/broken.a %t.dir/trivial.obj.elf-x86-64 |
| # RUN: llvm-ar qc %t2.a %t.dir/trivial.obj.elf-x86-64 %t.dir/broken.a %t.dir/trivial.obj.elf-x86-64 |
| # RUN: llvm-readobj --all %t2.a 2>&1 | FileCheck %s -DARFILE="%t2.a" --check-prefix=BROKEN |
| # RUN: llvm-readelf --all %t2.a 2>&1 | FileCheck %s -DARFILE="%t2.a" --check-prefix=BROKEN |
| |
| # BROKEN: File: [[ARFILE]](trivial.obj.elf-x86-64) |
| # BROKEN: warning: '[[ARFILE]]': broken.a has an unsupported file type |
| # BROKEN: File: [[ARFILE]](trivial.obj.elf-x86-64) |