• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2 // -*- Mode: C++ -*-
3 //
4 // Copyright (C) 2013-2022 Red Hat, Inc.
5 //
6 // Author: Dodji Seketeli
7 
8 /// @file
9 ///
10 /// This test harness program runs a diff between input ELF files
11 /// containing DWARF debugging information, exercising the
12 /// suppressions features of the "bidiff" command line program.
13 ///
14 /// So it runs the diff diff between the two input files, using a
15 /// suppression file and compares the resulting diff with a reference
16 /// one.
17 
18 #include <sys/wait.h>
19 #include <cstdlib>
20 #include <cstring>
21 #include <fstream>
22 #include <iostream>
23 #include <memory>
24 #include <string>
25 #include <unordered_set>
26 #include "abg-tools-utils.h"
27 #include "abg-workers.h"
28 #include "test-utils.h"
29 
30 using abigail::tests::get_src_dir;
31 using abigail::tests::get_build_dir;
32 
33 /// This is an aggregate that specifies where a test shall get its
34 /// input from and where it shall write its ouput to.
35 struct InOutSpec
36 {
37   const char* in_elfv0_path;
38   const char* in_elfv1_path;
39   const char* headers_dir1;
40   const char* headers_dir2;
41   const char* in_suppr_path;
42   const char* abidiff_options;
43   const char* in_report_path;
44   const char* out_report_path;
45 }; // end struct InOutSpec;
46 
47 InOutSpec in_out_specs[] =
48 {
49   {
50     "data/test-diff-suppr/test0-type-suppr-v0.o",
51     "data/test-diff-suppr/test0-type-suppr-v1.o",
52     NULL,
53     NULL,
54     NULL,
55     "--no-default-suppression --no-show-locs --no-redundant",
56     "data/test-diff-suppr/test0-type-suppr-report-0.txt",
57     "output/test-diff-suppr/test0-type-suppr-report-0.txt",
58   },
59   {
60     "data/test-diff-suppr/test0-type-suppr-v0.o",
61     "data/test-diff-suppr/test0-type-suppr-v1.o",
62     "",
63     "",
64     "data/test-diff-suppr/test0-type-suppr-0.suppr",
65     "--no-default-suppression --no-show-locs --no-redundant",
66     "data/test-diff-suppr/test0-type-suppr-report-1.txt",
67     "output/test-diff-suppr/test0-type-suppr-report-1.txt",
68   },
69   {
70     "data/test-diff-suppr/test0-type-suppr-v0.o",
71     "data/test-diff-suppr/test0-type-suppr-v1.o",
72     "",
73     "",
74     "data/test-diff-suppr/test0-type-suppr-1.suppr",
75     "--no-default-suppression --no-show-locs --no-redundant",
76     "data/test-diff-suppr/test0-type-suppr-report-2.txt",
77     "output/test-diff-suppr/test0-type-suppr-report-2.txt",
78   },
79   {
80     "data/test-diff-suppr/test0-type-suppr-v0.o",
81     "data/test-diff-suppr/test0-type-suppr-v1.o",
82     "",
83     "",
84     "data/test-diff-suppr/test0-type-suppr-2.suppr",
85     "--no-default-suppression --no-show-locs --no-redundant",
86     "data/test-diff-suppr/test0-type-suppr-report-3.txt",
87     "output/test-diff-suppr/test0-type-suppr-report-3.txt",
88   },
89   {
90     "data/test-diff-suppr/test0-type-suppr-v0.o",
91     "data/test-diff-suppr/test0-type-suppr-v1.o",
92     "",
93     "",
94     "data/test-diff-suppr/test0-type-suppr-3.suppr",
95     "--no-default-suppression --no-show-locs --no-redundant",
96     "data/test-diff-suppr/test0-type-suppr-report-4.txt",
97     "output/test-diff-suppr/test0-type-suppr-report-4.txt",
98   },
99   {
100     "data/test-diff-suppr/test0-type-suppr-v0.o",
101     "data/test-diff-suppr/test0-type-suppr-v1.o",
102     "",
103     "",
104     "data/test-diff-suppr/test0-type-suppr-4.suppr",
105     "--no-default-suppression --no-show-locs --no-redundant",
106     "data/test-diff-suppr/test0-type-suppr-report-5.txt",
107     "output/test-diff-suppr/test0-type-suppr-report-5.txt",
108   },
109   {
110     "data/test-diff-suppr/test0-type-suppr-v0.o",
111     "data/test-diff-suppr/test0-type-suppr-v1.o",
112     "",
113     "",
114     "data/test-diff-suppr/test0-type-suppr-5.suppr",
115     "--no-default-suppression --no-show-locs --no-redundant",
116     "data/test-diff-suppr/test0-type-suppr-report-6.txt",
117     "output/test-diff-suppr/test0-type-suppr-report-6.txt",
118   },
119   {
120     "data/test-diff-suppr/test0-type-suppr-v0.o",
121     "data/test-diff-suppr/test0-type-suppr-v1.o",
122     "",
123     "",
124     "data/test-diff-suppr/test0-type-suppr-6.suppr",
125     "--no-default-suppression --no-show-locs --no-redundant",
126     "data/test-diff-suppr/test0-type-suppr-report-7.txt",
127     "output/test-diff-suppr/test0-type-suppr-report-7.txt",
128   },
129   {
130     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
131     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
132     "",
133     "",
134     "",
135     "--no-default-suppression --no-show-locs --no-redundant",
136     "data/test-diff-suppr/test1-typedef-suppr-report-0.txt",
137     "output/test-diff-suppr/test1-typedef-suppr-report-0.txt",
138   },
139   {
140     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
141     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
142     "",
143     "",
144     "data/test-diff-suppr/test1-typedef-suppr-0.suppr",
145     "--no-default-suppression --no-show-locs --no-redundant",
146     "data/test-diff-suppr/test1-typedef-suppr-report-1.txt",
147     "output/test-diff-suppr/test1-typedef-suppr-report-1.txt",
148   },
149   {
150     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
151     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
152     "",
153     "",
154     "data/test-diff-suppr/test1-typedef-suppr-1.suppr",
155     "--no-default-suppression --no-show-locs --no-redundant",
156     "data/test-diff-suppr/test1-typedef-suppr-report-2.txt",
157     "output/test-diff-suppr/test1-typedef-suppr-report-2.txt",
158   },
159   {
160     "data/test-diff-suppr/test2-struct-suppr-v0.o",
161     "data/test-diff-suppr/test2-struct-suppr-v1.o",
162     "",
163     "",
164     "data/test-diff-suppr/test2-struct-suppr-0.suppr",
165     "--no-default-suppression --no-show-locs --no-redundant",
166     "data/test-diff-suppr/test2-struct-suppr-report-0.txt",
167     "output/test-diff-suppr/test2-struct-suppr-report-0.txt",
168   },
169   {
170     "data/test-diff-suppr/test2-struct-suppr-v0.o",
171     "data/test-diff-suppr/test2-struct-suppr-v1.o",
172     "",
173     "",
174     "data/test-diff-suppr/test2-struct-suppr-1.suppr",
175     "--no-default-suppression --no-show-locs --no-redundant",
176     "data/test-diff-suppr/test2-struct-suppr-report-1.txt",
177     "output/test-diff-suppr/test2-struct-suppr-report-1.txt",
178   },
179   {
180     "data/test-diff-suppr/test3-struct-suppr-v0.o",
181     "data/test-diff-suppr/test3-struct-suppr-v1.o",
182     "",
183     "",
184     NULL,
185     "--no-default-suppression --no-show-locs --no-redundant",
186     "data/test-diff-suppr/test3-struct-suppr-report-0.txt",
187     "output/test-diff-suppr/test3-struct-suppr-report-0.txt",
188   },
189   {
190     "data/test-diff-suppr/test3-struct-suppr-v0.o",
191     "data/test-diff-suppr/test3-struct-suppr-v1.o",
192     "",
193     "",
194     "data/test-diff-suppr/test3-struct-suppr-0.suppr",
195     "--no-default-suppression --no-show-locs --no-redundant",
196     "data/test-diff-suppr/test3-struct-suppr-report-1.txt",
197     "output/test-diff-suppr/test3-struct-suppr-report-1.txt",
198   },
199   {
200     "data/test-diff-suppr/test3-struct-suppr-v0.o",
201     "data/test-diff-suppr/test3-struct-suppr-v1.o",
202     "",
203     "",
204     "data/test-diff-suppr/test3-struct-suppr-1.suppr",
205     "--no-default-suppression --no-show-locs --no-redundant",
206     "data/test-diff-suppr/test3-struct-suppr-report-2.txt",
207     "output/test-diff-suppr/test3-struct-suppr-report-2.txt",
208   },
209   {
210     "data/test-diff-suppr/libtest4-local-suppr-v0.so",
211     "data/test-diff-suppr/libtest4-local-suppr-v1.so",
212     "",
213     "",
214     "data/test-diff-suppr/test4-local-suppr-0.suppr",
215     "--no-default-suppression --no-show-locs --no-redundant",
216     "data/test-diff-suppr/test4-local-suppr-report-1.txt",
217     "output/test-diff-suppr/test4-local-suppr-report-1.txt",
218   },
219   {
220     "data/test-diff-suppr/libtest4-local-suppr-v0.so",
221     "data/test-diff-suppr/libtest4-local-suppr-v1.so",
222     "",
223     "",
224     "",
225     "--no-default-suppression --no-show-locs",
226     "data/test-diff-suppr/test4-local-suppr-report-0.txt",
227     "output/test-diff-suppr/test4-local-suppr-report-0.txt",
228   },
229   {
230     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
231     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
232     "",
233     "",
234     "",
235     "--no-default-suppression --no-show-locs --no-redundant",
236     "data/test-diff-suppr/test5-fn-suppr-report-0.txt",
237     "output/test-diff-suppr/test5-fn-suppr-report-0.txt",
238   },
239   {
240     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
241     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
242     "",
243     "",
244     "data/test-diff-suppr/test5-fn-suppr-0.suppr",
245     "--no-default-suppression --no-show-locs --no-redundant",
246     "data/test-diff-suppr/test5-fn-suppr-report-1.txt",
247     "output/test-diff-suppr/test5-fn-suppr-report-1.txt",
248   },
249   {
250     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
251     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
252     "",
253     "",
254     "data/test-diff-suppr/test5-fn-suppr-1.suppr",
255     "--no-default-suppression --no-show-locs --no-redundant",
256     "data/test-diff-suppr/test5-fn-suppr-report-2.txt",
257     "output/test-diff-suppr/test5-fn-suppr-report-2.txt",
258   },
259   {
260     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
261     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
262     "",
263     "",
264     "data/test-diff-suppr/test5-fn-suppr-2.suppr",
265     "--no-default-suppression --no-show-locs --no-redundant",
266     "data/test-diff-suppr/test5-fn-suppr-report-3.txt",
267     "output/test-diff-suppr/test5-fn-suppr-report-3.txt",
268   },
269   {
270     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
271     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
272     "",
273     "",
274     "data/test-diff-suppr/test5-fn-suppr-3.suppr",
275     "--no-default-suppression --no-show-locs --no-redundant",
276     "data/test-diff-suppr/test5-fn-suppr-report-4.txt",
277     "output/test-diff-suppr/test5-fn-suppr-report-4.txt",
278   },
279   {
280     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
281     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
282     "",
283     "",
284     "data/test-diff-suppr/test5-fn-suppr-4.suppr",
285     "--no-default-suppression --no-show-locs --no-redundant",
286     "data/test-diff-suppr/test5-fn-suppr-report-5.txt",
287     "output/test-diff-suppr/test5-fn-suppr-report-5.txt",
288   },
289   {
290     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
291     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
292     "",
293     "",
294     "",
295     "--no-default-suppression --no-show-locs --no-redundant",
296     "data/test-diff-suppr/test6-fn-suppr-report-0.txt",
297     "output/test-diff-suppr/test6-fn-suppr-report-0.txt",
298   },
299   { // Just like the previous test, but loc info is emitted.
300     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
301     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
302     "",
303     "",
304     "",
305     "--no-default-suppression --no-redundant",
306     "data/test-diff-suppr/test6-fn-suppr-report-0-1.txt",
307     "output/test-diff-suppr/test6-fn-suppr-report-0-1.txt",
308   },
309   {
310     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
311     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
312     "",
313     "",
314     "data/test-diff-suppr/test6-fn-suppr-0.suppr",
315     "--no-default-suppression --no-show-locs --no-redundant",
316     "data/test-diff-suppr/test6-fn-suppr-report-1.txt",
317     "output/test-diff-suppr/test6-fn-suppr-report-1.txt",
318   },
319   {
320     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
321     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
322     "",
323     "",
324     "data/test-diff-suppr/test6-fn-suppr-1.suppr",
325     "--no-default-suppression --no-show-locs --no-redundant",
326     "data/test-diff-suppr/test6-fn-suppr-report-2.txt",
327     "output/test-diff-suppr/test6-fn-suppr-report-2.txt",
328   },
329   {
330     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
331     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
332     "",
333     "",
334     "data/test-diff-suppr/test6-fn-suppr-2.suppr",
335     "--no-default-suppression --no-show-locs --no-redundant",
336     "data/test-diff-suppr/test6-fn-suppr-report-3.txt",
337     "output/test-diff-suppr/test6-fn-suppr-report-3.txt",
338   },
339   {
340     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
341     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
342     "",
343     "",
344     "data/test-diff-suppr/test6-fn-suppr-3.suppr",
345     "--no-default-suppression --no-show-locs --no-redundant",
346     "data/test-diff-suppr/test6-fn-suppr-report-4.txt",
347     "output/test-diff-suppr/test6-fn-suppr-report-4.txt",
348   },
349   {
350     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
351     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
352     "",
353     "",
354     "",
355     "--no-default-suppression --no-show-locs --no-redundant",
356     "data/test-diff-suppr/test7-var-suppr-report-0.txt",
357     "output/test-diff-suppr/test7-var-suppr-report-0.txt"
358   },
359   {
360     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
361     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
362     "",
363     "",
364     "data/test-diff-suppr/test7-var-suppr-1.suppr",
365     "--no-default-suppression --no-show-locs --no-redundant",
366     "data/test-diff-suppr/test7-var-suppr-report-1.txt",
367     "output/test-diff-suppr/test7-var-suppr-report-1.txt"
368   },
369   {
370     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
371     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
372     "",
373     "",
374     "data/test-diff-suppr/test7-var-suppr-2.suppr",
375     "--no-default-suppression --no-show-locs --no-redundant",
376     "data/test-diff-suppr/test7-var-suppr-report-2.txt",
377     "output/test-diff-suppr/test7-var-suppr-report-2.txt"
378   },
379   {
380     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
381     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
382     "",
383     "",
384     "data/test-diff-suppr/test7-var-suppr-3.suppr",
385     "--no-default-suppression --no-show-locs --no-redundant",
386     "data/test-diff-suppr/test7-var-suppr-report-3.txt",
387     "output/test-diff-suppr/test7-var-suppr-report-3.txt"
388   },
389   {
390     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
391     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
392     "",
393     "",
394     "data/test-diff-suppr/test7-var-suppr-4.suppr",
395     "--no-default-suppression --no-show-locs --no-redundant",
396     "data/test-diff-suppr/test7-var-suppr-report-4.txt",
397     "output/test-diff-suppr/test7-var-suppr-report-4.txt"
398   },
399   {
400     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
401     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
402     "",
403     "",
404     "data/test-diff-suppr/test7-var-suppr-5.suppr",
405     "--no-default-suppression --no-show-locs --no-redundant",
406     "data/test-diff-suppr/test7-var-suppr-report-5.txt",
407     "output/test-diff-suppr/test7-var-suppr-report-5.txt"
408   },
409   {
410     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
411     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
412     "",
413     "",
414     "data/test-diff-suppr/test7-var-suppr-6.suppr",
415     "--no-default-suppression --no-show-locs --no-redundant",
416     "data/test-diff-suppr/test7-var-suppr-report-6.txt",
417     "output/test-diff-suppr/test7-var-suppr-report-6.txt"
418   },
419   {
420     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
421     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
422     "",
423     "",
424     "data/test-diff-suppr/test7-var-suppr-7.suppr",
425     "--no-default-suppression --no-show-locs --no-redundant",
426     "data/test-diff-suppr/test7-var-suppr-report-7.txt",
427     "output/test-diff-suppr/test7-var-suppr-report-7.txt"
428   },
429   {
430     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
431     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
432     "",
433     "",
434     "data/test-diff-suppr/test7-var-suppr-8.suppr",
435     "--no-default-suppression --no-show-locs --no-redundant",
436     "data/test-diff-suppr/test7-var-suppr-report-8.txt",
437     "output/test-diff-suppr/test7-var-suppr-report-8.txt"
438   },
439   {
440     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
441     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
442     "",
443     "",
444     "data/test-diff-suppr/test7-var-suppr-9.suppr",
445     "--no-default-suppression --no-show-locs --no-redundant",
446     "data/test-diff-suppr/test7-var-suppr-report-9.txt",
447     "output/test-diff-suppr/test7-var-suppr-report-9.txt"
448   },
449   {
450     "data/test-diff-suppr/libtest8-redundant-fn-v0.so",
451     "data/test-diff-suppr/libtest8-redundant-fn-v1.so",
452     "",
453     "",
454     "",
455     "--no-default-suppression --no-show-locs --no-redundant",
456     "data/test-diff-suppr/test8-redundant-fn-report-0.txt",
457     "output/test-diff-suppr/test8-redundant-fn-report-0.txt"
458   },
459   {
460     "data/test-diff-suppr/libtest8-redundant-fn-v0.so",
461     "data/test-diff-suppr/libtest8-redundant-fn-v1.so",
462     "",
463     "",
464     "",
465     "--no-default-suppression --no-show-locs --redundant",
466     "data/test-diff-suppr/test8-redundant-fn-report-1.txt",
467     "output/test-diff-suppr/test8-redundant-fn-report-1.txt"
468   },
469   {
470     "data/test-diff-suppr/libtest9-changed-parm-c-v0.so",
471     "data/test-diff-suppr/libtest9-changed-parm-c-v1.so",
472     "",
473     "",
474     "",
475     "--no-default-suppression --no-show-locs --no-redundant",
476     "data/test-diff-suppr/test9-changed-parm-c-report-0.txt",
477     "output/test-diff-suppr/est9-changed-parm-c-report-0.txt"
478   },
479   {
480     "data/test-diff-suppr/libtest9-changed-parm-c-v0.so",
481     "data/test-diff-suppr/libtest9-changed-parm-c-v1.so",
482     "",
483     "",
484     "",
485     "--no-default-suppression --no-show-locs --redundant",
486     "data/test-diff-suppr/test9-changed-parm-c-report-1.txt",
487     "output/test-diff-suppr/est9-changed-parm-c-report-1.txt"
488   },
489   {
490     "data/test-diff-suppr/libtest10-changed-parm-c-v0.so",
491     "data/test-diff-suppr/libtest10-changed-parm-c-v1.so",
492     "",
493     "",
494     "",
495     "--no-default-suppression --no-show-locs --no-redundant",
496     "data/test-diff-suppr/test10-changed-parm-c-report-0.txt",
497     "output/test-diff-suppr/test10-changed-parm-c-report-0.txt"
498   },
499   {
500     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
501     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
502     "",
503     "",
504     "",
505     "--no-default-suppression --no-show-locs --no-redundant",
506     "data/test-diff-suppr/test11-add-data-member-report-0.txt",
507     "output/test-diff-suppr/test11-add-data-member-report-0.txt"
508   },
509   {
510     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
511     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
512     "",
513     "",
514     "data/test-diff-suppr/test11-add-data-member-0.suppr",
515     "--no-default-suppression --no-show-locs --no-redundant",
516     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
517     "output/test-diff-suppr/test11-add-data-member-report-1_0.txt"
518   },
519   {
520     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
521     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
522     "",
523     "",
524     "data/test-diff-suppr/test11-add-data-member-1.suppr",
525     "--no-default-suppression --no-show-locs --no-redundant",
526     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
527     "output/test-diff-suppr/test11-add-data-member-report-1_1.txt"
528   },
529   {
530     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
531     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
532     "",
533     "",
534     "data/test-diff-suppr/test11-add-data-member-2.suppr",
535     "--no-default-suppression --no-show-locs --no-redundant",
536     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
537     "output/test-diff-suppr/test11-add-data-member-report-1_2.txt"
538   },
539   {
540     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
541     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
542     "",
543     "",
544     "data/test-diff-suppr/test11-add-data-member-3.suppr",
545     "--no-default-suppression --no-show-locs --no-redundant",
546     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
547     "output/test-diff-suppr/test11-add-data-member-report-1_3.txt"
548   },
549   {
550     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
551     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
552     "",
553     "",
554     "data/test-diff-suppr/test11-add-data-member-4.suppr",
555     "--no-default-suppression --no-show-locs --no-redundant",
556     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
557     "output/test-diff-suppr/test11-add-data-member-report-1_4.txt"
558   },
559   {
560     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
561     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
562     "",
563     "",
564     "",
565     "--no-default-suppression --no-show-locs --no-redundant",
566     "data/test-diff-suppr/test12-add-data-member-report-0.txt",
567     "output/test-diff-suppr/test12-add-data-member-report-0.txt"
568   },
569   {
570     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
571     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
572     "",
573     "",
574     "data/test-diff-suppr/test12-add-data-member-0.suppr",
575     "--no-default-suppression --no-show-locs --no-redundant",
576     "data/test-diff-suppr/test12-add-data-member-report-1.txt",
577     "output/test-diff-suppr/test12-add-data-member-report-1.txt"
578   },
579   {
580     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
581     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
582     "",
583     "",
584     "data/test-diff-suppr/test12-add-data-member-1.suppr",
585     "--no-default-suppression --no-show-locs --no-redundant",
586     "data/test-diff-suppr/test12-add-data-member-report-2.txt",
587     "output/test-diff-suppr/test12-add-data-member-report-2.txt"
588   },
589   {
590     "data/test-diff-suppr/libtest13-suppr-through-pointer-v0.so",
591     "data/test-diff-suppr/libtest13-suppr-through-pointer-v1.so",
592     "",
593     "",
594     "",
595     "--no-default-suppression --no-show-locs --no-redundant",
596     "data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt",
597     "output/test-diff-suppr/test13-suppr-through-pointer-report-0.txt"
598   },
599   {
600     "data/test-diff-suppr/libtest13-suppr-through-pointer-v0.so",
601     "data/test-diff-suppr/libtest13-suppr-through-pointer-v1.so",
602     "",
603     "",
604     "data/test-diff-suppr/test13-suppr-through-pointer-0.suppr",
605     "--no-default-suppression --no-show-locs --no-redundant",
606     "data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt",
607     "output/test-diff-suppr/test13-suppr-through-pointer-report-1.txt"
608   },
609   {
610     "data/test-diff-suppr/test14-suppr-non-redundant-v0.o",
611     "data/test-diff-suppr/test14-suppr-non-redundant-v1.o",
612     "",
613     "",
614     "",
615     "--no-default-suppression --no-show-locs --no-redundant",
616     "data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt",
617     "output/test-diff-suppr/test14-suppr-non-redundant-report-0.txt"
618   },
619   {
620     "data/test-diff-suppr/test14-suppr-non-redundant-v0.o",
621     "data/test-diff-suppr/test14-suppr-non-redundant-v1.o",
622     "",
623     "",
624     "data/test-diff-suppr/test14-suppr-non-redundant-0.suppr",
625     "--no-default-suppression --no-show-locs --no-redundant",
626     "data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt",
627     "output/test-diff-suppr/test14-suppr-non-redundant-report-1.txt"
628   },
629   {
630     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
631     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
632     "",
633     "",
634     "",
635     "--no-default-suppression --no-show-locs --no-redundant",
636     "data/test-diff-suppr/test15-suppr-added-fn-report-0.txt",
637     "output/test-diff-suppr/test15-suppr-added-fn-report-0.txt"
638   },
639   {
640     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
641     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
642     "",
643     "",
644     "data/test-diff-suppr/test15-suppr-added-fn-0.suppr",
645     "--no-default-suppression --no-show-locs --no-redundant",
646     "data/test-diff-suppr/test15-suppr-added-fn-report-1.txt",
647     "output/test-diff-suppr/test15-suppr-added-fn-report-1.txt"
648   },
649   {
650     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
651     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
652     "",
653     "",
654     "data/test-diff-suppr/test15-suppr-added-fn-1.suppr",
655     "--no-default-suppression --no-show-locs --no-redundant",
656     "data/test-diff-suppr/test15-suppr-added-fn-report-2.txt",
657     "output/test-diff-suppr/test15-suppr-added-fn-report-2.txt"
658   },
659   {
660     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
661     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
662     "",
663     "",
664     "data/test-diff-suppr/test15-suppr-added-fn-2.suppr",
665     "--no-default-suppression --no-show-locs --no-redundant",
666     "data/test-diff-suppr/test15-suppr-added-fn-report-3.txt",
667     "output/test-diff-suppr/test15-suppr-added-fn-report-3.txt"
668   },
669   {
670     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
671     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
672     "",
673     "",
674     "data/test-diff-suppr/test15-suppr-added-fn-3.suppr",
675     "--no-default-suppression --no-show-locs --no-redundant",
676     "data/test-diff-suppr/test15-suppr-added-fn-report-4.txt",
677     "output/test-diff-suppr/test15-suppr-added-fn-report-4.txt"
678   },
679   {
680     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
681     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
682     "",
683     "",
684     "data/test-diff-suppr/test15-suppr-added-fn-4.suppr",
685     "--no-default-suppression --no-show-locs --no-redundant",
686     "data/test-diff-suppr/test15-suppr-added-fn-report-5.txt",
687     "output/test-diff-suppr/test15-suppr-added-fn-report-5.txt"
688   },
689   {
690     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
691     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
692     "",
693     "",
694     "",
695     "--no-default-suppression --no-show-locs --no-redundant",
696     "data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt",
697     "output/test-diff-suppr/test16-suppr-removed-fn-report-0.txt"
698   },
699   {
700     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
701     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
702     "",
703     "",
704     "data/test-diff-suppr/test16-suppr-removed-fn-0.suppr",
705     "--no-default-suppression --no-show-locs --no-redundant",
706     "data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt",
707     "output/test-diff-suppr/test16-suppr-removed-fn-report-1.txt"
708   },
709   {
710     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
711     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
712     "",
713     "",
714     "data/test-diff-suppr/test16-suppr-removed-fn-1.suppr",
715     "--no-default-suppression --no-show-locs --no-redundant",
716     "data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt",
717     "output/test-diff-suppr/test16-suppr-removed-fn-report-2.txt"
718   },
719   {
720     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
721     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
722     "",
723     "",
724     "data/test-diff-suppr/test16-suppr-removed-fn-2.suppr",
725     "--no-default-suppression --no-show-locs --no-redundant",
726     "data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt",
727     "output/test-diff-suppr/test16-suppr-removed-fn-report-3.txt"
728   },
729   {
730     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
731     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
732     "",
733     "",
734     "data/test-diff-suppr/test16-suppr-removed-fn-3.suppr",
735     "--no-default-suppression --no-show-locs --no-redundant",
736     "data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt",
737     "output/test-diff-suppr/test16-suppr-removed-fn-report-4.txt"
738   },
739   {
740     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
741     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
742     "",
743     "",
744     "data/test-diff-suppr/test16-suppr-removed-fn-4.suppr",
745     "--no-default-suppression --no-show-locs --no-redundant",
746     "data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt",
747     "output/test-diff-suppr/test16-suppr-removed-fn-report-5.txt"
748   },
749   {
750     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
751     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
752     "",
753     "",
754     "",
755     "--no-default-suppression --no-show-locs --no-redundant",
756     "data/test-diff-suppr/test17-suppr-added-var-report-0.txt",
757     "output/test-diff-suppr/test17-suppr-added-var-report-0.txt"
758   },
759   {
760     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
761     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
762     "",
763     "",
764     "data/test-diff-suppr/test17-suppr-added-var-0.suppr",
765     "--no-default-suppression --no-show-locs --no-redundant",
766     "data/test-diff-suppr/test17-suppr-added-var-report-1.txt",
767     "output/test-diff-suppr/test17-suppr-added-var-report-1.txt"
768   },
769   {
770     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
771     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
772     "",
773     "",
774     "data/test-diff-suppr/test17-suppr-added-var-1.suppr",
775     "--no-default-suppression --no-show-locs --no-redundant",
776     "data/test-diff-suppr/test17-suppr-added-var-report-2.txt",
777     "output/test-diff-suppr/test17-suppr-added-var-report-2.txt"
778   },
779   {
780     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
781     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
782     "",
783     "",
784     "data/test-diff-suppr/test17-suppr-added-var-2.suppr",
785     "--no-default-suppression --no-show-locs --no-redundant",
786     "data/test-diff-suppr/test17-suppr-added-var-report-3.txt",
787     "output/test-diff-suppr/test17-suppr-added-var-report-3.txt"
788   },
789   {
790     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
791     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
792     "",
793     "",
794     "data/test-diff-suppr/test17-suppr-added-var-3.suppr",
795     "--no-default-suppression --no-show-locs --no-redundant",
796     "data/test-diff-suppr/test17-suppr-added-var-report-4.txt",
797     "output/test-diff-suppr/test17-suppr-added-var-report-4.txt"
798   },
799   {
800     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
801     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
802     "",
803     "",
804     "data/test-diff-suppr/test17-suppr-added-var-4.suppr",
805     "--no-default-suppression --no-show-locs --no-redundant",
806     "data/test-diff-suppr/test17-suppr-added-var-report-5.txt",
807     "output/test-diff-suppr/test17-suppr-added-var-report-5.txt"
808   },
809   {
810     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
811     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
812     "",
813     "",
814     "",
815     "--no-default-suppression --no-show-locs --no-redundant",
816     "data/test-diff-suppr/test18-suppr-removed-var-report-0.txt",
817     "output/test-diff-suppr/test18-suppr-removed-var-report-0.txt"
818   },
819   {
820     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
821     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
822     "",
823     "",
824     "data/test-diff-suppr/test18-suppr-removed-var-0.suppr",
825     "--no-default-suppression --no-show-locs --no-redundant",
826     "data/test-diff-suppr/test18-suppr-removed-var-report-1.txt",
827     "output/test-diff-suppr/test18-suppr-removed-var-report-1.txt"
828   },
829   {
830     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
831     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
832     "",
833     "",
834     "data/test-diff-suppr/test18-suppr-removed-var-1.suppr",
835     "--no-default-suppression --no-show-locs --no-redundant",
836     "data/test-diff-suppr/test18-suppr-removed-var-report-2.txt",
837     "output/test-diff-suppr/test18-suppr-removed-var-report-2.txt"
838   },
839   {
840     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
841     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
842     "",
843     "",
844     "data/test-diff-suppr/test18-suppr-removed-var-2.suppr",
845     "--no-default-suppression --no-show-locs --no-redundant",
846     "data/test-diff-suppr/test18-suppr-removed-var-report-3.txt",
847     "output/test-diff-suppr/test18-suppr-removed-var-report-3.txt"
848   },
849   {
850     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
851     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
852     "",
853     "",
854     "data/test-diff-suppr/test18-suppr-removed-var-3.suppr",
855     "--no-default-suppression --no-show-locs --no-redundant",
856     "data/test-diff-suppr/test18-suppr-removed-var-report-4.txt",
857     "output/test-diff-suppr/test18-suppr-removed-var-report-4.txt"
858   },
859   {
860     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
861     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
862     "",
863     "",
864     "data/test-diff-suppr/test18-suppr-removed-var-4.suppr",
865     "--no-default-suppression --no-show-locs --no-redundant",
866     "data/test-diff-suppr/test18-suppr-removed-var-report-5.txt",
867     "output/test-diff-suppr/test18-suppr-removed-var-report-5.txt"
868   },
869   {
870     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
871     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
872     "",
873     "",
874     "",
875     "--no-default-suppression --no-show-locs --no-redundant",
876     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt",
877     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt"
878   },
879   {
880     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
881     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
882     "",
883     "",
884     "data/test-diff-suppr/test19-suppr-added-fn-sym-0.suppr",
885     "--no-default-suppression --no-show-locs --no-redundant",
886     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt",
887     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt"
888   },
889   {
890     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
891     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
892     "",
893     "",
894     "data/test-diff-suppr/test19-suppr-added-fn-sym-1.suppr",
895     "--no-default-suppression --no-show-locs --no-redundant",
896     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt",
897     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt"
898   },
899   {
900     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
901     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
902     "",
903     "",
904     "data/test-diff-suppr/test19-suppr-added-fn-sym-2.suppr",
905     "--no-default-suppression --no-show-locs --no-redundant",
906     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt",
907     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt"
908   },
909   {
910     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
911     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
912     "",
913     "",
914     "data/test-diff-suppr/test19-suppr-added-fn-sym-3.suppr",
915     "--no-default-suppression --no-show-locs --no-redundant",
916     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt",
917     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt"
918   },
919   {
920     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
921     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
922     "",
923     "",
924     "data/test-diff-suppr/test19-suppr-added-fn-sym-4.suppr",
925     "--no-default-suppression --no-show-locs --no-redundant",
926     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt",
927     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt"
928   },
929   {
930     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
931     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
932     "",
933     "",
934     "",
935     "--no-default-suppression --no-show-locs --no-redundant",
936     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt",
937     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt"
938   },
939   {
940     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
941     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
942     "",
943     "",
944     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt",
945     "--no-default-suppression --no-show-locs --no-redundant",
946     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt",
947     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt"
948   },
949   {
950     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
951     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
952     "",
953     "",
954     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt",
955     "--no-default-suppression --no-show-locs --no-redundant",
956     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt",
957     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt"
958   },
959   {
960     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
961     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
962     "",
963     "",
964     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt",
965     "--no-default-suppression --no-show-locs --no-redundant",
966     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt",
967     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt"
968   },
969   {
970     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
971     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
972     "",
973     "",
974     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt",
975     "--no-default-suppression --no-show-locs --no-redundant",
976     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt",
977     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt"
978   },
979   {
980     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
981     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
982     "",
983     "",
984     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt",
985     "--no-default-suppression --no-show-locs --no-redundant",
986     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt",
987     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt"
988   },
989   {
990     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
991     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
992     "",
993     "",
994     "",
995     "--no-default-suppression --no-show-locs --no-redundant",
996     "data/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt",
997     "output/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt"
998   },
999   {
1000     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1001     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1002     "",
1003     "",
1004     "data/test-diff-suppr/test21-suppr-added-var-sym-0.suppr",
1005     "--no-default-suppression --no-show-locs --no-redundant",
1006     "data/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt",
1007     "output/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt"
1008   },
1009   {
1010     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1011     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1012     "",
1013     "",
1014     "data/test-diff-suppr/test21-suppr-added-var-sym-1.suppr",
1015     "--no-default-suppression --no-show-locs --no-redundant",
1016     "data/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt",
1017     "output/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt"
1018   },
1019   {
1020     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1021     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1022     "",
1023     "",
1024     "data/test-diff-suppr/test21-suppr-added-var-sym-2.suppr",
1025     "--no-default-suppression --no-show-locs --no-redundant",
1026     "data/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt",
1027     "output/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt"
1028   },
1029   {
1030     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1031     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1032     "",
1033     "",
1034     "data/test-diff-suppr/test21-suppr-added-var-sym-3.suppr",
1035     "--no-default-suppression --no-show-locs --no-redundant",
1036     "data/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt",
1037     "output/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt"
1038   },
1039   {
1040     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1041     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1042     "",
1043     "",
1044     "data/test-diff-suppr/test21-suppr-added-var-sym-4.suppr",
1045     "--no-default-suppression --no-show-locs --no-redundant",
1046     "data/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt",
1047     "output/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt"
1048   },
1049   {
1050     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1051     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1052     "",
1053     "",
1054     "",
1055     "--no-default-suppression --no-show-locs --no-redundant",
1056     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt",
1057     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt"
1058   },
1059   {
1060     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1061     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1062     "",
1063     "",
1064     "data/test-diff-suppr/test22-suppr-removed-var-sym-0.suppr",
1065     "--no-default-suppression --no-show-locs --no-redundant",
1066     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt",
1067     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt"
1068   },
1069   {
1070     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1071     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1072     "",
1073     "",
1074     "data/test-diff-suppr/test22-suppr-removed-var-sym-1.suppr",
1075     "--no-default-suppression --no-show-locs --no-redundant",
1076     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt",
1077     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt"
1078   },
1079   {
1080     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1081     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1082     "",
1083     "",
1084     "data/test-diff-suppr/test22-suppr-removed-var-sym-2.suppr",
1085     "--no-default-suppression --no-show-locs --no-redundant",
1086     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt",
1087     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt"
1088   },
1089   {
1090     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1091     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1092     "",
1093     "",
1094     "data/test-diff-suppr/test22-suppr-removed-var-sym-3.suppr",
1095     "--no-default-suppression --no-show-locs --no-redundant",
1096     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt",
1097     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt"
1098   },
1099   {
1100     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1101     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1102     "",
1103     "",
1104     "data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr",
1105     "--no-default-suppression --no-show-locs --no-redundant",
1106     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt",
1107     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt"
1108   },
1109   {
1110     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1111     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1112     "",
1113     "",
1114     "",
1115     "--no-default-suppression --no-show-locs --no-redundant",
1116     "data/test-diff-suppr/test23-alias-filter-report-0.txt",
1117     "output/test-diff-suppr/test23-alias-filter-report-0.txt"
1118   },
1119   {
1120     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1121     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1122     "",
1123     "",
1124     "data/test-diff-suppr/test23-alias-filter-0.suppr",
1125     "--no-default-suppression --no-show-locs --no-redundant",
1126     "data/test-diff-suppr/test23-alias-filter-report-1.txt",
1127     "output/test-diff-suppr/test23-alias-filter-report-1.txt"
1128   },
1129   {
1130     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1131     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1132     "",
1133     "",
1134     "data/test-diff-suppr/test23-alias-filter-1.suppr",
1135     "--no-default-suppression --no-show-locs --no-redundant",
1136     "data/test-diff-suppr/test23-alias-filter-report-2.txt",
1137     "output/test-diff-suppr/test23-alias-filter-report-2.txt"
1138   },
1139   {
1140     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1141     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1142     "",
1143     "",
1144     "data/test-diff-suppr/test23-alias-filter-2.suppr",
1145     "--no-default-suppression --no-show-locs --no-redundant",
1146     "data/test-diff-suppr/test23-alias-filter-report-3.txt",
1147     "output/test-diff-suppr/test23-alias-filter-report-3.txt"
1148   },
1149   {
1150     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1151     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1152     "",
1153     "",
1154     "data/test-diff-suppr/test23-alias-filter-3.suppr",
1155     "--no-default-suppression --no-show-locs --no-redundant",
1156     "data/test-diff-suppr/test23-alias-filter-report-4.txt",
1157     "output/test-diff-suppr/test23-alias-filter-report-4.txt"
1158   },
1159   {
1160     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1161     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1162     "",
1163     "",
1164     "data/test-diff-suppr/test23-alias-filter-4.suppr",
1165     "--no-default-suppression --no-show-locs --no-redundant",
1166     "data/test-diff-suppr/test23-alias-filter-report-5.txt",
1167     "output/test-diff-suppr/test23-alias-filter-report-5.txt"
1168   },
1169   {
1170     "data/test-diff-suppr/libtest24-soname-v0.so",
1171     "data/test-diff-suppr/libtest24-soname-v1.so",
1172     "",
1173     "",
1174     "data/test-diff-suppr/test24-soname-suppr-0.txt",
1175     "--no-default-suppression --no-show-locs --no-redundant",
1176     "data/test-diff-suppr/test24-soname-report-0.txt",
1177     "output/test-diff-suppr/test24-soname-report-0.txt"
1178   },
1179   {
1180     "data/test-diff-suppr/libtest24-soname-v0.so",
1181     "data/test-diff-suppr/libtest24-soname-v1.so",
1182     "",
1183     "",
1184     "data/test-diff-suppr/test24-soname-suppr-1.txt",
1185     "--no-default-suppression --no-show-locs --no-redundant",
1186     "data/test-diff-suppr/test24-soname-report-1.txt",
1187     "output/test-diff-suppr/test24-soname-report-1.txt"
1188   },
1189   {
1190     "data/test-diff-suppr/libtest24-soname-v0.so",
1191     "data/test-diff-suppr/libtest24-soname-v1.so",
1192     "",
1193     "",
1194     "data/test-diff-suppr/test24-soname-suppr-2.txt",
1195     "--no-default-suppression --no-show-locs --no-redundant",
1196     "data/test-diff-suppr/test24-soname-report-2.txt",
1197     "output/test-diff-suppr/test24-soname-report-2.txt"
1198   },
1199   {
1200     "data/test-diff-suppr/libtest24-soname-v0.so",
1201     "data/test-diff-suppr/libtest24-soname-v1.so",
1202     "",
1203     "",
1204     "data/test-diff-suppr/test24-soname-suppr-3.txt",
1205     "--no-default-suppression --no-show-locs --no-redundant",
1206     "data/test-diff-suppr/test24-soname-report-3.txt",
1207     "output/test-diff-suppr/test24-soname-report-3.txt"
1208   },
1209   {
1210     "data/test-diff-suppr/libtest24-soname-v0.so",
1211     "data/test-diff-suppr/libtest24-soname-v1.so",
1212     "",
1213     "",
1214     "data/test-diff-suppr/test24-soname-suppr-4.txt",
1215     "--no-default-suppression --no-show-locs --no-redundant",
1216     "data/test-diff-suppr/test24-soname-report-4.txt",
1217     "output/test-diff-suppr/test24-soname-report-4.txt"
1218   },
1219   {
1220     "data/test-diff-suppr/libtest24-soname-v0.so",
1221     "data/test-diff-suppr/libtest24-soname-v1.so",
1222     "",
1223     "",
1224     "data/test-diff-suppr/test24-soname-suppr-5.txt",
1225     "--no-default-suppression --no-show-locs --no-redundant",
1226     "data/test-diff-suppr/test24-soname-report-5.txt",
1227     "output/test-diff-suppr/test24-soname-report-5.txt"
1228   },
1229   {
1230     "data/test-diff-suppr/libtest24-soname-v0.so",
1231     "data/test-diff-suppr/libtest24-soname-v1.so",
1232     "",
1233     "",
1234     "data/test-diff-suppr/test24-soname-suppr-6.txt",
1235     "--no-default-suppression --no-show-locs --no-redundant",
1236     "data/test-diff-suppr/test24-soname-report-6.txt",
1237     "output/test-diff-suppr/test24-soname-report-6.txt"
1238   },
1239   {
1240     "data/test-diff-suppr/libtest24-soname-v0.so",
1241     "data/test-diff-suppr/libtest24-soname-v1.so",
1242     "",
1243     "",
1244     "data/test-diff-suppr/test24-soname-suppr-7.txt",
1245     "--no-default-suppression --no-show-locs --no-redundant",
1246     "data/test-diff-suppr/test24-soname-report-7.txt",
1247     "output/test-diff-suppr/test24-soname-report-7.txt"
1248   },
1249   {
1250     "data/test-diff-suppr/libtest24-soname-v0.so",
1251     "data/test-diff-suppr/libtest24-soname-v1.so",
1252     "",
1253     "",
1254     "data/test-diff-suppr/test24-soname-suppr-8.txt",
1255     "--no-default-suppression --no-show-locs --no-redundant",
1256     "data/test-diff-suppr/test24-soname-report-8.txt",
1257     "output/test-diff-suppr/test24-soname-report-8.txt"
1258   },
1259   {
1260     "data/test-diff-suppr/libtest24-soname-v0.so",
1261     "data/test-diff-suppr/libtest24-soname-v1.so",
1262     "",
1263     "",
1264     "data/test-diff-suppr/test24-soname-suppr-9.txt",
1265     "--no-default-suppression --no-show-locs --no-redundant",
1266     "data/test-diff-suppr/test24-soname-report-9.txt",
1267     "output/test-diff-suppr/test24-soname-report-9.txt"
1268   },
1269   {
1270     "data/test-diff-suppr/libtest24-soname-v0.so",
1271     "data/test-diff-suppr/libtest24-soname-v1.so",
1272     "",
1273     "",
1274     "data/test-diff-suppr/test24-soname-suppr-10.txt",
1275     "--no-default-suppression --no-show-locs --no-redundant",
1276     "data/test-diff-suppr/test24-soname-report-10.txt",
1277     "output/test-diff-suppr/test24-soname-report-10.txt"
1278   },
1279   {
1280     "data/test-diff-suppr/libtest24-soname-v0.so",
1281     "data/test-diff-suppr/libtest24-soname-v1.so",
1282     "",
1283     "",
1284     "data/test-diff-suppr/test24-soname-suppr-11.txt",
1285     "--no-default-suppression --no-show-locs --no-redundant",
1286     "data/test-diff-suppr/test24-soname-report-11.txt",
1287     "output/test-diff-suppr/test24-soname-report-11.txt"
1288   },
1289   {
1290     "data/test-diff-suppr/libtest24-soname-v0.so",
1291     "data/test-diff-suppr/libtest24-soname-v1.so",
1292     "",
1293     "",
1294     "data/test-diff-suppr/test24-soname-suppr-12.txt",
1295     "--no-default-suppression --no-show-locs --no-redundant",
1296     "data/test-diff-suppr/test24-soname-report-12.txt",
1297     "output/test-diff-suppr/test24-soname-report-12.txt"
1298   },
1299   {
1300     "data/test-diff-suppr/libtest24-soname-v0.so",
1301     "data/test-diff-suppr/libtest24-soname-v1.so",
1302     "",
1303     "",
1304     "data/test-diff-suppr/test24-soname-suppr-13.txt",
1305     "--no-default-suppression --no-show-locs --no-redundant",
1306     "data/test-diff-suppr/test24-soname-report-13.txt",
1307     "output/test-diff-suppr/test24-soname-report-13.txt"
1308   },
1309   {
1310     "data/test-diff-suppr/libtest24-soname-v0.so",
1311     "data/test-diff-suppr/libtest24-soname-v1.so",
1312     "",
1313     "",
1314     "data/test-diff-suppr/test24-soname-suppr-14.txt",
1315     "--no-default-suppression --no-show-locs --no-redundant",
1316     "data/test-diff-suppr/test24-soname-report-14.txt",
1317     "output/test-diff-suppr/test24-soname-report-14.txt"
1318   },
1319   {
1320     "data/test-diff-suppr/libtest24-soname-v0.so",
1321     "data/test-diff-suppr/libtest24-soname-v1.so",
1322     "",
1323     "",
1324     "data/test-diff-suppr/test24-soname-suppr-15.txt",
1325     "--no-default-suppression --no-show-locs --no-redundant",
1326     "data/test-diff-suppr/test24-soname-report-15.txt",
1327     "output/test-diff-suppr/test24-soname-report-15.txt"
1328   },
1329   {
1330     "data/test-diff-suppr/libtest24-soname-v0.so",
1331     "data/test-diff-suppr/libtest24-soname-v1.so",
1332     "",
1333     "",
1334     "data/test-diff-suppr/test24-soname-suppr-16.txt",
1335     "--no-default-suppression --no-show-locs --no-redundant",
1336     "data/test-diff-suppr/test24-soname-report-16.txt",
1337     "output/test-diff-suppr/test24-soname-report-16.txt"
1338   },
1339   {
1340     "data/test-diff-suppr/libtest25-typedef-v0.so",
1341     "data/test-diff-suppr/libtest25-typedef-v1.so",
1342     "",
1343     "",
1344     "",
1345     "--no-default-suppression --no-show-locs --no-redundant",
1346     "data/test-diff-suppr/test25-typedef-report-0.txt",
1347     "output/test-diff-suppr/test25-typedef-report-0.txt"
1348   },
1349   {
1350     "data/test-diff-suppr/libtest25-typedef-v0.so",
1351     "data/test-diff-suppr/libtest25-typedef-v1.so",
1352     "",
1353     "",
1354     "data/test-diff-suppr/test25-typedef-suppr-0.txt",
1355     "--no-default-suppression --no-show-locs --no-redundant",
1356     "data/test-diff-suppr/test25-typedef-report-1.txt",
1357     "output/test-diff-suppr/test25-typedef-report-1.txt"
1358   },
1359   {
1360     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1361     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1362     "",
1363     "",
1364     "",
1365     "--no-default-suppression --no-show-locs --no-redundant",
1366     "data/test-diff-suppr/test26-loc-suppr-report-0.txt",
1367     "output/test-diff-suppr/test26-loc-suppr-report-0.txt"
1368   },
1369   {
1370     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1371     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1372     "",
1373     "",
1374     "data/test-diff-suppr/test26-loc-suppr-0.suppr",
1375     "--no-default-suppression --no-show-locs --no-redundant",
1376     "data/test-diff-suppr/test26-loc-suppr-report-1.txt",
1377     "output/test-diff-suppr/test26-loc-suppr-report-1.txt"
1378   },
1379   {
1380     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1381     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1382     "",
1383     "",
1384     "data/test-diff-suppr/test26-loc-suppr-1.suppr",
1385     "--no-default-suppression --no-show-locs --no-redundant",
1386     "data/test-diff-suppr/test26-loc-suppr-report-2.txt",
1387     "output/test-diff-suppr/test26-loc-suppr-report-2.txt"
1388   },
1389   {
1390     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1391     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1392     "",
1393     "",
1394     "data/test-diff-suppr/test26-loc-suppr-2.suppr",
1395     "--no-default-suppression --no-show-locs --no-redundant",
1396     "data/test-diff-suppr/test26-loc-suppr-report-3.txt",
1397     "output/test-diff-suppr/test26-loc-suppr-report-3.txt"
1398   },
1399   {
1400     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1401     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1402     "",
1403     "",
1404     "",
1405     "--no-default-suppression --no-show-locs --no-redundant",
1406     "data/test-diff-suppr/test27-add-aliased-function-report-0.txt",
1407     "output/test-diff-suppr/test27-add-aliased-function-report-0.txt"
1408   },
1409   {
1410     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1411     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1412     "",
1413     "",
1414     "data/test-diff-suppr/test27-add-aliased-function-0.suppr",
1415     "--no-default-suppression --no-show-locs --no-redundant",
1416     "data/test-diff-suppr/test27-add-aliased-function-report-1.txt",
1417     "output/test-diff-suppr/test27-add-aliased-function-report-1.txt"
1418   },
1419   {
1420     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1421     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1422     "",
1423     "",
1424     "data/test-diff-suppr/test27-add-aliased-function-1.suppr",
1425     "--no-default-suppression --no-show-locs --no-redundant",
1426     "data/test-diff-suppr/test27-add-aliased-function-report-2.txt",
1427     "output/test-diff-suppr/test27-add-aliased-function-report-2.txt"
1428   },
1429   {
1430     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1431     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1432     "",
1433     "",
1434     "data/test-diff-suppr/test27-add-aliased-function-2.suppr",
1435     "--no-default-suppression --no-show-locs --no-redundant",
1436     "data/test-diff-suppr/test27-add-aliased-function-report-3.txt",
1437     "output/test-diff-suppr/test27-add-aliased-function-report-3.txt"
1438   },
1439   {
1440     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1441     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1442     "",
1443     "",
1444     "data/test-diff-suppr/test27-add-aliased-function-3.suppr",
1445     "--no-default-suppression --no-show-locs --no-redundant",
1446     "data/test-diff-suppr/test27-add-aliased-function-report-4.txt",
1447     "output/test-diff-suppr/test27-add-aliased-function-report-4.txt"
1448   },
1449   {
1450     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1451     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1452     "",
1453     "",
1454     "data/test-diff-suppr/test27-add-aliased-function-4.suppr",
1455     "--no-default-suppression --no-show-locs --no-redundant",
1456     "data/test-diff-suppr/test27-add-aliased-function-report-5.txt",
1457     "output/test-diff-suppr/test27-add-aliased-function-report-5.txt"
1458   },
1459   {
1460     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1461     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1462     "",
1463     "",
1464     "",
1465     "--no-default-suppression --no-show-locs --no-redundant",
1466     "data/test-diff-suppr/test28-add-aliased-function-report-0.txt",
1467     "output/test-diff-suppr/test28-add-aliased-function-report-0.txt"
1468   },
1469   {
1470     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1471     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1472     "",
1473     "",
1474     "data/test-diff-suppr/test28-add-aliased-function-0.suppr",
1475     "--no-default-suppression --no-show-locs --no-redundant",
1476     "data/test-diff-suppr/test28-add-aliased-function-report-1.txt",
1477     "output/test-diff-suppr/test28-add-aliased-function-report-1.txt"
1478   },
1479   {
1480     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1481     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1482     "",
1483     "",
1484     "data/test-diff-suppr/test28-add-aliased-function-1.suppr",
1485     "--no-default-suppression --no-show-locs --no-redundant",
1486     "data/test-diff-suppr/test28-add-aliased-function-report-2.txt",
1487     "output/test-diff-suppr/test28-add-aliased-function-report-2.txt"
1488   },
1489   {
1490     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1491     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1492     "",
1493     "",
1494     "data/test-diff-suppr/test28-add-aliased-function-2.suppr",
1495     "--no-default-suppression --no-show-locs --no-redundant",
1496     "data/test-diff-suppr/test28-add-aliased-function-report-3.txt",
1497     "output/test-diff-suppr/test28-add-aliased-function-report-3.txt"
1498   },
1499   {
1500     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1501     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1502     "",
1503     "",
1504     "data/test-diff-suppr/test28-add-aliased-function-3.suppr",
1505     "--no-default-suppression --no-show-locs --no-redundant",
1506     "data/test-diff-suppr/test28-add-aliased-function-report-4.txt",
1507     "output/test-diff-suppr/test28-add-aliased-function-report-4.txt"
1508   },
1509   {
1510     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1511     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1512     "",
1513     "",
1514     "data/test-diff-suppr/test28-add-aliased-function-4.suppr",
1515     "--no-default-suppression --no-show-locs --no-redundant",
1516     "data/test-diff-suppr/test28-add-aliased-function-report-5.txt",
1517     "output/test-diff-suppr/test28-add-aliased-function-report-5.txt"
1518   },
1519   {
1520     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1521     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1522     "",
1523     "",
1524     "data/test-diff-suppr/test28-add-aliased-function-5.suppr",
1525     "--no-default-suppression --no-show-locs --no-redundant",
1526     "data/test-diff-suppr/test28-add-aliased-function-report-6.txt",
1527     "output/test-diff-suppr/test28-add-aliased-function-report-6.txt"
1528   },
1529   {
1530     "data/test-diff-suppr/libtest29-soname-v0.so",
1531     "data/test-diff-suppr/libtest29-soname-v1.so",
1532     "",
1533     "",
1534     "data/test-diff-suppr/test29-suppr-0.txt",
1535     "--no-default-suppression --no-show-locs --no-redundant",
1536     "data/test-diff-suppr/test29-soname-report-0.txt",
1537     "output/test-diff-suppr/test29-soname-report-0.txt"
1538   },
1539   {
1540     "data/test-diff-suppr/libtest29-soname-v0.so",
1541     "data/test-diff-suppr/libtest29-soname-v1.so",
1542     "",
1543     "",
1544     "data/test-diff-suppr/test29-suppr-1.txt",
1545     "--no-default-suppression --no-show-locs --no-redundant",
1546     "data/test-diff-suppr/test29-soname-report-1.txt",
1547     "output/test-diff-suppr/test29-soname-report-1.txt"
1548   },
1549   {
1550     "data/test-diff-suppr/libtest29-soname-v0.so",
1551     "data/test-diff-suppr/libtest29-soname-v1.so",
1552     "",
1553     "",
1554     "data/test-diff-suppr/test29-suppr-2.txt",
1555     "--no-default-suppression --no-show-locs --no-redundant",
1556     "data/test-diff-suppr/test29-soname-report-2.txt",
1557     "output/test-diff-suppr/test29-soname-report-2.txt"
1558   },
1559   {
1560     "data/test-diff-suppr/libtest29-soname-v0.so",
1561     "data/test-diff-suppr/libtest29-soname-v1.so",
1562     "",
1563     "",
1564     "data/test-diff-suppr/test29-suppr-3.txt",
1565     "--no-default-suppression --no-show-locs --no-redundant",
1566     "data/test-diff-suppr/test29-soname-report-3.txt",
1567     "output/test-diff-suppr/test29-soname-report-3.txt"
1568   },
1569   {
1570     "data/test-diff-suppr/libtest29-soname-v0.so",
1571     "data/test-diff-suppr/libtest29-soname-v1.so",
1572     "",
1573     "",
1574     "data/test-diff-suppr/test29-suppr-4.txt",
1575     "--no-default-suppression --no-show-locs --no-redundant",
1576     "data/test-diff-suppr/test29-soname-report-4.txt",
1577     "output/test-diff-suppr/test29-soname-report-4.txt"
1578   },
1579   {
1580     "data/test-diff-suppr/libtest29-soname-v0.so",
1581     "data/test-diff-suppr/libtest29-soname-v1.so",
1582     "",
1583     "",
1584     "data/test-diff-suppr/test29-suppr-5.txt",
1585     "--no-default-suppression --no-show-locs --no-redundant",
1586     "data/test-diff-suppr/test29-soname-report-5.txt",
1587     "output/test-diff-suppr/test29-soname-report-5.txt"
1588   },
1589   {
1590     "data/test-diff-suppr/libtest29-soname-v0.so",
1591     "data/test-diff-suppr/libtest29-soname-v1.so",
1592     "",
1593     "",
1594     "data/test-diff-suppr/test29-suppr-6.txt",
1595     "--no-default-suppression --no-show-locs --no-redundant",
1596     "data/test-diff-suppr/test29-soname-report-6.txt",
1597     "output/test-diff-suppr/test29-soname-report-6.txt"
1598   },
1599   {
1600     "data/test-diff-suppr/libtest29-soname-v0.so",
1601     "data/test-diff-suppr/libtest29-soname-v1.so",
1602     "",
1603     "",
1604     "data/test-diff-suppr/test29-suppr-7.txt",
1605     "--no-default-suppression --no-show-locs --no-redundant",
1606     "data/test-diff-suppr/test29-soname-report-7.txt",
1607     "output/test-diff-suppr/test29-soname-report-7.txt"
1608   },
1609   {
1610     "data/test-diff-suppr/libtest29-soname-v0.so",
1611     "data/test-diff-suppr/libtest29-soname-v1.so",
1612     "",
1613     "",
1614     "data/test-diff-suppr/test29-suppr-8.txt",
1615     "--no-default-suppression --no-show-locs --no-redundant",
1616     "data/test-diff-suppr/test29-soname-report-8.txt",
1617     "output/test-diff-suppr/test29-soname-report-8.txt"
1618   },
1619   {
1620     "data/test-diff-suppr/test30-pub-lib-v0.so",
1621     "data/test-diff-suppr/test30-pub-lib-v1.so",
1622     "",
1623     "",
1624     "",
1625     "--no-default-suppression",
1626     "data/test-diff-suppr/test30-report-0.txt",
1627     "output/test-diff-suppr/test30-report-0.txt"
1628   },
1629   {
1630     "data/test-diff-suppr/test30-pub-lib-v0.so",
1631     "data/test-diff-suppr/test30-pub-lib-v1.so",
1632     "data/test-diff-suppr/test30-include-dir-v0",
1633     "data/test-diff-suppr/test30-include-dir-v1",
1634     "",
1635     "--no-default-suppression",
1636     "data/test-diff-suppr/test30-report-1.txt",
1637     "output/test-diff-suppr/test30-report-1.txt"
1638   },
1639   {
1640     "data/test-diff-suppr/libtest31-v0.so",
1641     "data/test-diff-suppr/libtest31-v1.so",
1642     "",
1643     "",
1644     "data/test-diff-suppr/libtest31.suppr",
1645     "--no-default-suppression --no-show-locs --no-redundant",
1646     "data/test-diff-suppr/test31-report-0.txt",
1647     "output/test-diff-suppr/test31-report-0.txt"
1648   },
1649   {
1650     "data/test-diff-suppr/libtest31-v0.so",
1651     "data/test-diff-suppr/libtest31-v1.so",
1652     "",
1653     "",
1654     "",
1655     "--no-default-suppression --no-show-locs --no-redundant",
1656     "data/test-diff-suppr/test31-report-1.txt",
1657     "output/test-diff-suppr/test31-report-1.txt"
1658   },
1659   {
1660     "data/test-diff-suppr/libtest32-v0.so",
1661     "data/test-diff-suppr/libtest32-v1.so",
1662     "",
1663     "",
1664     "",
1665     "--no-default-suppression --no-show-locs --no-redundant",
1666     "data/test-diff-suppr/test32-report-0.txt",
1667     "output/test-diff-suppr/test32-report-0.txt"
1668   },
1669   {
1670     "data/test-diff-suppr/libtest32-v0.so",
1671     "data/test-diff-suppr/libtest32-v1.so",
1672     "",
1673     "",
1674     "data/test-diff-suppr/libtest32-0.suppr",
1675     "--no-default-suppression --no-show-locs --no-redundant",
1676     "data/test-diff-suppr/test32-report-1.txt",
1677     "output/test-diff-suppr/test32-report-1.txt"
1678   },
1679   {
1680     "data/test-diff-suppr/libtest33-v0.so",
1681     "data/test-diff-suppr/libtest33-v1.so",
1682     "",
1683     "",
1684     "data/test-diff-suppr/test33-suppr-1.txt",
1685     "--no-default-suppression --no-show-locs --no-redundant",
1686     "data/test-diff-suppr/test33-report-0.txt",
1687     "output/test-diff-suppr/test33-report-0.txt"
1688   },
1689   {
1690     "data/test-diff-suppr/libtest34-v0.so",
1691     "data/test-diff-suppr/libtest34-v1.so",
1692     "data/test-diff-suppr/test34-pub-include-dir-v0",
1693     "data/test-diff-suppr/test34-pub-include-dir-v1",
1694     "",
1695     "--no-default-suppression",
1696     "data/test-diff-suppr/test34-report-0.txt",
1697     "output/test-diff-suppr/test34-report-0.txt"
1698   },
1699   {
1700     "data/test-diff-suppr/libtest35-leaf-v0.so",
1701     "data/test-diff-suppr/libtest35-leaf-v1.so",
1702     "",
1703     "",
1704     "data/test-diff-suppr/test35-leaf.suppr",
1705     "--no-default-suppression --leaf-changes-only --impacted-interfaces",
1706     "data/test-diff-suppr/test35-leaf-report-0.txt",
1707     "output/test-diff-suppr/test35-leaf-report-0.txt"
1708   },
1709   {
1710     "data/test-diff-suppr/libtest36-leaf-v0.so",
1711     "data/test-diff-suppr/libtest36-leaf-v1.so",
1712     "",
1713     "",
1714     "",
1715     "--no-default-suppression --leaf-changes-only --impacted-interfaces",
1716     "data/test-diff-suppr/test36-leaf-report-0.txt",
1717     "output/test-diff-suppr/test36-leaf-report-0.txt"
1718   },
1719   {
1720     "data/test-diff-suppr/test37-opaque-type-v0.o",
1721     "data/test-diff-suppr/test37-opaque-type-v1.o",
1722     "data/test-diff-suppr/test37-opaque-type-header-dir",
1723     "data/test-diff-suppr/test37-opaque-type-header-dir",
1724     "",
1725     "--no-default-suppression",
1726     "data/test-diff-suppr/test37-opaque-type-report-0.txt",
1727     "output/test-diff-suppr/test37-opaque-type-report-0.txt"
1728   },
1729   {
1730    "data/test-diff-suppr/test38-char-class-in-ini-v0.o",
1731    "data/test-diff-suppr/test38-char-class-in-ini-v1.o",
1732    "",
1733    "",
1734    "data/test-diff-suppr/test38-char-class-in-ini.abignore",
1735    "--no-default-suppression",
1736    "data/test-diff-suppr/test38-char-class-in-ini-report-0.txt",
1737    "output/test-diff-suppr/test38-char-class-in-ini-report-0.txt"
1738   },
1739   {
1740     "data/test-diff-suppr/test39-opaque-type-v0.o",
1741     "data/test-diff-suppr/test39-opaque-type-v1.o",
1742     "data/test-diff-suppr/test39-public-headers-dir",
1743     "data/test-diff-suppr/test39-public-headers-dir",
1744     "",
1745     "--no-default-suppression",
1746     "data/test-diff-suppr/test39-opaque-type-report-0.txt",
1747     "output/test-diff-suppr/test39-opaque-type-report-0.txt"
1748   },
1749   {
1750     "data/test-diff-suppr/libtest40-enumerator-changes-v0.so",
1751     "data/test-diff-suppr/libtest40-enumerator-changes-v1.so",
1752     "",
1753     "",
1754     "data/test-diff-suppr/test40-enumerator-changes-0.suppr",
1755     "--no-default-suppression",
1756     "data/test-diff-suppr/test40-enumerator-changes-report-0.txt",
1757     "output/test-diff-suppr/test40-enumerator-changes-report-0.txt"
1758   },
1759   {
1760     "data/test-diff-suppr/libtest41-enumerator-changes-v0.so",
1761     "data/test-diff-suppr/libtest41-enumerator-changes-v1.so",
1762     "",
1763     "",
1764     "data/test-diff-suppr/test41-enumerator-changes-0.suppr",
1765     "--no-default-suppression",
1766     "data/test-diff-suppr/test41-enumerator-changes-report-0.txt",
1767     "output/test-diff-suppr/test41-enumerator-changes-report-0.txt"
1768   },
1769   {
1770     "data/test-diff-suppr/test42-negative-suppr-type-v0.o",
1771     "data/test-diff-suppr/test42-negative-suppr-type-v1.o",
1772     "",
1773     "",
1774     "data/test-diff-suppr/test42-negative-suppr-type-suppr-1.txt",
1775     "--no-default-suppression",
1776     "data/test-diff-suppr/test42-negative-suppr-type-report-0.txt",
1777     "output/test-diff-suppr/test42-negative-suppr-type-report-0.txt"
1778   },
1779   {
1780     "data/test-diff-suppr/test42-negative-suppr-type-v0.o",
1781     "data/test-diff-suppr/test42-negative-suppr-type-v1.o",
1782     "",
1783     "",
1784     "data/test-diff-suppr/test42-negative-suppr-type-suppr-2.txt",
1785     "--no-default-suppression",
1786     "data/test-diff-suppr/test42-negative-suppr-type-report-1.txt",
1787     "output/test-diff-suppr/test42-negative-suppr-type-report-1.txt"
1788   },
1789   {
1790     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v0.o",
1791     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v1.o",
1792     "",
1793     "",
1794     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt",
1795     "--no-default-suppression",
1796     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt",
1797     "output/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt"
1798   },
1799   {
1800     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v0.o",
1801     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v1.o",
1802     "",
1803     "",
1804     "",
1805     "--no-default-suppression",
1806     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt",
1807     "output/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt"
1808   },
1809   {
1810     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v0.o",
1811     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v1.o",
1812     "",
1813     "",
1814     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp.suppr.txt",
1815     "--no-default-suppression",
1816     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt",
1817     "output/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt"
1818   },
1819   {
1820     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v0.o.abi",
1821     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v1.o.abi",
1822     "",
1823     "",
1824     "",
1825     "--no-default-suppression",
1826     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt",
1827     "output/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1_abi.txt"
1828   },
1829   {
1830     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v0.o.abi",
1831     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v1.o.abi",
1832     "",
1833     "",
1834     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp.suppr.txt",
1835     "--no-default-suppression",
1836     "data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt",
1837     "output/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2_abi.txt"
1838   },
1839   {
1840     "data/test-diff-suppr/test45-abi.xml",
1841     "data/test-diff-suppr/test45-abi-wl.xml",
1842     "",
1843     "",
1844     "data/test-diff-suppr/test45-abi.suppr.txt",
1845     "--no-default-suppression",
1846     "data/test-diff-suppr/test45-abi-report-1.txt",
1847     "output/test-diff-suppr/test45-abi-report-1.txt"
1848   },
1849   {
1850     "data/test-diff-suppr/test46-PR25128-base.xml",
1851     "data/test-diff-suppr/test46-PR25128-new.xml",
1852     "",
1853     "",
1854     "",
1855     "--no-default-suppression --leaf-changes-only",
1856     "data/test-diff-suppr/test46-PR25128-report-1.txt",
1857     "output/test-diff-suppr/test46-PR25128-report-1.txt"
1858   },
1859   {
1860     "data/test-diff-suppr/test46-PR25128-base.xml",
1861     "data/test-diff-suppr/test46-PR25128-new.xml",
1862     "",
1863     "",
1864     "",
1865     "--no-default-suppression --leaf-changes-only --no-added-syms",
1866     "data/test-diff-suppr/test46-PR25128-report-2.txt",
1867     "output/test-diff-suppr/test46-PR25128-report-2.txt"
1868   },
1869   {
1870     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1871     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1872     "",
1873     "",
1874     "",
1875     "--no-default-suppression --non-reachable-types",
1876     "data/test-diff-suppr/test47-non-reachable-types-report-1.txt",
1877     "output/test-diff-suppr/test47-non-reachable-types-report-1.txt"
1878   },
1879   {
1880     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1881     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1882     "",
1883     "",
1884     "data/test-diff-suppr/test47-non-reachable-types-suppr-1.txt",
1885     "--no-default-suppression --non-reachable-types",
1886     "data/test-diff-suppr/test47-non-reachable-types-report-2.txt",
1887     "output/test-diff-suppr/test47-non-reachable-types-report-2.txt"
1888   },
1889   {
1890     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1891     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1892     "",
1893     "",
1894     "data/test-diff-suppr/test47-non-reachable-types-suppr-2.txt",
1895     "--no-default-suppression --non-reachable-types",
1896     "data/test-diff-suppr/test47-non-reachable-types-report-3.txt",
1897     "output/test-diff-suppr/test47-non-reachable-types-report-3.txt"
1898   },
1899   {
1900     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1901     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1902     "",
1903     "",
1904     "data/test-diff-suppr/test47-non-reachable-types-suppr-3.txt",
1905     "--no-default-suppression --non-reachable-types",
1906     "data/test-diff-suppr/test47-non-reachable-types-report-4.txt",
1907     "output/test-diff-suppr/test47-non-reachable-types-report-4.txt"
1908   },
1909   {
1910     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1911     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1912     "",
1913     "",
1914     "data/test-diff-suppr/test47-non-reachable-types-suppr-4.txt",
1915     "--no-default-suppression --non-reachable-types",
1916     "data/test-diff-suppr/test47-non-reachable-types-report-5.txt",
1917     "output/test-diff-suppr/test47-non-reachable-types-report-5.txt"
1918   },
1919   {
1920     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1921     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1922     "",
1923     "",
1924     "data/test-diff-suppr/test47-non-reachable-types-suppr-5.txt",
1925     "--no-default-suppression --non-reachable-types",
1926     "data/test-diff-suppr/test47-non-reachable-types-report-6.txt",
1927     "output/test-diff-suppr/test47-non-reachable-types-report-6.txt"
1928   },
1929   {
1930     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1931     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1932     "",
1933     "",
1934     "",
1935     "--no-default-suppression --non-reachable-types --leaf-changes-only",
1936     "data/test-diff-suppr/test47-non-reachable-types-report-7.txt",
1937     "output/test-diff-suppr/test47-non-reachable-types-report-7.txt"
1938   },
1939   {
1940     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1941     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1942     "",
1943     "",
1944     "data/test-diff-suppr/test47-non-reachable-types-suppr-4.txt",
1945     "--no-default-suppression --non-reachable-types --leaf-changes-only",
1946     "data/test-diff-suppr/test47-non-reachable-types-report-8.txt",
1947     "output/test-diff-suppr/test47-non-reachable-types-report-8.txt"
1948   },
1949   {
1950     "data/test-diff-suppr/test47-non-reachable-types-v0.o",
1951     "data/test-diff-suppr/test47-non-reachable-types-v1.o",
1952     "",
1953     "",
1954     "data/test-diff-suppr/test47-non-reachable-types-suppr-5.txt",
1955     "--no-default-suppression --non-reachable-types --leaf-changes-only",
1956     "data/test-diff-suppr/test47-non-reachable-types-report-9.txt",
1957     "output/test-diff-suppr/test47-non-reachable-types-report-9.txt"
1958   },
1959   {
1960     "data/test-diff-suppr/test47-non-reachable-types-v0.o.alltypes.abixml",
1961     "data/test-diff-suppr/test47-non-reachable-types-v1.o.alltypes.abixml",
1962     "",
1963     "",
1964     "",
1965     "--no-default-suppression --non-reachable-types",
1966     "data/test-diff-suppr/test47-non-reachable-types-report-1.txt",
1967     "output/test-diff-suppr/test47-non-reachable-types-report-1_alltypes.txt"
1968   },
1969   {
1970     "data/test-diff-suppr/test47-non-reachable-types-v0.o.alltypes.abixml",
1971     "data/test-diff-suppr/test47-non-reachable-types-v1.o.alltypes.abixml",
1972     "",
1973     "",
1974     "",
1975     "--no-default-suppression",
1976     "data/test-diff-suppr/test47-non-reachable-types-report-10.txt",
1977     "output/test-diff-suppr/test47-non-reachable-types-report-10.txt"
1978   },
1979   {
1980     "data/test-diff-suppr/libtest48-soname-abixml-v0.so",
1981     "data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi",
1982     "",
1983     "",
1984     "",
1985     "--no-default-suppression",
1986     "data/test-diff-suppr/libtest48-soname-abixml-report-1.txt",
1987     "output/test-diff-suppr/libtest48-soname-abixml-report-1.txt"
1988   },
1989   {
1990     "data/test-diff-suppr/libtest48-soname-abixml-v0.so",
1991     "data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi",
1992     "",
1993     "",
1994     "data/test-diff-suppr/libtest48-soname-abixml-suppr.txt",
1995     "--no-default-suppression",
1996     "data/test-diff-suppr/libtest48-soname-abixml-report-2.txt",
1997     "output/test-diff-suppr/libtest48-soname-abixml-report-2.txt"
1998   },
1999   {
2000     "data/test-diff-suppr/libtest48-soname-abixml-v0.so",
2001     "data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi",
2002     "",
2003     "",
2004     "data/test-diff-suppr/libtest48-soname-abixml-suppr-2.txt",
2005     "--no-default-suppression",
2006     "data/test-diff-suppr/libtest48-soname-abixml-report-1.txt",
2007     "output/test-diff-suppr/libtest48-soname-abixml-report-1_suppr2.txt"
2008   },
2009   {
2010     "data/test-diff-suppr/libtest48-soname-abixml-v0.so",
2011     "data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi",
2012     "",
2013     "",
2014     "data/test-diff-suppr/libtest48-soname-abixml-suppr-3.txt",
2015     "--no-default-suppression",
2016     "data/test-diff-suppr/libtest48-soname-abixml-report-2.txt",
2017     "output/test-diff-suppr/libtest48-soname-abixml-report-2_suppr3.txt"
2018   },
2019   {
2020     "data/test-diff-suppr/libtest48-soname-abixml-v0.so",
2021     "data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi",
2022     "",
2023     "",
2024     "data/test-diff-suppr/libtest48-soname-abixml-suppr-4.txt",
2025     "--no-default-suppression",
2026     "data/test-diff-suppr/libtest48-soname-abixml-report-1.txt",
2027     "output/test-diff-suppr/libtest48-soname-abixml-report-1_suppr4.txt"
2028   },
2029   {
2030     "data/test-diff-suppr/PR27267/libtestpr27267-v0.so",
2031     "data/test-diff-suppr/PR27267/libtestpr27267-v1.so",
2032     "data/test-diff-suppr/PR27267/include-dir-v0",
2033     "data/test-diff-suppr/PR27267/include-dir-v1",
2034     "",
2035     "--drop-private-types --no-default-suppression",
2036     "data/test-diff-suppr/PR27267/report-1.txt",
2037     "output/test-diff-suppr/PR27267/report-1.txt"
2038   },
2039   {
2040     "data/test-diff-suppr/PR28073/PR28073.before.o.abi",
2041     "data/test-diff-suppr/PR28073/PR28073.after.o.abi",
2042     "",
2043     "",
2044     "data/test-diff-suppr/PR28073/bitfield.suppr",
2045     "--drop-private-types --no-default-suppression",
2046     "data/test-diff-suppr/PR28073/PR28073-output-1.txt",
2047     "output/test-diff-suppr/PR28073/PR28073-output-1.txt"
2048   },
2049   {
2050     "data/test-diff-suppr/PR28073/PR28073.before.o.abi",
2051     "data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o.abi",
2052     "",
2053     "",
2054     "data/test-diff-suppr/PR28073/bitfield.suppr",
2055     "--drop-private-types --no-default-suppression",
2056     "data/test-diff-suppr/PR28073/PR28073-output-2.txt",
2057     "output/test-diff-suppr/PR28073/PR28073-output-2.txt"
2058   },
2059   // This should be the last entry
2060   {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
2061 };
2062 
2063 /// The task that performs the tests.
2064 struct test_task : public abigail::workers::task
2065 {
2066   const InOutSpec&   spec;
2067   const std::string& in_base_path;
2068   const std::string& out_base_path;
2069 
2070   bool		     is_ok;
2071   std::string	     error_message;
2072 
test_tasktest_task2073   test_task(const InOutSpec&   s,
2074 	    const std::string& in_base_path,
2075 	    const std::string& out_base_path)
2076     : spec(s),
2077       in_base_path(in_base_path),
2078       out_base_path(out_base_path),
2079       is_ok(true)
2080   {}
2081 
2082   virtual void
performtest_task2083   perform()
2084   {
2085     using abigail::tools_utils::ensure_parent_dir_created;
2086     using abigail::tools_utils::abidiff_status;
2087 
2088     const std::string in_elfv0_path = in_base_path + spec.in_elfv0_path;
2089     const std::string in_elfv1_path = in_base_path + spec.in_elfv1_path;
2090 
2091     std::string in_suppression_path;
2092     if (spec.in_suppr_path && strcmp(spec.in_suppr_path, ""))
2093       in_suppression_path = in_base_path + spec.in_suppr_path;
2094 
2095     const std::string ref_diff_report_path =
2096 	in_base_path + spec.in_report_path;
2097     const std::string out_diff_report_path =
2098 	out_base_path + spec.out_report_path;
2099 
2100     std::string headers_dir1;
2101     if (spec.headers_dir1 && strcmp(spec.headers_dir1, ""))
2102       headers_dir1 = spec.headers_dir1;
2103 
2104     std::string headers_dir2;
2105     if (spec.headers_dir2 && strcmp(spec.headers_dir2, ""))
2106       headers_dir2 = spec.headers_dir2;
2107 
2108     if (!ensure_parent_dir_created(out_diff_report_path))
2109       {
2110 	error_message =
2111 	    "could not create parent directory for " + out_diff_report_path;
2112 	is_ok = false;
2113 	return;
2114       }
2115 
2116     std::string abidiff = std::string(get_build_dir()) + "/tools/abidiff" + " "
2117 			  + spec.abidiff_options;
2118 
2119     if (!in_suppression_path.empty())
2120       abidiff += " --suppressions " + in_suppression_path;
2121 
2122     if (!headers_dir1.empty())
2123       abidiff += " --hd1 " + in_base_path + headers_dir1;
2124 
2125     if (!headers_dir2.empty())
2126       abidiff += " --hd2 " + in_base_path + headers_dir2;
2127 
2128     const std::string cmd = abidiff + " " + in_elfv0_path + " " + in_elfv1_path
2129 			    + " > " + out_diff_report_path;
2130 
2131     bool bidiff_ok = true;
2132     int	 code = system(cmd.c_str());
2133     if (!WIFEXITED(code))
2134       bidiff_ok = false;
2135     else
2136       {
2137 	abigail::tools_utils::abidiff_status status =
2138 	    static_cast<abidiff_status>(WEXITSTATUS(code));
2139 	if (abigail::tools_utils::abidiff_status_has_error(status))
2140 	  bidiff_ok = false;
2141       }
2142 
2143     if (bidiff_ok)
2144       {
2145 	const std::string diff_cmd =
2146 	    "diff -u " + ref_diff_report_path + " " + out_diff_report_path;
2147 	if (system(diff_cmd.c_str()))
2148 	  is_ok = false;
2149       }
2150     else
2151       is_ok = false;
2152   }
2153 };
2154 
2155 
2156 int
main(int argc,char * argv[])2157 main(int argc, char *argv[])
2158 {
2159   bool no_parallel = false;
2160 
2161   if (argc == 2)
2162     {
2163       if (argv[1] == std::string("--no-parallel"))
2164 	no_parallel = true;
2165       else
2166 	{
2167 	  std::cerr << "unrecognized option\n";
2168 	  std::cerr << "usage: " << argv[0] << " [--no-parallel]\n";
2169 	  return 1;
2170 	}
2171     }
2172 
2173   /// Create a task queue.  The max number of worker threads of the
2174   /// queue is the number of the concurrent threads supported by the
2175   /// processor of the machine this code runs on.  But if
2176   /// --no-parallel was provided then the number of worker threads
2177   /// equals 1.
2178   const size_t num_tests = sizeof(in_out_specs) / sizeof (InOutSpec) - 1;
2179   const size_t num_workers = (no_parallel
2180 			? 1
2181 			: std::min(abigail::workers::get_number_of_threads(),
2182 				   num_tests));
2183   abigail::workers::queue task_queue(num_workers);
2184 
2185   const std::string in_base_path = std::string(get_src_dir()) + "/tests/";
2186   const std::string out_base_path = std::string(get_build_dir()) + "/tests/";
2187 
2188   // output paths need to be unique to avoid collisions during parallel testing
2189   std::unordered_set<std::string> out_paths;
2190   bool non_unique_output_paths = false;
2191   for (InOutSpec* s = in_out_specs; s->in_elfv0_path; ++s) {
2192 	if (!out_paths.insert(s->out_report_path).second) {
2193 	    std::cerr << "Non-unique output path: " << s->out_report_path
2194 		      << '\n';
2195 	    non_unique_output_paths = true;
2196 	}
2197   }
2198   if (non_unique_output_paths)
2199     return 1;
2200 
2201   for (InOutSpec* s = in_out_specs; s->in_elfv0_path; ++s)
2202     {
2203       std::shared_ptr<test_task> t(
2204 	  new test_task(*s, in_base_path, out_base_path));
2205       ABG_ASSERT(task_queue.schedule_task(t));
2206     }
2207 
2208   /// Wait for all worker threads to finish their job, and wind down.
2209   task_queue.wait_for_workers_to_complete();
2210 
2211   // Now walk the results and print whatever error messages need to be printed.
2212   const std::vector<abigail::workers::task_sptr>& completed_tasks =
2213       task_queue.get_completed_tasks();
2214 
2215   ABG_ASSERT(completed_tasks.size() == num_tests);
2216 
2217   bool is_ok = true;
2218   for (std::vector<abigail::workers::task_sptr>::const_iterator ti =
2219 	 completed_tasks.begin();
2220        ti != completed_tasks.end();
2221        ++ti)
2222     {
2223       std::shared_ptr<test_task> t =
2224 	  std::dynamic_pointer_cast<test_task>(*ti);
2225       if (!t->is_ok)
2226 	{
2227 	  is_ok = false;
2228 	  if (!t->error_message.empty())
2229 	    std::cerr << t->error_message << '\n';
2230 	  else
2231 	    std::cerr << "FAIL: test with output '" << t->spec.out_report_path
2232 		      << "' failed!\n";
2233 	}
2234     }
2235 
2236   return !is_ok;
2237 }
2238