1a8eef4e5SJames Henderson## Show how llvm-size behaves when passed in an archive. 2a8eef4e5SJames Henderson 3a8eef4e5SJames Henderson# RUN: yaml2obj %s --docnum=1 -o %t1 4a8eef4e5SJames Henderson# RUN: yaml2obj %s --docnum=2 -o %t2 5a8eef4e5SJames Henderson 6a8eef4e5SJames Henderson## Case 1: Empty archive. No output expected. 7a8eef4e5SJames Henderson# RUN: rm -f %t1.a 852c61555Szhijian# RUN: llvm-ar rc %t1.a 9a8eef4e5SJames Henderson 10a8eef4e5SJames Henderson# RUN: llvm-size -B %t1.a | count 0 11abd70784STH3CHARLie# RUN: llvm-size -A %t1.a | count 0 12a8eef4e5SJames Henderson 13a8eef4e5SJames Henderson## Case 2: Single member. 14a8eef4e5SJames Henderson# RUN: rm -f %t2.a 15fe3b621fSzhijian# RUN: llvm-ar rc %t2.a %t1 16a8eef4e5SJames Henderson 17a8eef4e5SJames Henderson# RUN: llvm-size -B %t2.a | FileCheck %s -DARCHIVE=%t2.a --check-prefix=BERKELEY-1 18a8eef4e5SJames Henderson# RUN: llvm-size -A %t2.a | FileCheck %s -DARCHIVE=%t2.a --check-prefix=SYSV-1 19*25fdcb8eSShivam Gupta# RUN: llvm-size -m %t2.a | FileCheck %s -DARCHIVE=%t2.a --check-prefix=DARWIN-1 20a8eef4e5SJames Henderson 21a8eef4e5SJames Henderson## Case 3: Multiple members. 22a8eef4e5SJames Henderson# RUN: rm -f %t3.a 23fe3b621fSzhijian# RUN: llvm-ar rc %t3.a %t1 %t2 24a8eef4e5SJames Henderson 25a8eef4e5SJames Henderson# RUN: llvm-size -B %t3.a | FileCheck %s -DARCHIVE=%t3.a --check-prefixes=BERKELEY-1,BERKELEY-2 26a8eef4e5SJames Henderson# RUN: llvm-size -A %t3.a | FileCheck %s -DARCHIVE=%t3.a --check-prefixes=SYSV-1,SYSV-2 27*25fdcb8eSShivam Gupta# RUN: llvm-size -m %t3.a | FileCheck %s -DARCHIVE=%t3.a --check-prefixes=DARWIN-1,DARWIN-2 28a8eef4e5SJames Henderson 29a8eef4e5SJames Henderson## Case 4: Mixing archives and non-archives produces sensible output: 30a8eef4e5SJames Henderson# RUN: llvm-size -B %t1 %t2.a %t2 %t3.a \ 31a8eef4e5SJames Henderson# RUN: | FileCheck %s -DARCHIVE=%t3.a -DARCHIVE2=%t2.a -DFILE1=%t1 -DFILE2=%t2 \ 32a8eef4e5SJames Henderson# RUN: --check-prefixes=BERKELEY-1,BERKELEY-2,BERKELEY-3 33a8eef4e5SJames Henderson# RUN: llvm-size -A %t1 %t2.a %t2 %t3.a \ 34a8eef4e5SJames Henderson# RUN: | FileCheck %s -DARCHIVE=%t3.a -DARCHIVE2=%t2.a -DFILE1=%t1 -DFILE2=%t2 \ 35a8eef4e5SJames Henderson# RUN: --check-prefixes=SYSV-1,SYSV-2,SYSV-3 36*25fdcb8eSShivam Gupta# RUN: llvm-size -B %t1 %t2.a %t2 %t3.a \ 37*25fdcb8eSShivam Gupta# RUN: | FileCheck %s -DARCHIVE=%t3.a -DARCHIVE2=%t2.a -DFILE1=%t1 -DFILE2=%t2 \ 38*25fdcb8eSShivam Gupta# RUN: --check-prefixes=DARWIN-1,DARWIN-2,DARWIN-3 39a8eef4e5SJames Henderson 40a8eef4e5SJames Henderson# BERKELEY-1: text data bss dec hex filename 41a8eef4e5SJames Henderson# BERKELEY-3-NEXT: 1 2 4 7 7 [[FILE1]] 42a8eef4e5SJames Henderson# BERKELEY-3-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE2]]) 43a8eef4e5SJames Henderson# BERKELEY-3-NEXT: 8 16 32 56 38 [[FILE2]] 44a8eef4e5SJames Henderson# BERKELEY-1-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE]]) 45a8eef4e5SJames Henderson# BERKELEY-2-NEXT: 8 16 32 56 38 archive.test.tmp2 (ex [[ARCHIVE]]) 46a8eef4e5SJames Henderson# BERKELEY-1-NOT:{{.}} 47a8eef4e5SJames Henderson 48a8eef4e5SJames Henderson# SYSV-3: [[FILE1]] : 49a8eef4e5SJames Henderson# SYSV-3-NEXT: section size addr 50a8eef4e5SJames Henderson# SYSV-3-NEXT: .text 1 4 51a8eef4e5SJames Henderson# SYSV-3-NEXT: .data 2 2 52a8eef4e5SJames Henderson# SYSV-3-NEXT: .bss 4 1 53a8eef4e5SJames Henderson# SYSV-3-NEXT: Total 7 54a8eef4e5SJames Henderson# SYSV-3-EMPTY: 55abd70784STH3CHARLie# SYSV-3-EMPTY: 56a8eef4e5SJames Henderson# SYSV-3-NEXT: archive.test.tmp1 (ex [[ARCHIVE2]]): 57a8eef4e5SJames Henderson# SYSV-3-NEXT: section size addr 58a8eef4e5SJames Henderson# SYSV-3-NEXT: .text 1 4 59a8eef4e5SJames Henderson# SYSV-3-NEXT: .data 2 2 60a8eef4e5SJames Henderson# SYSV-3-NEXT: .bss 4 1 61a8eef4e5SJames Henderson# SYSV-3-NEXT: Total 7 62a8eef4e5SJames Henderson# SYSV-3-EMPTY: 63abd70784STH3CHARLie# SYSV-3-EMPTY: 64a8eef4e5SJames Henderson# SYSV-3-NEXT: [[FILE2]] : 65a8eef4e5SJames Henderson# SYSV-3-NEXT: section size addr 66a8eef4e5SJames Henderson# SYSV-3-NEXT: .text 8 32 67a8eef4e5SJames Henderson# SYSV-3-NEXT: .data 16 16 68a8eef4e5SJames Henderson# SYSV-3-NEXT: .bss 32 8 69a8eef4e5SJames Henderson# SYSV-3-NEXT: Total 56 70a8eef4e5SJames Henderson# SYSV-3-EMPTY: 71a8eef4e5SJames Henderson 72a8eef4e5SJames Henderson# SYSV-1: archive.test.tmp1 (ex [[ARCHIVE]]): 73a8eef4e5SJames Henderson# SYSV-1-NEXT: section size addr 74a8eef4e5SJames Henderson# SYSV-1-NEXT: .text 1 4 75a8eef4e5SJames Henderson# SYSV-1-NEXT: .data 2 2 76a8eef4e5SJames Henderson# SYSV-1-NEXT: .bss 4 1 77a8eef4e5SJames Henderson# SYSV-1-NEXT: Total 7 78abd70784STH3CHARLie# SYSV-1-EMPTY: 79abd70784STH3CHARLie# SYSV-1-EMPTY: 80a8eef4e5SJames Henderson 81a8eef4e5SJames Henderson# SYSV-2-NEXT: archive.test.tmp2 (ex [[ARCHIVE]]): 82a8eef4e5SJames Henderson# SYSV-2-NEXT: section size addr 83a8eef4e5SJames Henderson# SYSV-2-NEXT: .text 8 32 84a8eef4e5SJames Henderson# SYSV-2-NEXT: .data 16 16 85a8eef4e5SJames Henderson# SYSV-2-NEXT: .bss 32 8 86a8eef4e5SJames Henderson# SYSV-2-NEXT: Total 56 87a8eef4e5SJames Henderson# SYSV-1-NOT:{{.}} 88a8eef4e5SJames Henderson 89*25fdcb8eSShivam Gupta# DARWIN-1: text data bss dec hex filename 90*25fdcb8eSShivam Gupta# DARWIN-3-NEXT: 1 2 4 7 7 [[FILE1]] 91*25fdcb8eSShivam Gupta# DARWIN-3-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE2]]) 92*25fdcb8eSShivam Gupta# DARWIN-3-NEXT: 8 16 32 56 38 [[FILE2]] 93*25fdcb8eSShivam Gupta# DARWIN-1-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE]]) 94*25fdcb8eSShivam Gupta# DARWIN-2-NEXT: 8 16 32 56 38 archive.test.tmp2 (ex [[ARCHIVE]]) 95*25fdcb8eSShivam Gupta# DARWIN-1-NOT:{{.}} 96*25fdcb8eSShivam Gupta 97a8eef4e5SJames Henderson--- !ELF 98a8eef4e5SJames HendersonFileHeader: 99a8eef4e5SJames Henderson Class: ELFCLASS64 100a8eef4e5SJames Henderson Data: ELFDATA2LSB 101a8eef4e5SJames Henderson Type: ET_REL 102a8eef4e5SJames Henderson Machine: EM_X86_64 103a8eef4e5SJames HendersonSections: 104a8eef4e5SJames Henderson - Name: .text 105a8eef4e5SJames Henderson Type: SHT_PROGBITS 106a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_EXECINSTR] 107a8eef4e5SJames Henderson Size: 1 108a8eef4e5SJames Henderson Address: 4 109a8eef4e5SJames Henderson - Name: .data 110a8eef4e5SJames Henderson Type: SHT_PROGBITS 111a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_WRITE] 112a8eef4e5SJames Henderson Size: 2 113a8eef4e5SJames Henderson Address: 2 114a8eef4e5SJames Henderson - Name: .bss 115a8eef4e5SJames Henderson Type: SHT_NOBITS 116a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_WRITE] 117a8eef4e5SJames Henderson Size: 4 118a8eef4e5SJames Henderson Address: 1 119a8eef4e5SJames Henderson 120a8eef4e5SJames Henderson--- !ELF 121a8eef4e5SJames HendersonFileHeader: 122a8eef4e5SJames Henderson Class: ELFCLASS64 123a8eef4e5SJames Henderson Data: ELFDATA2LSB 124a8eef4e5SJames Henderson Type: ET_REL 125a8eef4e5SJames Henderson Machine: EM_X86_64 126a8eef4e5SJames HendersonSections: 127a8eef4e5SJames Henderson - Name: .text 128a8eef4e5SJames Henderson Type: SHT_PROGBITS 129a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_EXECINSTR] 130a8eef4e5SJames Henderson Size: 8 131a8eef4e5SJames Henderson Address: 32 132a8eef4e5SJames Henderson - Name: .data 133a8eef4e5SJames Henderson Type: SHT_PROGBITS 134a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_WRITE] 135a8eef4e5SJames Henderson Size: 16 136a8eef4e5SJames Henderson Address: 16 137a8eef4e5SJames Henderson - Name: .bss 138a8eef4e5SJames Henderson Type: SHT_NOBITS 139a8eef4e5SJames Henderson Flags: [SHF_ALLOC, SHF_WRITE] 140a8eef4e5SJames Henderson Size: 32 141a8eef4e5SJames Henderson Address: 8 142