[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / tools / llvm-ar / replace-update.test
blobc056565f144c585bef3e3091d36fd99963aa8213
1 ## Test that the replace command with "u" updates the relevant members.
3 # RUN: rm -rf %t && mkdir -p %t/new/other
5 # RUN: yaml2obj %s -o %t/1.o --docnum=1
6 # RUN: yaml2obj %s -o %t/2.o --docnum=2
7 # RUN: yaml2obj %s -o %t/3.o --docnum=3
9 # RUN: env TZ=GMT touch -t 200001020304 %t/1.o
10 # RUN: env TZ=GMT touch -t 200001020304 %t/2.o
11 # RUN: env TZ=GMT touch -t 200001020304 %t/3.o
13 # RUN: yaml2obj %s -o %t/new/1.o --docnum=4
14 # RUN: yaml2obj %s -o %t/new/3.o --docnum=5
16 # RUN: yaml2obj %s -o %t/new/other/1.o --docnum=6
18 # RUN: env TZ=GMT touch -t 200001020304 %t/new/other/1.o
20 ## Replace single member with newer file:
21 # RUN: llvm-ar rcU %t/single.a %t/1.o %t/2.o %t/3.o
22 # RUN: llvm-ar ruU %t/single.a %t/new/1.o
23 # RUN: llvm-ar t %t/single.a \
24 # RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}
26 # SINGLE:      1.o
27 # SINGLE-NEXT: 2.o
28 # SINGLE-NEXT: 3.o
30 # RUN: llvm-nm --print-armap %t/single.a \
31 # RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
33 # SINGLE-SYM:      symbolnew1
34 # SINGLE-SYM-NEXT: symbol2
35 # SINGLE-SYM-NEXT: symbol3
37 ## Replace new single member with older file:
38 # RUN: llvm-ar ruU %t/single.a %t/1.o
39 # RUN: llvm-ar t %t/single.a \
40 # RUN:   | FileCheck %s --check-prefix=SINGLE --implicit-check-not {{.}}
42 # RUN: llvm-nm --print-armap %t/single.a \
43 # RUN:   | FileCheck %s --check-prefix=SINGLE-SYM
45 ## Replace multiple members with newer files:
46 # RUN: llvm-ar rcuU %t/multiple.a %t/1.o %t/2.o %t/3.o
47 # RUN: llvm-ar ruU %t/multiple.a %t/new/1.o %t/new/3.o
48 # RUN: llvm-ar t %t/multiple.a \
49 # RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
51 # MULTIPLE:      1.o
52 # MULTIPLE-NEXT: 2.o
53 # MULTIPLE-NEXT: 3.o
55 # RUN: llvm-nm --print-armap %t/multiple.a \
56 # RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
58 # MULTIPLE-SYM:      symbolnew1
59 # MULTIPLE-SYM-NEXT: symbol2
60 # MULTIPLE-SYM-NEXTs: symbolnew3
62 ## Replace newer members with multiple older files:
63 # RUN: llvm-ar ruU %t/multiple.a %t/1.o %t/2.o
64 # RUN: llvm-ar t %t/multiple.a \
65 # RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
67 # RUN: llvm-nm --print-armap %t/multiple.a \
68 # RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
70 ## Replace same member with newer files:
71 # RUN: llvm-ar rcuU %t/same.a %t/1.o %t/2.o %t/3.o
72 # RUN: llvm-ar ruU %t/same.a %t/new/1.o %t/new/other/1.o
73 # RUN: llvm-ar t %t/same.a \
74 # RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}
76 # SAME:      1.o
77 # SAME-NEXT: 2.o
78 # SAME-NEXT: 3.o
79 # SAME-NEXT: 1.o
81 # RUN: llvm-nm --print-armap %t/same.a \
82 # RUN:   | FileCheck %s --check-prefix=SAME-SYM
84 # SAME-SYM:      symbolnew1
85 # SAME-SYM-NEXT: symbol2
86 # SAME-SYM-NEXT: symbol3
87 # SAME-SYM-NEXT: symbolother1
89 ## Replace multiple members with an older file and a newer file:
90 # RUN: llvm-ar rcuU %t/old-new.a %t/new/1.o %t/2.o %t/3.o
91 # RUN: llvm-ar ruU %t/old-new.a %t/1.o %t/new/3.o
92 # RUN: llvm-ar t %t/old-new.a \
93 # RUN:   | FileCheck %s --check-prefix=MULTIPLE --implicit-check-not {{.}}
95 # RUN: llvm-nm --print-armap %t/old-new.a \
96 # RUN:   | FileCheck %s --check-prefix=MULTIPLE-SYM
98 ## Replace same member with an older file and a newer file:
99 # RUN: llvm-ar rcuU %t/old-new-same.a %t/new/1.o %t/2.o %t/3.o
100 # RUN: llvm-ar ruU %t/old-new-same.a %t/1.o %t/new/other/1.o
101 # RUN: llvm-ar t %t/old-new-same.a \
102 # RUN:   | FileCheck %s --check-prefix=SAME -DFILE=%t/2.o --implicit-check-not {{.}}
104 # RUN: llvm-nm --print-armap %t/same.a \
105 # RUN:   | FileCheck %s --check-prefix=SAME-SYM
107 --- !ELF
108 FileHeader:
109   Class:   ELFCLASS64
110   Data:    ELFDATA2LSB
111   Type:    ET_REL
112   Machine: EM_X86_64
113 Sections:
114   - Name: .text
115     Type: SHT_PROGBITS
116 Symbols:
117   - Name:    symbol1
118     Binding: STB_GLOBAL
119     Section: .text
121 --- !ELF
122 FileHeader:
123   Class:   ELFCLASS64
124   Data:    ELFDATA2LSB
125   Type:    ET_REL
126   Machine: EM_X86_64
127 Sections:
128   - Name: .text
129     Type: SHT_PROGBITS
130 Symbols:
131   - Name:    symbol2
132     Binding: STB_GLOBAL
133     Section: .text
135 --- !ELF
136 FileHeader:
137   Class:   ELFCLASS64
138   Data:    ELFDATA2LSB
139   Type:    ET_REL
140   Machine: EM_X86_64
141 Sections:
142   - Name: .text
143     Type: SHT_PROGBITS
144 Symbols:
145   - Name:    symbol3
146     Binding: STB_GLOBAL
147     Section: .text
149 --- !ELF
150 FileHeader:
151   Class:   ELFCLASS64
152   Data:    ELFDATA2LSB
153   Type:    ET_REL
154   Machine: EM_X86_64
155 Sections:
156   - Name: .text
157     Type: SHT_PROGBITS
158 Symbols:
159   - Name:    symbolnew1
160     Binding: STB_GLOBAL
161     Section: .text
163 --- !ELF
164 FileHeader:
165   Class:   ELFCLASS64
166   Data:    ELFDATA2LSB
167   Type:    ET_REL
168   Machine: EM_X86_64
169 Sections:
170   - Name: .text
171     Type: SHT_PROGBITS
172 Symbols:
173   - Name:    symbolnew3
174     Binding: STB_GLOBAL
175     Section: .text
177 --- !ELF
178 FileHeader:
179   Class:   ELFCLASS64
180   Data:    ELFDATA2LSB
181   Type:    ET_REL
182   Machine: EM_X86_64
183 Sections:
184   - Name: .text
185     Type: SHT_PROGBITS
186 Symbols:
187   - Name:    symbolother1
188     Binding: STB_GLOBAL
189     Section: .text