dfc828831f927b17f139cf9d1b898d1254e8b402
[platform/upstream/libabigail.git] / tests / test-diff-suppr.cc
1 // -*- Mode: C++ -*-
2 //
3 // Copyright (C) 2013-2019 Red Hat, Inc.
4 //
5 // This file is part of the GNU Application Binary Interface Generic
6 // Analysis and Instrumentation Library (libabigail).  This library is
7 // free software; you can redistribute it and/or modify it under the
8 // terms of the GNU Lesser General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option) any
10 // later version.
11
12 // This library is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 // General Lesser Public License for more details.
16
17 // You should have received a copy of the GNU Lesser General Public
18 // License along with this program; see the file COPYING-LGPLV3.  If
19 // not, see <http://www.gnu.org/licenses/>.
20
21 // Author: Dodji Seketeli
22
23 /// @file
24 ///
25 /// This test harness program runs a diff between input ELF files
26 /// containing DWARF debugging information, exercising the
27 /// suppressions features of the "bidiff" command line program.
28 ///
29 /// So it runs the diff diff between the two input files, using a
30 /// suppression file and compares the resulting diff with a reference
31 /// one.
32
33 #include <sys/wait.h>
34 #include <cstring>
35 #include <string>
36 #include <fstream>
37 #include <iostream>
38 #include <cstdlib>
39 #include "abg-tools-utils.h"
40 #include "test-utils.h"
41
42 using std::string;
43 using std::cerr;
44
45 /// This is an aggregate that specifies where a test shall get its
46 /// input from and where it shall write its ouput to.
47 struct InOutSpec
48 {
49   const char* in_elfv0_path;
50   const char* in_elfv1_path;
51   const char* headers_dir1;
52   const char* headers_dir2;
53   const char* in_suppr_path;
54   const char* abidiff_options;
55   const char* in_report_path;
56   const char* out_report_path;
57 }; // end struct InOutSpec;
58
59 InOutSpec in_out_specs[] =
60 {
61   {
62     "data/test-diff-suppr/test0-type-suppr-v0.o",
63     "data/test-diff-suppr/test0-type-suppr-v1.o",
64     NULL,
65     NULL,
66     NULL,
67     "--no-default-suppression --no-show-locs --no-redundant",
68     "data/test-diff-suppr/test0-type-suppr-report-0.txt",
69     "output/test-diff-suppr/test0-type-suppr-report-0.txt",
70   },
71   {
72     "data/test-diff-suppr/test0-type-suppr-v0.o",
73     "data/test-diff-suppr/test0-type-suppr-v1.o",
74     "",
75     "",
76     "data/test-diff-suppr/test0-type-suppr-0.suppr",
77     "--no-default-suppression --no-show-locs --no-redundant",
78     "data/test-diff-suppr/test0-type-suppr-report-1.txt",
79     "output/test-diff-suppr/test0-type-suppr-report-1.txt",
80   },
81   {
82     "data/test-diff-suppr/test0-type-suppr-v0.o",
83     "data/test-diff-suppr/test0-type-suppr-v1.o",
84     "",
85     "",
86     "data/test-diff-suppr/test0-type-suppr-1.suppr",
87     "--no-default-suppression --no-show-locs --no-redundant",
88     "data/test-diff-suppr/test0-type-suppr-report-2.txt",
89     "output/test-diff-suppr/test0-type-suppr-report-2.txt",
90   },
91   {
92     "data/test-diff-suppr/test0-type-suppr-v0.o",
93     "data/test-diff-suppr/test0-type-suppr-v1.o",
94     "",
95     "",
96     "data/test-diff-suppr/test0-type-suppr-2.suppr",
97     "--no-default-suppression --no-show-locs --no-redundant",
98     "data/test-diff-suppr/test0-type-suppr-report-3.txt",
99     "output/test-diff-suppr/test0-type-suppr-report-3.txt",
100   },
101   {
102     "data/test-diff-suppr/test0-type-suppr-v0.o",
103     "data/test-diff-suppr/test0-type-suppr-v1.o",
104     "",
105     "",
106     "data/test-diff-suppr/test0-type-suppr-3.suppr",
107     "--no-default-suppression --no-show-locs --no-redundant",
108     "data/test-diff-suppr/test0-type-suppr-report-4.txt",
109     "output/test-diff-suppr/test0-type-suppr-report-4.txt",
110   },
111   {
112     "data/test-diff-suppr/test0-type-suppr-v0.o",
113     "data/test-diff-suppr/test0-type-suppr-v1.o",
114     "",
115     "",
116     "data/test-diff-suppr/test0-type-suppr-4.suppr",
117     "--no-default-suppression --no-show-locs --no-redundant",
118     "data/test-diff-suppr/test0-type-suppr-report-5.txt",
119     "output/test-diff-suppr/test0-type-suppr-report-5.txt",
120   },
121   {
122     "data/test-diff-suppr/test0-type-suppr-v0.o",
123     "data/test-diff-suppr/test0-type-suppr-v1.o",
124     "",
125     "",
126     "data/test-diff-suppr/test0-type-suppr-5.suppr",
127     "--no-default-suppression --no-show-locs --no-redundant",
128     "data/test-diff-suppr/test0-type-suppr-report-6.txt",
129     "output/test-diff-suppr/test0-type-suppr-report-6.txt",
130   },
131   {
132     "data/test-diff-suppr/test0-type-suppr-v0.o",
133     "data/test-diff-suppr/test0-type-suppr-v1.o",
134     "",
135     "",
136     "data/test-diff-suppr/test0-type-suppr-6.suppr",
137     "--no-default-suppression --no-show-locs --no-redundant",
138     "data/test-diff-suppr/test0-type-suppr-report-7.txt",
139     "output/test-diff-suppr/test0-type-suppr-report-7.txt",
140   },
141   {
142     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
143     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
144     "",
145     "",
146     "",
147     "--no-default-suppression --no-show-locs --no-redundant",
148     "data/test-diff-suppr/test1-typedef-suppr-report-0.txt",
149     "output/test-diff-suppr/test1-typedef-suppr-report-0.txt",
150   },
151   {
152     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
153     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
154     "",
155     "",
156     "data/test-diff-suppr/test1-typedef-suppr-0.suppr",
157     "--no-default-suppression --no-show-locs --no-redundant",
158     "data/test-diff-suppr/test1-typedef-suppr-report-1.txt",
159     "output/test-diff-suppr/test1-typedef-suppr-report-1.txt",
160   },
161   {
162     "data/test-diff-suppr/test1-typedef-suppr-v0.o",
163     "data/test-diff-suppr/test1-typedef-suppr-v1.o",
164     "",
165     "",
166     "data/test-diff-suppr/test1-typedef-suppr-1.suppr",
167     "--no-default-suppression --no-show-locs --no-redundant",
168     "data/test-diff-suppr/test1-typedef-suppr-report-2.txt",
169     "output/test-diff-suppr/test1-typedef-suppr-report-2.txt",
170   },
171   {
172     "data/test-diff-suppr/test2-struct-suppr-v0.o",
173     "data/test-diff-suppr/test2-struct-suppr-v1.o",
174     "",
175     "",
176     "data/test-diff-suppr/test2-struct-suppr-0.suppr",
177     "--no-default-suppression --no-show-locs --no-redundant",
178     "data/test-diff-suppr/test2-struct-suppr-report-0.txt",
179     "output/test-diff-suppr/test2-struct-suppr-report-0.txt",
180   },
181   {
182     "data/test-diff-suppr/test2-struct-suppr-v0.o",
183     "data/test-diff-suppr/test2-struct-suppr-v1.o",
184     "",
185     "",
186     "data/test-diff-suppr/test2-struct-suppr-1.suppr",
187     "--no-default-suppression --no-show-locs --no-redundant",
188     "data/test-diff-suppr/test2-struct-suppr-report-1.txt",
189     "output/test-diff-suppr/test2-struct-suppr-report-1.txt",
190   },
191   {
192     "data/test-diff-suppr/test3-struct-suppr-v0.o",
193     "data/test-diff-suppr/test3-struct-suppr-v1.o",
194     "",
195     "",
196     NULL,
197     "--no-default-suppression --no-show-locs --no-redundant",
198     "data/test-diff-suppr/test3-struct-suppr-report-0.txt",
199     "output/test-diff-suppr/test3-struct-suppr-report-0.txt",
200   },
201   {
202     "data/test-diff-suppr/test3-struct-suppr-v0.o",
203     "data/test-diff-suppr/test3-struct-suppr-v1.o",
204     "",
205     "",
206     "data/test-diff-suppr/test3-struct-suppr-0.suppr",
207     "--no-default-suppression --no-show-locs --no-redundant",
208     "data/test-diff-suppr/test3-struct-suppr-report-1.txt",
209     "output/test-diff-suppr/test3-struct-suppr-report-1.txt",
210   },
211   {
212     "data/test-diff-suppr/test3-struct-suppr-v0.o",
213     "data/test-diff-suppr/test3-struct-suppr-v1.o",
214     "",
215     "",
216     "data/test-diff-suppr/test3-struct-suppr-1.suppr",
217     "--no-default-suppression --no-show-locs --no-redundant",
218     "data/test-diff-suppr/test3-struct-suppr-report-2.txt",
219     "output/test-diff-suppr/test3-struct-suppr-report-2.txt",
220   },
221   {
222     "data/test-diff-suppr/libtest4-local-suppr-v0.so",
223     "data/test-diff-suppr/libtest4-local-suppr-v1.so",
224     "",
225     "",
226     "data/test-diff-suppr/test4-local-suppr-0.suppr",
227     "--no-default-suppression --no-show-locs --no-redundant",
228     "data/test-diff-suppr/test4-local-suppr-report-1.txt",
229     "output/test-diff-suppr/test4-local-suppr-report-1.txt",
230   },
231   {
232     "data/test-diff-suppr/libtest4-local-suppr-v0.so",
233     "data/test-diff-suppr/libtest4-local-suppr-v1.so",
234     "",
235     "",
236     "",
237     "--no-default-suppression --no-show-locs",
238     "data/test-diff-suppr/test4-local-suppr-report-0.txt",
239     "output/test-diff-suppr/test4-local-suppr-report-0.txt",
240   },
241   {
242     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
243     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
244     "",
245     "",
246     "",
247     "--no-default-suppression --no-show-locs --no-redundant",
248     "data/test-diff-suppr/test5-fn-suppr-report-0.txt",
249     "output/test-diff-suppr/test5-fn-suppr-report-0.txt",
250   },
251   {
252     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
253     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
254     "",
255     "",
256     "data/test-diff-suppr/test5-fn-suppr-0.suppr",
257     "--no-default-suppression --no-show-locs --no-redundant",
258     "data/test-diff-suppr/test5-fn-suppr-report-1.txt",
259     "output/test-diff-suppr/test5-fn-suppr-report-1.txt",
260   },
261   {
262     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
263     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
264     "",
265     "",
266     "data/test-diff-suppr/test5-fn-suppr-1.suppr",
267     "--no-default-suppression --no-show-locs --no-redundant",
268     "data/test-diff-suppr/test5-fn-suppr-report-2.txt",
269     "output/test-diff-suppr/test5-fn-suppr-report-2.txt",
270   },
271   {
272     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
273     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
274     "",
275     "",
276     "data/test-diff-suppr/test5-fn-suppr-2.suppr",
277     "--no-default-suppression --no-show-locs --no-redundant",
278     "data/test-diff-suppr/test5-fn-suppr-report-3.txt",
279     "output/test-diff-suppr/test5-fn-suppr-report-3.txt",
280   },
281   {
282     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
283     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
284     "",
285     "",
286     "data/test-diff-suppr/test5-fn-suppr-3.suppr",
287     "--no-default-suppression --no-show-locs --no-redundant",
288     "data/test-diff-suppr/test5-fn-suppr-report-4.txt",
289     "output/test-diff-suppr/test5-fn-suppr-report-4.txt",
290   },
291   {
292     "data/test-diff-suppr/libtest5-fn-suppr-v0.so",
293     "data/test-diff-suppr/libtest5-fn-suppr-v1.so",
294     "",
295     "",
296     "data/test-diff-suppr/test5-fn-suppr-4.suppr",
297     "--no-default-suppression --no-show-locs --no-redundant",
298     "data/test-diff-suppr/test5-fn-suppr-report-5.txt",
299     "output/test-diff-suppr/test5-fn-suppr-report-5.txt",
300   },
301   {
302     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
303     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
304     "",
305     "",
306     "",
307     "--no-default-suppression --no-show-locs --no-redundant",
308     "data/test-diff-suppr/test6-fn-suppr-report-0.txt",
309     "output/test-diff-suppr/test6-fn-suppr-report-0.txt",
310   },
311   { // Just like the previous test, but loc info is emitted.
312     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
313     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
314     "",
315     "",
316     "",
317     "--no-default-suppression --no-redundant",
318     "data/test-diff-suppr/test6-fn-suppr-report-0-1.txt",
319     "output/test-diff-suppr/test6-fn-suppr-report-0-1.txt",
320   },
321   {
322     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
323     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
324     "",
325     "",
326     "data/test-diff-suppr/test6-fn-suppr-0.suppr",
327     "--no-default-suppression --no-show-locs --no-redundant",
328     "data/test-diff-suppr/test6-fn-suppr-report-1.txt",
329     "output/test-diff-suppr/test6-fn-suppr-report-1.txt",
330   },
331   {
332     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
333     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
334     "",
335     "",
336     "data/test-diff-suppr/test6-fn-suppr-1.suppr",
337     "--no-default-suppression --no-show-locs --no-redundant",
338     "data/test-diff-suppr/test6-fn-suppr-report-2.txt",
339     "output/test-diff-suppr/test6-fn-suppr-report-2.txt",
340   },
341   {
342     "data/test-diff-suppr/libtest6-fn-suppr-v0.so",
343     "data/test-diff-suppr/libtest6-fn-suppr-v1.so",
344     "",
345     "",
346     "data/test-diff-suppr/test6-fn-suppr-2.suppr",
347     "--no-default-suppression --no-show-locs --no-redundant",
348     "data/test-diff-suppr/test6-fn-suppr-report-3.txt",
349     "output/test-diff-suppr/test6-fn-suppr-report-3.txt",
350   },
351   {
352     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
353     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
354     "",
355     "",
356     "",
357     "--no-default-suppression --no-show-locs --no-redundant",
358     "data/test-diff-suppr/test7-var-suppr-report-0.txt",
359     "output/test-diff-suppr/test7-var-suppr-report-0.txt"
360   },
361   {
362     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
363     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
364     "",
365     "",
366     "data/test-diff-suppr/test7-var-suppr-1.suppr",
367     "--no-default-suppression --no-show-locs --no-redundant",
368     "data/test-diff-suppr/test7-var-suppr-report-1.txt",
369     "output/test-diff-suppr/test7-var-suppr-report-1.txt"
370   },
371   {
372     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
373     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
374     "",
375     "",
376     "data/test-diff-suppr/test7-var-suppr-2.suppr",
377     "--no-default-suppression --no-show-locs --no-redundant",
378     "data/test-diff-suppr/test7-var-suppr-report-2.txt",
379     "output/test-diff-suppr/test7-var-suppr-report-2.txt"
380   },
381   {
382     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
383     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
384     "",
385     "",
386     "data/test-diff-suppr/test7-var-suppr-3.suppr",
387     "--no-default-suppression --no-show-locs --no-redundant",
388     "data/test-diff-suppr/test7-var-suppr-report-3.txt",
389     "output/test-diff-suppr/test7-var-suppr-report-3.txt"
390   },
391   {
392     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
393     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
394     "",
395     "",
396     "data/test-diff-suppr/test7-var-suppr-4.suppr",
397     "--no-default-suppression --no-show-locs --no-redundant",
398     "data/test-diff-suppr/test7-var-suppr-report-4.txt",
399     "output/test-diff-suppr/test7-var-suppr-report-4.txt"
400   },
401   {
402     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
403     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
404     "",
405     "",
406     "data/test-diff-suppr/test7-var-suppr-5.suppr",
407     "--no-default-suppression --no-show-locs --no-redundant",
408     "data/test-diff-suppr/test7-var-suppr-report-5.txt",
409     "output/test-diff-suppr/test7-var-suppr-report-5.txt"
410   },
411   {
412     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
413     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
414     "",
415     "",
416     "data/test-diff-suppr/test7-var-suppr-6.suppr",
417     "--no-default-suppression --no-show-locs --no-redundant",
418     "data/test-diff-suppr/test7-var-suppr-report-6.txt",
419     "output/test-diff-suppr/test7-var-suppr-report-6.txt"
420   },
421   {
422     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
423     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
424     "",
425     "",
426     "data/test-diff-suppr/test7-var-suppr-7.suppr",
427     "--no-default-suppression --no-show-locs --no-redundant",
428     "data/test-diff-suppr/test7-var-suppr-report-7.txt",
429     "output/test-diff-suppr/test7-var-suppr-report-7.txt"
430   },
431   {
432     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
433     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
434     "",
435     "",
436     "data/test-diff-suppr/test7-var-suppr-8.suppr",
437     "--no-default-suppression --no-show-locs --no-redundant",
438     "data/test-diff-suppr/test7-var-suppr-report-8.txt",
439     "output/test-diff-suppr/test7-var-suppr-report-8.txt"
440   },
441   {
442     "data/test-diff-suppr/libtest7-var-suppr-v0.so",
443     "data/test-diff-suppr/libtest7-var-suppr-v1.so",
444     "",
445     "",
446     "data/test-diff-suppr/test7-var-suppr-9.suppr",
447     "--no-default-suppression --no-show-locs --no-redundant",
448     "data/test-diff-suppr/test7-var-suppr-report-9.txt",
449     "output/test-diff-suppr/test7-var-suppr-report-9.txt"
450   },
451   {
452     "data/test-diff-suppr/libtest8-redundant-fn-v0.so",
453     "data/test-diff-suppr/libtest8-redundant-fn-v1.so",
454     "",
455     "",
456     "",
457     "--no-default-suppression --no-show-locs --no-redundant",
458     "data/test-diff-suppr/test8-redundant-fn-report-0.txt",
459     "output/test-diff-suppr/test8-redundant-fn-report-0.txt"
460   },
461   {
462     "data/test-diff-suppr/libtest8-redundant-fn-v0.so",
463     "data/test-diff-suppr/libtest8-redundant-fn-v1.so",
464     "",
465     "",
466     "",
467     "--no-default-suppression --no-show-locs --redundant",
468     "data/test-diff-suppr/test8-redundant-fn-report-1.txt",
469     "output/test-diff-suppr/test8-redundant-fn-report-1.txt"
470   },
471   {
472     "data/test-diff-suppr/libtest9-changed-parm-c-v0.so",
473     "data/test-diff-suppr/libtest9-changed-parm-c-v1.so",
474     "",
475     "",
476     "",
477     "--no-default-suppression --no-show-locs --no-redundant",
478     "data/test-diff-suppr/test9-changed-parm-c-report-0.txt",
479     "output/test-diff-suppr/est9-changed-parm-c-report-0.txt"
480   },
481   {
482     "data/test-diff-suppr/libtest9-changed-parm-c-v0.so",
483     "data/test-diff-suppr/libtest9-changed-parm-c-v1.so",
484     "",
485     "",
486     "",
487     "--no-default-suppression --no-show-locs --redundant",
488     "data/test-diff-suppr/test9-changed-parm-c-report-1.txt",
489     "output/test-diff-suppr/est9-changed-parm-c-report-1.txt"
490   },
491   {
492     "data/test-diff-suppr/libtest10-changed-parm-c-v0.so",
493     "data/test-diff-suppr/libtest10-changed-parm-c-v1.so",
494     "",
495     "",
496     "",
497     "--no-default-suppression --no-show-locs --no-redundant",
498     "data/test-diff-suppr/test10-changed-parm-c-report-0.txt",
499     "output/test-diff-suppr/test10-changed-parm-c-report-0.txt"
500   },
501   {
502     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
503     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
504     "",
505     "",
506     "",
507     "--no-default-suppression --no-show-locs --no-redundant",
508     "data/test-diff-suppr/test11-add-data-member-report-0.txt",
509     "output/test-diff-suppr/test11-add-data-member-report-0.txt"
510   },
511   {
512     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
513     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
514     "",
515     "",
516     "data/test-diff-suppr/test11-add-data-member-0.suppr",
517     "--no-default-suppression --no-show-locs --no-redundant",
518     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
519     "output/test-diff-suppr/test11-add-data-member-report-1.txt"
520   },
521   {
522     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
523     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
524     "",
525     "",
526     "data/test-diff-suppr/test11-add-data-member-1.suppr",
527     "--no-default-suppression --no-show-locs --no-redundant",
528     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
529     "output/test-diff-suppr/test11-add-data-member-report-1.txt"
530   },
531   {
532     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
533     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
534     "",
535     "",
536     "data/test-diff-suppr/test11-add-data-member-2.suppr",
537     "--no-default-suppression --no-show-locs --no-redundant",
538     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
539     "output/test-diff-suppr/test11-add-data-member-report-1.txt"
540   },
541   {
542     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
543     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
544     "",
545     "",
546     "data/test-diff-suppr/test11-add-data-member-3.suppr",
547     "--no-default-suppression --no-show-locs --no-redundant",
548     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
549     "output/test-diff-suppr/test11-add-data-member-report-1.txt"
550   },
551   {
552     "data/test-diff-suppr/libtest11-add-data-member-v0.so",
553     "data/test-diff-suppr/libtest11-add-data-member-v1.so",
554     "",
555     "",
556     "data/test-diff-suppr/test11-add-data-member-4.suppr",
557     "--no-default-suppression --no-show-locs --no-redundant",
558     "data/test-diff-suppr/test11-add-data-member-report-1.txt",
559     "output/test-diff-suppr/test11-add-data-member-report-1.txt"
560   },
561   {
562     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
563     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
564     "",
565     "",
566     "",
567     "--no-default-suppression --no-show-locs --no-redundant",
568     "data/test-diff-suppr/test12-add-data-member-report-0.txt",
569     "output/test-diff-suppr/test12-add-data-member-report-0.txt"
570   },
571   {
572     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
573     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
574     "",
575     "",
576     "data/test-diff-suppr/test12-add-data-member-0.suppr",
577     "--no-default-suppression --no-show-locs --no-redundant",
578     "data/test-diff-suppr/test12-add-data-member-report-1.txt",
579     "output/test-diff-suppr/test12-add-data-member-report-1.txt"
580   },
581   {
582     "data/test-diff-suppr/libtest12-add-data-member-v0.so",
583     "data/test-diff-suppr/libtest12-add-data-member-v1.so",
584     "",
585     "",
586     "data/test-diff-suppr/test12-add-data-member-1.suppr",
587     "--no-default-suppression --no-show-locs --no-redundant",
588     "data/test-diff-suppr/test12-add-data-member-report-2.txt",
589     "output/test-diff-suppr/test12-add-data-member-report-2.txt"
590   },
591   {
592     "data/test-diff-suppr/libtest13-suppr-through-pointer-v0.so",
593     "data/test-diff-suppr/libtest13-suppr-through-pointer-v1.so",
594     "",
595     "",
596     "",
597     "--no-default-suppression --no-show-locs --no-redundant",
598     "data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt",
599     "output/test-diff-suppr/test13-suppr-through-pointer-report-0.txt"
600   },
601   {
602     "data/test-diff-suppr/libtest13-suppr-through-pointer-v0.so",
603     "data/test-diff-suppr/libtest13-suppr-through-pointer-v1.so",
604     "",
605     "",
606     "data/test-diff-suppr/test13-suppr-through-pointer-0.suppr",
607     "--no-default-suppression --no-show-locs --no-redundant",
608     "data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt",
609     "output/test-diff-suppr/test13-suppr-through-pointer-report-1.txt"
610   },
611   {
612     "data/test-diff-suppr/test14-suppr-non-redundant-v0.o",
613     "data/test-diff-suppr/test14-suppr-non-redundant-v1.o",
614     "",
615     "",
616     "",
617     "--no-default-suppression --no-show-locs --no-redundant",
618     "data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt",
619     "output/test-diff-suppr/test14-suppr-non-redundant-report-0.txt"
620   },
621   {
622     "data/test-diff-suppr/test14-suppr-non-redundant-v0.o",
623     "data/test-diff-suppr/test14-suppr-non-redundant-v1.o",
624     "",
625     "",
626     "data/test-diff-suppr/test14-suppr-non-redundant-0.suppr",
627     "--no-default-suppression --no-show-locs --no-redundant",
628     "data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt",
629     "output/test-diff-suppr/test14-suppr-non-redundant-report-1.txt"
630   },
631   {
632     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
633     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
634     "",
635     "",
636     "",
637     "--no-default-suppression --no-show-locs --no-redundant",
638     "data/test-diff-suppr/test15-suppr-added-fn-report-0.txt",
639     "output/test-diff-suppr/test15-suppr-added-fn-report-0.txt"
640   },
641   {
642     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
643     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
644     "",
645     "",
646     "data/test-diff-suppr/test15-suppr-added-fn-0.suppr",
647     "--no-default-suppression --no-show-locs --no-redundant",
648     "data/test-diff-suppr/test15-suppr-added-fn-report-1.txt",
649     "output/test-diff-suppr/test15-suppr-added-fn-report-1.txt"
650   },
651   {
652     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
653     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
654     "",
655     "",
656     "data/test-diff-suppr/test15-suppr-added-fn-1.suppr",
657     "--no-default-suppression --no-show-locs --no-redundant",
658     "data/test-diff-suppr/test15-suppr-added-fn-report-2.txt",
659     "output/test-diff-suppr/test15-suppr-added-fn-report-2.txt"
660   },
661   {
662     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
663     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
664     "",
665     "",
666     "data/test-diff-suppr/test15-suppr-added-fn-2.suppr",
667     "--no-default-suppression --no-show-locs --no-redundant",
668     "data/test-diff-suppr/test15-suppr-added-fn-report-3.txt",
669     "output/test-diff-suppr/test15-suppr-added-fn-report-3.txt"
670   },
671   {
672     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
673     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
674     "",
675     "",
676     "data/test-diff-suppr/test15-suppr-added-fn-3.suppr",
677     "--no-default-suppression --no-show-locs --no-redundant",
678     "data/test-diff-suppr/test15-suppr-added-fn-report-4.txt",
679     "output/test-diff-suppr/test15-suppr-added-fn-report-4.txt"
680   },
681   {
682     "data/test-diff-suppr/test15-suppr-added-fn-v0.o",
683     "data/test-diff-suppr/test15-suppr-added-fn-v1.o",
684     "",
685     "",
686     "data/test-diff-suppr/test15-suppr-added-fn-4.suppr",
687     "--no-default-suppression --no-show-locs --no-redundant",
688     "data/test-diff-suppr/test15-suppr-added-fn-report-5.txt",
689     "output/test-diff-suppr/test15-suppr-added-fn-report-5.txt"
690   },
691   {
692     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
693     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
694     "",
695     "",
696     "",
697     "--no-default-suppression --no-show-locs --no-redundant",
698     "data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt",
699     "output/test-diff-suppr/test16-suppr-removed-fn-report-0.txt"
700   },
701   {
702     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
703     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
704     "",
705     "",
706     "data/test-diff-suppr/test16-suppr-removed-fn-0.suppr",
707     "--no-default-suppression --no-show-locs --no-redundant",
708     "data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt",
709     "output/test-diff-suppr/test16-suppr-removed-fn-report-1.txt"
710   },
711   {
712     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
713     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
714     "",
715     "",
716     "data/test-diff-suppr/test16-suppr-removed-fn-1.suppr",
717     "--no-default-suppression --no-show-locs --no-redundant",
718     "data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt",
719     "output/test-diff-suppr/test16-suppr-removed-fn-report-2.txt"
720   },
721   {
722     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
723     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
724     "",
725     "",
726     "data/test-diff-suppr/test16-suppr-removed-fn-2.suppr",
727     "--no-default-suppression --no-show-locs --no-redundant",
728     "data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt",
729     "output/test-diff-suppr/test16-suppr-removed-fn-report-3.txt"
730   },
731   {
732     "data/test-diff-suppr/test16-suppr-removed-fn-v0.o",
733     "data/test-diff-suppr/test16-suppr-removed-fn-v1.o",
734     "",
735     "",
736     "data/test-diff-suppr/test16-suppr-removed-fn-3.suppr",
737     "--no-default-suppression --no-show-locs --no-redundant",
738     "data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt",
739     "output/test-diff-suppr/test16-suppr-removed-fn-report-4.txt"
740   },
741   {
742     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
743     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
744     "",
745     "",
746     "",
747     "--no-default-suppression --no-show-locs --no-redundant",
748     "data/test-diff-suppr/test17-suppr-added-var-report-0.txt",
749     "output/test-diff-suppr/test17-suppr-added-var-report-0.txt"
750   },
751   {
752     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
753     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
754     "",
755     "",
756     "data/test-diff-suppr/test17-suppr-added-var-0.suppr",
757     "--no-default-suppression --no-show-locs --no-redundant",
758     "data/test-diff-suppr/test17-suppr-added-var-report-1.txt",
759     "output/test-diff-suppr/test17-suppr-added-var-report-1.txt"
760   },
761   {
762     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
763     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
764     "",
765     "",
766     "data/test-diff-suppr/test17-suppr-added-var-1.suppr",
767     "--no-default-suppression --no-show-locs --no-redundant",
768     "data/test-diff-suppr/test17-suppr-added-var-report-2.txt",
769     "output/test-diff-suppr/test17-suppr-added-var-report-2.txt"
770   },
771   {
772     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
773     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
774     "",
775     "",
776     "data/test-diff-suppr/test17-suppr-added-var-2.suppr",
777     "--no-default-suppression --no-show-locs --no-redundant",
778     "data/test-diff-suppr/test17-suppr-added-var-report-3.txt",
779     "output/test-diff-suppr/test17-suppr-added-var-report-3.txt"
780   },
781   {
782     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
783     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
784     "",
785     "",
786     "data/test-diff-suppr/test17-suppr-added-var-3.suppr",
787     "--no-default-suppression --no-show-locs --no-redundant",
788     "data/test-diff-suppr/test17-suppr-added-var-report-4.txt",
789     "output/test-diff-suppr/test17-suppr-added-var-report-4.txt"
790   },
791   {
792     "data/test-diff-suppr/test17-suppr-added-var-v0.o",
793     "data/test-diff-suppr/test17-suppr-added-var-v1.o",
794     "",
795     "",
796     "data/test-diff-suppr/test17-suppr-added-var-4.suppr",
797     "--no-default-suppression --no-show-locs --no-redundant",
798     "data/test-diff-suppr/test17-suppr-added-var-report-5.txt",
799     "output/test-diff-suppr/test17-suppr-added-var-report-5.txt"
800   },
801   {
802     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
803     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
804     "",
805     "",
806     "",
807     "--no-default-suppression --no-show-locs --no-redundant",
808     "data/test-diff-suppr/test18-suppr-removed-var-report-0.txt",
809     "output/test-diff-suppr/test18-suppr-removed-var-report-0.txt"
810   },
811   {
812     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
813     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
814     "",
815     "",
816     "data/test-diff-suppr/test18-suppr-removed-var-0.suppr",
817     "--no-default-suppression --no-show-locs --no-redundant",
818     "data/test-diff-suppr/test18-suppr-removed-var-report-1.txt",
819     "output/test-diff-suppr/test18-suppr-removed-var-report-1.txt"
820   },
821   {
822     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
823     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
824     "",
825     "",
826     "data/test-diff-suppr/test18-suppr-removed-var-1.suppr",
827     "--no-default-suppression --no-show-locs --no-redundant",
828     "data/test-diff-suppr/test18-suppr-removed-var-report-2.txt",
829     "output/test-diff-suppr/test18-suppr-removed-var-report-2.txt"
830   },
831   {
832     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
833     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
834     "",
835     "",
836     "data/test-diff-suppr/test18-suppr-removed-var-2.suppr",
837     "--no-default-suppression --no-show-locs --no-redundant",
838     "data/test-diff-suppr/test18-suppr-removed-var-report-3.txt",
839     "output/test-diff-suppr/test18-suppr-removed-var-report-3.txt"
840   },
841   {
842     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
843     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
844     "",
845     "",
846     "data/test-diff-suppr/test18-suppr-removed-var-3.suppr",
847     "--no-default-suppression --no-show-locs --no-redundant",
848     "data/test-diff-suppr/test18-suppr-removed-var-report-4.txt",
849     "output/test-diff-suppr/test18-suppr-removed-var-report-4.txt"
850   },
851   {
852     "data/test-diff-suppr/test18-suppr-removed-var-v0.o",
853     "data/test-diff-suppr/test18-suppr-removed-var-v1.o",
854     "",
855     "",
856     "data/test-diff-suppr/test18-suppr-removed-var-4.suppr",
857     "--no-default-suppression --no-show-locs --no-redundant",
858     "data/test-diff-suppr/test18-suppr-removed-var-report-5.txt",
859     "output/test-diff-suppr/test18-suppr-removed-var-report-5.txt"
860   },
861   {
862     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
863     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
864     "",
865     "",
866     "",
867     "--no-default-suppression --no-show-locs --no-redundant",
868     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt",
869     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt"
870   },
871   {
872     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
873     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
874     "",
875     "",
876     "data/test-diff-suppr/test19-suppr-added-fn-sym-0.suppr",
877     "--no-default-suppression --no-show-locs --no-redundant",
878     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt",
879     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt"
880   },
881   {
882     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
883     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
884     "",
885     "",
886     "data/test-diff-suppr/test19-suppr-added-fn-sym-1.suppr",
887     "--no-default-suppression --no-show-locs --no-redundant",
888     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt",
889     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt"
890   },
891   {
892     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
893     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
894     "",
895     "",
896     "data/test-diff-suppr/test19-suppr-added-fn-sym-2.suppr",
897     "--no-default-suppression --no-show-locs --no-redundant",
898     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt",
899     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt"
900   },
901   {
902     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
903     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
904     "",
905     "",
906     "data/test-diff-suppr/test19-suppr-added-fn-sym-3.suppr",
907     "--no-default-suppression --no-show-locs --no-redundant",
908     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt",
909     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt"
910   },
911   {
912     "data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o",
913     "data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o",
914     "",
915     "",
916     "data/test-diff-suppr/test19-suppr-added-fn-sym-4.suppr",
917     "--no-default-suppression --no-show-locs --no-redundant",
918     "data/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt",
919     "output/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt"
920   },
921   {
922     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
923     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
924     "",
925     "",
926     "",
927     "--no-default-suppression --no-show-locs --no-redundant",
928     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt",
929     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt"
930   },
931   {
932     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
933     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
934     "",
935     "",
936     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt",
937     "--no-default-suppression --no-show-locs --no-redundant",
938     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt",
939     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt"
940   },
941   {
942     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
943     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
944     "",
945     "",
946     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt",
947     "--no-default-suppression --no-show-locs --no-redundant",
948     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt",
949     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt"
950   },
951   {
952     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
953     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
954     "",
955     "",
956     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt",
957     "--no-default-suppression --no-show-locs --no-redundant",
958     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt",
959     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt"
960   },
961   {
962     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
963     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
964     "",
965     "",
966     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt",
967     "--no-default-suppression --no-show-locs --no-redundant",
968     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt",
969     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt"
970   },
971   {
972     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o",
973     "data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o",
974     "",
975     "",
976     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt",
977     "--no-default-suppression --no-show-locs --no-redundant",
978     "data/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt",
979     "output/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt"
980   },
981   {
982     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
983     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
984     "",
985     "",
986     "",
987     "--no-default-suppression --no-show-locs --no-redundant",
988     "data/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt",
989     "output/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt"
990   },
991   {
992     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
993     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
994     "",
995     "",
996     "data/test-diff-suppr/test21-suppr-added-var-sym-0.suppr",
997     "--no-default-suppression --no-show-locs --no-redundant",
998     "data/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt",
999     "output/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt"
1000   },
1001   {
1002     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1003     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1004     "",
1005     "",
1006     "data/test-diff-suppr/test21-suppr-added-var-sym-1.suppr",
1007     "--no-default-suppression --no-show-locs --no-redundant",
1008     "data/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt",
1009     "output/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt"
1010   },
1011   {
1012     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1013     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1014     "",
1015     "",
1016     "data/test-diff-suppr/test21-suppr-added-var-sym-2.suppr",
1017     "--no-default-suppression --no-show-locs --no-redundant",
1018     "data/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt",
1019     "output/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt"
1020   },
1021   {
1022     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1023     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1024     "",
1025     "",
1026     "data/test-diff-suppr/test21-suppr-added-var-sym-3.suppr",
1027     "--no-default-suppression --no-show-locs --no-redundant",
1028     "data/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt",
1029     "output/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt"
1030   },
1031   {
1032     "data/test-diff-suppr/test21-suppr-added-var-sym-v0.o",
1033     "data/test-diff-suppr/test21-suppr-added-var-sym-v1.o",
1034     "",
1035     "",
1036     "data/test-diff-suppr/test21-suppr-added-var-sym-4.suppr",
1037     "--no-default-suppression --no-show-locs --no-redundant",
1038     "data/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt",
1039     "output/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt"
1040   },
1041   {
1042     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1043     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1044     "",
1045     "",
1046     "",
1047     "--no-default-suppression --no-show-locs --no-redundant",
1048     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt",
1049     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt"
1050   },
1051   {
1052     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1053     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1054     "",
1055     "",
1056     "data/test-diff-suppr/test22-suppr-removed-var-sym-0.suppr",
1057     "--no-default-suppression --no-show-locs --no-redundant",
1058     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt",
1059     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt"
1060   },
1061   {
1062     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1063     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1064     "",
1065     "",
1066     "data/test-diff-suppr/test22-suppr-removed-var-sym-1.suppr",
1067     "--no-default-suppression --no-show-locs --no-redundant",
1068     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt",
1069     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt"
1070   },
1071   {
1072     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1073     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1074     "",
1075     "",
1076     "data/test-diff-suppr/test22-suppr-removed-var-sym-2.suppr",
1077     "--no-default-suppression --no-show-locs --no-redundant",
1078     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt",
1079     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt"
1080   },
1081   {
1082     "data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o",
1083     "data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o",
1084     "",
1085     "",
1086     "data/test-diff-suppr/test22-suppr-removed-var-sym-3.suppr",
1087     "--no-default-suppression --no-show-locs --no-redundant",
1088     "data/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt",
1089     "output/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt"
1090   },
1091   {
1092     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1093     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1094     "",
1095     "",
1096     "",
1097     "--no-default-suppression --no-show-locs --no-redundant",
1098     "data/test-diff-suppr/test23-alias-filter-report-0.txt",
1099     "output/test-diff-suppr/test23-alias-filter-report-0.txt"
1100   },
1101   {
1102     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1103     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1104     "",
1105     "",
1106     "data/test-diff-suppr/test23-alias-filter-0.suppr",
1107     "--no-default-suppression --no-show-locs --no-redundant",
1108     "data/test-diff-suppr/test23-alias-filter-report-1.txt",
1109     "output/test-diff-suppr/test23-alias-filter-report-1.txt"
1110   },
1111   {
1112     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1113     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1114     "",
1115     "",
1116     "data/test-diff-suppr/test23-alias-filter-1.suppr",
1117     "--no-default-suppression --no-show-locs --no-redundant",
1118     "data/test-diff-suppr/test23-alias-filter-report-2.txt",
1119     "output/test-diff-suppr/test23-alias-filter-report-2.txt"
1120   },
1121   {
1122     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1123     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1124     "",
1125     "",
1126     "data/test-diff-suppr/test23-alias-filter-2.suppr",
1127     "--no-default-suppression --no-show-locs --no-redundant",
1128     "data/test-diff-suppr/test23-alias-filter-report-3.txt",
1129     "output/test-diff-suppr/test23-alias-filter-report-3.txt"
1130   },
1131   {
1132     "data/test-diff-suppr/libtest23-alias-filter-v0.so",
1133     "data/test-diff-suppr/libtest23-alias-filter-v1.so ",
1134     "",
1135     "",
1136     "data/test-diff-suppr/test23-alias-filter-4.suppr",
1137     "--no-default-suppression --no-show-locs --no-redundant",
1138     "data/test-diff-suppr/test23-alias-filter-report-5.txt",
1139     "output/test-diff-suppr/test23-alias-filter-report-5.txt"
1140   },
1141   {
1142     "data/test-diff-suppr/libtest24-soname-v0.so",
1143     "data/test-diff-suppr/libtest24-soname-v1.so",
1144     "",
1145     "",
1146     "data/test-diff-suppr/test24-soname-suppr-0.txt",
1147     "--no-default-suppression --no-show-locs --no-redundant",
1148     "data/test-diff-suppr/test24-soname-report-0.txt",
1149     "output/test-diff-suppr/test24-soname-report-0.txt"
1150   },
1151   {
1152     "data/test-diff-suppr/libtest24-soname-v0.so",
1153     "data/test-diff-suppr/libtest24-soname-v1.so",
1154     "",
1155     "",
1156     "data/test-diff-suppr/test24-soname-suppr-1.txt",
1157     "--no-default-suppression --no-show-locs --no-redundant",
1158     "data/test-diff-suppr/test24-soname-report-1.txt",
1159     "output/test-diff-suppr/test24-soname-report-1.txt"
1160   },
1161   {
1162     "data/test-diff-suppr/libtest24-soname-v0.so",
1163     "data/test-diff-suppr/libtest24-soname-v1.so",
1164     "",
1165     "",
1166     "data/test-diff-suppr/test24-soname-suppr-2.txt",
1167     "--no-default-suppression --no-show-locs --no-redundant",
1168     "data/test-diff-suppr/test24-soname-report-2.txt",
1169     "output/test-diff-suppr/test24-soname-report-2.txt"
1170   },
1171   {
1172     "data/test-diff-suppr/libtest24-soname-v0.so",
1173     "data/test-diff-suppr/libtest24-soname-v1.so",
1174     "",
1175     "",
1176     "data/test-diff-suppr/test24-soname-suppr-3.txt",
1177     "--no-default-suppression --no-show-locs --no-redundant",
1178     "data/test-diff-suppr/test24-soname-report-3.txt",
1179     "output/test-diff-suppr/test24-soname-report-3.txt"
1180   },
1181   {
1182     "data/test-diff-suppr/libtest24-soname-v0.so",
1183     "data/test-diff-suppr/libtest24-soname-v1.so",
1184     "",
1185     "",
1186     "data/test-diff-suppr/test24-soname-suppr-4.txt",
1187     "--no-default-suppression --no-show-locs --no-redundant",
1188     "data/test-diff-suppr/test24-soname-report-4.txt",
1189     "output/test-diff-suppr/test24-soname-report-4.txt"
1190   },
1191   {
1192     "data/test-diff-suppr/libtest24-soname-v0.so",
1193     "data/test-diff-suppr/libtest24-soname-v1.so",
1194     "",
1195     "",
1196     "data/test-diff-suppr/test24-soname-suppr-5.txt",
1197     "--no-default-suppression --no-show-locs --no-redundant",
1198     "data/test-diff-suppr/test24-soname-report-5.txt",
1199     "output/test-diff-suppr/test24-soname-report-5.txt"
1200   },
1201   {
1202     "data/test-diff-suppr/libtest24-soname-v0.so",
1203     "data/test-diff-suppr/libtest24-soname-v1.so",
1204     "",
1205     "",
1206     "data/test-diff-suppr/test24-soname-suppr-6.txt",
1207     "--no-default-suppression --no-show-locs --no-redundant",
1208     "data/test-diff-suppr/test24-soname-report-6.txt",
1209     "output/test-diff-suppr/test24-soname-report-6.txt"
1210   },
1211   {
1212     "data/test-diff-suppr/libtest24-soname-v0.so",
1213     "data/test-diff-suppr/libtest24-soname-v1.so",
1214     "",
1215     "",
1216     "data/test-diff-suppr/test24-soname-suppr-7.txt",
1217     "--no-default-suppression --no-show-locs --no-redundant",
1218     "data/test-diff-suppr/test24-soname-report-7.txt",
1219     "output/test-diff-suppr/test24-soname-report-7.txt"
1220   },
1221   {
1222     "data/test-diff-suppr/libtest24-soname-v0.so",
1223     "data/test-diff-suppr/libtest24-soname-v1.so",
1224     "",
1225     "",
1226     "data/test-diff-suppr/test24-soname-suppr-8.txt",
1227     "--no-default-suppression --no-show-locs --no-redundant",
1228     "data/test-diff-suppr/test24-soname-report-8.txt",
1229     "output/test-diff-suppr/test24-soname-report-8.txt"
1230   },
1231   {
1232     "data/test-diff-suppr/libtest24-soname-v0.so",
1233     "data/test-diff-suppr/libtest24-soname-v1.so",
1234     "",
1235     "",
1236     "data/test-diff-suppr/test24-soname-suppr-9.txt",
1237     "--no-default-suppression --no-show-locs --no-redundant",
1238     "data/test-diff-suppr/test24-soname-report-9.txt",
1239     "output/test-diff-suppr/test24-soname-report-9.txt"
1240   },
1241   {
1242     "data/test-diff-suppr/libtest24-soname-v0.so",
1243     "data/test-diff-suppr/libtest24-soname-v1.so",
1244     "",
1245     "",
1246     "data/test-diff-suppr/test24-soname-suppr-10.txt",
1247     "--no-default-suppression --no-show-locs --no-redundant",
1248     "data/test-diff-suppr/test24-soname-report-10.txt",
1249     "output/test-diff-suppr/test24-soname-report-10.txt"
1250   },
1251   {
1252     "data/test-diff-suppr/libtest24-soname-v0.so",
1253     "data/test-diff-suppr/libtest24-soname-v1.so",
1254     "",
1255     "",
1256     "data/test-diff-suppr/test24-soname-suppr-11.txt",
1257     "--no-default-suppression --no-show-locs --no-redundant",
1258     "data/test-diff-suppr/test24-soname-report-11.txt",
1259     "output/test-diff-suppr/test24-soname-report-11.txt"
1260   },
1261   {
1262     "data/test-diff-suppr/libtest24-soname-v0.so",
1263     "data/test-diff-suppr/libtest24-soname-v1.so",
1264     "",
1265     "",
1266     "data/test-diff-suppr/test24-soname-suppr-12.txt",
1267     "--no-default-suppression --no-show-locs --no-redundant",
1268     "data/test-diff-suppr/test24-soname-report-12.txt",
1269     "output/test-diff-suppr/test24-soname-report-12.txt"
1270   },
1271   {
1272     "data/test-diff-suppr/libtest24-soname-v0.so",
1273     "data/test-diff-suppr/libtest24-soname-v1.so",
1274     "",
1275     "",
1276     "data/test-diff-suppr/test24-soname-suppr-13.txt",
1277     "--no-default-suppression --no-show-locs --no-redundant",
1278     "data/test-diff-suppr/test24-soname-report-13.txt",
1279     "output/test-diff-suppr/test24-soname-report-13.txt"
1280   },
1281   {
1282     "data/test-diff-suppr/libtest24-soname-v0.so",
1283     "data/test-diff-suppr/libtest24-soname-v1.so",
1284     "",
1285     "",
1286     "data/test-diff-suppr/test24-soname-suppr-13.txt",
1287     "--no-default-suppression --no-show-locs --no-redundant",
1288     "data/test-diff-suppr/test24-soname-report-13.txt",
1289     "output/test-diff-suppr/test24-soname-report-13.txt"
1290   },
1291   {
1292     "data/test-diff-suppr/libtest24-soname-v0.so",
1293     "data/test-diff-suppr/libtest24-soname-v1.so",
1294     "",
1295     "",
1296     "data/test-diff-suppr/test24-soname-suppr-14.txt",
1297     "--no-default-suppression --no-show-locs --no-redundant",
1298     "data/test-diff-suppr/test24-soname-report-14.txt",
1299     "output/test-diff-suppr/test24-soname-report-14.txt"
1300   },
1301   {
1302     "data/test-diff-suppr/libtest24-soname-v0.so",
1303     "data/test-diff-suppr/libtest24-soname-v1.so",
1304     "",
1305     "",
1306     "data/test-diff-suppr/test24-soname-suppr-15.txt",
1307     "--no-default-suppression --no-show-locs --no-redundant",
1308     "data/test-diff-suppr/test24-soname-report-15.txt",
1309     "output/test-diff-suppr/test24-soname-report-15.txt"
1310   },
1311   {
1312     "data/test-diff-suppr/libtest24-soname-v0.so",
1313     "data/test-diff-suppr/libtest24-soname-v1.so",
1314     "",
1315     "",
1316     "data/test-diff-suppr/test24-soname-suppr-16.txt",
1317     "--no-default-suppression --no-show-locs --no-redundant",
1318     "data/test-diff-suppr/test24-soname-report-16.txt",
1319     "output/test-diff-suppr/test24-soname-report-16.txt"
1320   },
1321   {
1322     "data/test-diff-suppr/libtest25-typedef-v0.so",
1323     "data/test-diff-suppr/libtest25-typedef-v1.so",
1324     "",
1325     "",
1326     "",
1327     "--no-default-suppression --no-show-locs --no-redundant",
1328     "data/test-diff-suppr/test25-typedef-report-0.txt",
1329     "output/test-diff-suppr/test25-typedef-report-0.txt"
1330   },
1331   {
1332     "data/test-diff-suppr/libtest25-typedef-v0.so",
1333     "data/test-diff-suppr/libtest25-typedef-v1.so",
1334     "",
1335     "",
1336     "data/test-diff-suppr/test25-typedef-suppr-0.txt",
1337     "--no-default-suppression --no-show-locs --no-redundant",
1338     "data/test-diff-suppr/test25-typedef-report-1.txt",
1339     "output/test-diff-suppr/test25-typedef-report-1.txt"
1340   },
1341   {
1342     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1343     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1344     "",
1345     "",
1346     "",
1347     "--no-default-suppression --no-show-locs --no-redundant",
1348     "data/test-diff-suppr/test26-loc-suppr-report-0.txt",
1349     "output/test-diff-suppr/test26-loc-suppr-report-0.txt"
1350   },
1351   {
1352     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1353     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1354     "",
1355     "",
1356     "data/test-diff-suppr/test26-loc-suppr-0.suppr",
1357     "--no-default-suppression --no-show-locs --no-redundant",
1358     "data/test-diff-suppr/test26-loc-suppr-report-1.txt",
1359     "output/test-diff-suppr/test26-loc-suppr-report-1.txt"
1360   },
1361   {
1362     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1363     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1364     "",
1365     "",
1366     "data/test-diff-suppr/test26-loc-suppr-1.suppr",
1367     "--no-default-suppression --no-show-locs --no-redundant",
1368     "data/test-diff-suppr/test26-loc-suppr-report-2.txt",
1369     "output/test-diff-suppr/test26-loc-suppr-report-2.txt"
1370   },
1371   {
1372     "data/test-diff-suppr/libtest26-loc-suppr-v0.so",
1373     "data/test-diff-suppr/libtest26-loc-suppr-v1.so",
1374     "",
1375     "",
1376     "data/test-diff-suppr/test26-loc-suppr-2.suppr",
1377     "--no-default-suppression --no-show-locs --no-redundant",
1378     "data/test-diff-suppr/test26-loc-suppr-report-3.txt",
1379     "output/test-diff-suppr/test26-loc-suppr-report-3.txt"
1380   },
1381   {
1382     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1383     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1384     "",
1385     "",
1386     "",
1387     "--no-default-suppression --no-show-locs --no-redundant",
1388     "data/test-diff-suppr/test27-add-aliased-function-report-0.txt",
1389     "output/test-diff-suppr/test27-add-aliased-function-report-0.txt"
1390   },
1391   {
1392     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1393     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1394     "",
1395     "",
1396     "data/test-diff-suppr/test27-add-aliased-function-0.suppr",
1397     "--no-default-suppression --no-show-locs --no-redundant",
1398     "data/test-diff-suppr/test27-add-aliased-function-report-1.txt",
1399     "output/test-diff-suppr/test27-add-aliased-function-report-1.txt"
1400   },
1401   {
1402     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1403     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1404     "",
1405     "",
1406     "data/test-diff-suppr/test27-add-aliased-function-1.suppr",
1407     "--no-default-suppression --no-show-locs --no-redundant",
1408     "data/test-diff-suppr/test27-add-aliased-function-report-2.txt",
1409     "output/test-diff-suppr/test27-add-aliased-function-report-2.txt"
1410   },
1411   {
1412     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1413     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1414     "",
1415     "",
1416     "data/test-diff-suppr/test27-add-aliased-function-2.suppr",
1417     "--no-default-suppression --no-show-locs --no-redundant",
1418     "data/test-diff-suppr/test27-add-aliased-function-report-3.txt",
1419     "output/test-diff-suppr/test27-add-aliased-function-report-3.txt"
1420   },
1421   {
1422     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1423     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1424     "",
1425     "",
1426     "data/test-diff-suppr/test27-add-aliased-function-3.suppr",
1427     "--no-default-suppression --no-show-locs --no-redundant",
1428     "data/test-diff-suppr/test27-add-aliased-function-report-4.txt",
1429     "output/test-diff-suppr/test27-add-aliased-function-report-4.txt"
1430   },
1431   {
1432     "data/test-diff-suppr/test27-add-aliased-function-v0.o",
1433     "data/test-diff-suppr/test27-add-aliased-function-v1.o",
1434     "",
1435     "",
1436     "data/test-diff-suppr/test27-add-aliased-function-4.suppr",
1437     "--no-default-suppression --no-show-locs --no-redundant",
1438     "data/test-diff-suppr/test27-add-aliased-function-report-5.txt",
1439     "output/test-diff-suppr/test27-add-aliased-function-report-5.txt"
1440   },
1441   {
1442     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1443     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1444     "",
1445     "",
1446     "",
1447     "--no-default-suppression --no-show-locs --no-redundant",
1448     "data/test-diff-suppr/test28-add-aliased-function-report-0.txt",
1449     "output/test-diff-suppr/test28-add-aliased-function-report-0.txt"
1450   },
1451   {
1452     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1453     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1454     "",
1455     "",
1456     "data/test-diff-suppr/test28-add-aliased-function-0.suppr",
1457     "--no-default-suppression --no-show-locs --no-redundant",
1458     "data/test-diff-suppr/test28-add-aliased-function-report-1.txt",
1459     "output/test-diff-suppr/test28-add-aliased-function-report-1.txt"
1460   },
1461   {
1462     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1463     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1464     "",
1465     "",
1466     "data/test-diff-suppr/test28-add-aliased-function-1.suppr",
1467     "--no-default-suppression --no-show-locs --no-redundant",
1468     "data/test-diff-suppr/test28-add-aliased-function-report-2.txt",
1469     "output/test-diff-suppr/test28-add-aliased-function-report-2.txt"
1470   },
1471   {
1472     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1473     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1474     "",
1475     "",
1476     "data/test-diff-suppr/test28-add-aliased-function-2.suppr",
1477     "--no-default-suppression --no-show-locs --no-redundant",
1478     "data/test-diff-suppr/test28-add-aliased-function-report-3.txt",
1479     "output/test-diff-suppr/test28-add-aliased-function-report-3.txt"
1480   },
1481   {
1482     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1483     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1484     "",
1485     "",
1486     "data/test-diff-suppr/test28-add-aliased-function-3.suppr",
1487     "--no-default-suppression --no-show-locs --no-redundant",
1488     "data/test-diff-suppr/test28-add-aliased-function-report-4.txt",
1489     "output/test-diff-suppr/test28-add-aliased-function-report-4.txt"
1490   },
1491   {
1492     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1493     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1494     "",
1495     "",
1496     "data/test-diff-suppr/test28-add-aliased-function-4.suppr",
1497     "--no-default-suppression --no-show-locs --no-redundant",
1498     "data/test-diff-suppr/test28-add-aliased-function-report-5.txt",
1499     "output/test-diff-suppr/test28-add-aliased-function-report-5.txt"
1500   },
1501   {
1502     "data/test-diff-suppr/test28-add-aliased-function-v0.o",
1503     "data/test-diff-suppr/test28-add-aliased-function-v1.o",
1504     "",
1505     "",
1506     "data/test-diff-suppr/test28-add-aliased-function-5.suppr",
1507     "--no-default-suppression --no-show-locs --no-redundant",
1508     "data/test-diff-suppr/test28-add-aliased-function-report-6.txt",
1509     "output/test-diff-suppr/test28-add-aliased-function-report-6.txt"
1510   },
1511   {
1512     "data/test-diff-suppr/libtest29-soname-v0.so",
1513     "data/test-diff-suppr/libtest29-soname-v1.so",
1514     "",
1515     "",
1516     "data/test-diff-suppr/test29-suppr-0.txt",
1517     "--no-default-suppression --no-show-locs --no-redundant",
1518     "data/test-diff-suppr/test29-soname-report-0.txt",
1519     "output/test-diff-suppr/test29-soname-report-0.txt"
1520   },
1521   {
1522     "data/test-diff-suppr/libtest29-soname-v0.so",
1523     "data/test-diff-suppr/libtest29-soname-v1.so",
1524     "",
1525     "",
1526     "data/test-diff-suppr/test29-suppr-1.txt",
1527     "--no-default-suppression --no-show-locs --no-redundant",
1528     "data/test-diff-suppr/test29-soname-report-1.txt",
1529     "output/test-diff-suppr/test29-soname-report-1.txt"
1530   },
1531   {
1532     "data/test-diff-suppr/libtest29-soname-v0.so",
1533     "data/test-diff-suppr/libtest29-soname-v1.so",
1534     "",
1535     "",
1536     "data/test-diff-suppr/test29-suppr-2.txt",
1537     "--no-default-suppression --no-show-locs --no-redundant",
1538     "data/test-diff-suppr/test29-soname-report-2.txt",
1539     "output/test-diff-suppr/test29-soname-report-2.txt"
1540   },
1541   {
1542     "data/test-diff-suppr/libtest29-soname-v0.so",
1543     "data/test-diff-suppr/libtest29-soname-v1.so",
1544     "",
1545     "",
1546     "data/test-diff-suppr/test29-suppr-3.txt",
1547     "--no-default-suppression --no-show-locs --no-redundant",
1548     "data/test-diff-suppr/test29-soname-report-3.txt",
1549     "output/test-diff-suppr/test29-soname-report-3.txt"
1550   },
1551   {
1552     "data/test-diff-suppr/libtest29-soname-v0.so",
1553     "data/test-diff-suppr/libtest29-soname-v1.so",
1554     "",
1555     "",
1556     "data/test-diff-suppr/test29-suppr-4.txt",
1557     "--no-default-suppression --no-show-locs --no-redundant",
1558     "data/test-diff-suppr/test29-soname-report-4.txt",
1559     "output/test-diff-suppr/test29-soname-report-4.txt"
1560   },
1561   {
1562     "data/test-diff-suppr/libtest29-soname-v0.so",
1563     "data/test-diff-suppr/libtest29-soname-v1.so",
1564     "",
1565     "",
1566     "data/test-diff-suppr/test29-suppr-5.txt",
1567     "--no-default-suppression --no-show-locs --no-redundant",
1568     "data/test-diff-suppr/test29-soname-report-5.txt",
1569     "output/test-diff-suppr/test29-soname-report-5.txt"
1570   },
1571   {
1572     "data/test-diff-suppr/libtest29-soname-v0.so",
1573     "data/test-diff-suppr/libtest29-soname-v1.so",
1574     "",
1575     "",
1576     "data/test-diff-suppr/test29-suppr-6.txt",
1577     "--no-default-suppression --no-show-locs --no-redundant",
1578     "data/test-diff-suppr/test29-soname-report-6.txt",
1579     "output/test-diff-suppr/test29-soname-report-6.txt"
1580   },
1581   {
1582     "data/test-diff-suppr/libtest29-soname-v0.so",
1583     "data/test-diff-suppr/libtest29-soname-v1.so",
1584     "",
1585     "",
1586     "data/test-diff-suppr/test29-suppr-7.txt",
1587     "--no-default-suppression --no-show-locs --no-redundant",
1588     "data/test-diff-suppr/test29-soname-report-7.txt",
1589     "output/test-diff-suppr/test29-soname-report-7.txt"
1590   },
1591   {
1592     "data/test-diff-suppr/libtest29-soname-v0.so",
1593     "data/test-diff-suppr/libtest29-soname-v1.so",
1594     "",
1595     "",
1596     "data/test-diff-suppr/test29-suppr-8.txt",
1597     "--no-default-suppression --no-show-locs --no-redundant",
1598     "data/test-diff-suppr/test29-soname-report-8.txt",
1599     "output/test-diff-suppr/test29-soname-report-8.txt"
1600   },
1601   {
1602     "data/test-diff-suppr/test30-pub-lib-v0.so",
1603     "data/test-diff-suppr/test30-pub-lib-v1.so",
1604     "",
1605     "",
1606     "",
1607     "--no-default-suppression",
1608     "data/test-diff-suppr/test30-report-0.txt",
1609     "output/test-diff-suppr/test30-report-0.txt"
1610   },
1611   {
1612     "data/test-diff-suppr/test30-pub-lib-v0.so",
1613     "data/test-diff-suppr/test30-pub-lib-v1.so",
1614     "data/test-diff-suppr/test30-include-dir-v0",
1615     "data/test-diff-suppr/test30-include-dir-v1",
1616     "",
1617     "--no-default-suppression",
1618     "data/test-diff-suppr/test30-report-1.txt",
1619     "output/test-diff-suppr/test30-report-1.txt"
1620   },
1621   {
1622     "data/test-diff-suppr/libtest31-v0.so",
1623     "data/test-diff-suppr/libtest31-v1.so",
1624     "",
1625     "",
1626     "data/test-diff-suppr/libtest31.suppr",
1627     "--no-default-suppression --no-show-locs --no-redundant",
1628     "data/test-diff-suppr/test31-report-0.txt",
1629     "output/test-diff-suppr/test31-report-0.txt"
1630   },
1631   {
1632     "data/test-diff-suppr/libtest31-v0.so",
1633     "data/test-diff-suppr/libtest31-v1.so",
1634     "",
1635     "",
1636     "",
1637     "--no-default-suppression --no-show-locs --no-redundant",
1638     "data/test-diff-suppr/test31-report-1.txt",
1639     "output/test-diff-suppr/test31-report-1.txt"
1640   },
1641   {
1642     "data/test-diff-suppr/libtest32-v0.so",
1643     "data/test-diff-suppr/libtest32-v1.so",
1644     "",
1645     "",
1646     "",
1647     "--no-default-suppression --no-show-locs --no-redundant",
1648     "data/test-diff-suppr/test32-report-0.txt",
1649     "output/test-diff-suppr/test32-report-0.txt"
1650   },
1651   {
1652     "data/test-diff-suppr/libtest32-v0.so",
1653     "data/test-diff-suppr/libtest32-v1.so",
1654     "",
1655     "",
1656     "data/test-diff-suppr/libtest32-0.suppr",
1657     "--no-default-suppression --no-show-locs --no-redundant",
1658     "data/test-diff-suppr/test32-report-1.txt",
1659     "output/test-diff-suppr/test32-report-1.txt"
1660   },
1661   {
1662     "data/test-diff-suppr/libtest33-v0.so",
1663     "data/test-diff-suppr/libtest33-v1.so",
1664     "",
1665     "",
1666     "data/test-diff-suppr/test33-suppr-1.txt",
1667     "--no-default-suppression --no-show-locs --no-redundant",
1668     "data/test-diff-suppr/test33-report-0.txt",
1669     "output/test-diff-suppr/test33-report-0.txt"
1670   },
1671   {
1672     "data/test-diff-suppr/libtest34-v0.so",
1673     "data/test-diff-suppr/libtest34-v1.so",
1674     "data/test-diff-suppr/test34-pub-include-dir-v0",
1675     "data/test-diff-suppr/test34-pub-include-dir-v1",
1676     "",
1677     "--no-default-suppression",
1678     "data/test-diff-suppr/test34-report-0.txt",
1679     "output/test-diff-suppr/test34-report-0.txt"
1680   },
1681   {
1682     "data/test-diff-suppr/libtest35-leaf-v0.so",
1683     "data/test-diff-suppr/libtest35-leaf-v1.so",
1684     "",
1685     "",
1686     "data/test-diff-suppr/test35-leaf.suppr",
1687     "--no-default-suppression --leaf-changes-only --impacted-interfaces",
1688     "data/test-diff-suppr/test35-leaf-report-0.txt",
1689     "output/test-diff-suppr/test35-leaf-report-0.txt"
1690   },
1691   {
1692     "data/test-diff-suppr/libtest36-leaf-v0.so",
1693     "data/test-diff-suppr/libtest36-leaf-v1.so",
1694     "",
1695     "",
1696     "",
1697     "--no-default-suppression --leaf-changes-only --impacted-interfaces",
1698     "data/test-diff-suppr/test36-leaf-report-0.txt",
1699     "output/test-diff-suppr/test36-leaf-report-0.txt"
1700   },
1701   {
1702     "data/test-diff-suppr/test37-opaque-type-v0.o",
1703     "data/test-diff-suppr/test37-opaque-type-v1.o",
1704     "data/test-diff-suppr/test37-opaque-type-header-dir",
1705     "data/test-diff-suppr/test37-opaque-type-header-dir",
1706     "",
1707     "--no-default-suppression",
1708     "data/test-diff-suppr/test37-opaque-type-report-0.txt",
1709     "output/test-diff-suppr/test37-opaque-type-report-0.txt"
1710   },
1711   {
1712    "data/test-diff-suppr/test38-char-class-in-ini-v0.o",
1713    "data/test-diff-suppr/test38-char-class-in-ini-v1.o",
1714    "",
1715    "",
1716    "data/test-diff-suppr/test38-char-class-in-ini.abignore",
1717    "--no-default-suppression",
1718    "data/test-diff-suppr/test38-char-class-in-ini-report-0.txt",
1719    "output/test-diff-suppr/test38-char-class-in-ini-report-0.txt"
1720   },
1721   {
1722     "data/test-diff-suppr/test39-opaque-type-v0.o",
1723     "data/test-diff-suppr/test39-opaque-type-v1.o",
1724     "data/test-diff-suppr/test39-public-headers-dir",
1725     "data/test-diff-suppr/test39-public-headers-dir",
1726     "",
1727     "--no-default-suppression",
1728     "data/test-diff-suppr/test39-opaque-type-report-0.txt",
1729     "output/test-diff-suppr/test39-opaque-type-report-0.txt"
1730   },
1731   {
1732     "data/test-diff-suppr/libtest40-enumerator-changes-v0.so",
1733     "data/test-diff-suppr/libtest40-enumerator-changes-v1.so",
1734     "",
1735     "",
1736     "data/test-diff-suppr/test40-enumerator-changes-0.suppr",
1737     "--no-default-suppression",
1738     "data/test-diff-suppr/test40-enumerator-changes-report-0.txt",
1739     "output/test-diff-suppr/test40-enumerator-changes-report-0.txt"
1740   },
1741   {
1742     "data/test-diff-suppr/libtest41-enumerator-changes-v0.so",
1743     "data/test-diff-suppr/libtest41-enumerator-changes-v1.so",
1744     "",
1745     "",
1746     "data/test-diff-suppr/test41-enumerator-changes-0.suppr",
1747     "--no-default-suppression",
1748     "data/test-diff-suppr/test41-enumerator-changes-report-0.txt",
1749     "output/test-diff-suppr/test41-enumerator-changes-report-0.txt"
1750   },
1751   {
1752     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v0.o",
1753     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v1.o",
1754     "",
1755     "",
1756     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt",
1757     "--no-default-suppression",
1758     "data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt",
1759     "output/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt"
1760   },
1761   // This should be the last entry
1762   {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1763 };
1764
1765 int
1766 main()
1767 {
1768   using abigail::tests::get_src_dir;
1769   using abigail::tests::get_build_dir;
1770   using abigail::tools_utils::ensure_parent_dir_created;
1771   using abigail::tools_utils::abidiff_status;
1772
1773   bool is_ok = true;
1774   string in_elfv0_path, in_elfv1_path, headers_dir1, headers_dir2,
1775     in_suppression_path, abidiff_options, abidiff, cmd,
1776     ref_diff_report_path, out_diff_report_path;
1777
1778     for (InOutSpec* s = in_out_specs; s->in_elfv0_path; ++s)
1779       {
1780         in_elfv0_path = string(get_src_dir()) + "/tests/" + s->in_elfv0_path;
1781         in_elfv1_path = string(get_src_dir()) + "/tests/" + s->in_elfv1_path;
1782         if (s->in_suppr_path && strcmp(s->in_suppr_path, ""))
1783           in_suppression_path =
1784             string(get_src_dir()) + "/tests/" + s->in_suppr_path;
1785         else
1786           in_suppression_path.clear();
1787
1788         abidiff_options = s->abidiff_options;
1789
1790         ref_diff_report_path =
1791           string(get_src_dir()) + "/tests/" + s->in_report_path;
1792         out_diff_report_path =
1793           string(get_build_dir()) + "/tests/" + s->out_report_path;
1794
1795         if (s->headers_dir1 && strcmp(s->headers_dir1, ""))
1796           headers_dir1 = s->headers_dir1;
1797         else
1798           headers_dir1.clear();
1799
1800         if (s->headers_dir2 && strcmp(s->headers_dir2, ""))
1801           headers_dir2 = s->headers_dir2;
1802         else
1803           headers_dir2.clear();
1804
1805         if (!ensure_parent_dir_created(out_diff_report_path))
1806           {
1807             cerr << "could not create parent directory for "
1808                  << out_diff_report_path;
1809             is_ok = false;
1810             continue;
1811           }
1812
1813         abidiff = string(get_build_dir()) + "/tools/abidiff";
1814         abidiff += " " + abidiff_options;
1815
1816         if (!in_suppression_path.empty())
1817           abidiff += " --suppressions " + in_suppression_path;
1818
1819         if (!headers_dir1.empty())
1820           abidiff +=
1821             " --hd1 " + string(get_src_dir()) + "/tests/" + headers_dir1;
1822
1823         if (!headers_dir2.empty())
1824           abidiff +=
1825             " --hd2 " + string(get_src_dir()) + "/tests/" + headers_dir2;
1826
1827         cmd = abidiff + " " + in_elfv0_path + " " + in_elfv1_path;
1828         cmd += " > " + out_diff_report_path;
1829
1830         bool bidiff_ok = true;
1831         int code = system(cmd.c_str());
1832         if (!WIFEXITED(code))
1833           bidiff_ok = false;
1834         else
1835           {
1836             abigail::tools_utils::abidiff_status status =
1837               static_cast<abidiff_status>(WEXITSTATUS(code));
1838             if (abigail::tools_utils::abidiff_status_has_error(status))
1839               bidiff_ok = false;
1840           }
1841
1842         if (bidiff_ok)
1843           {
1844             cmd = "diff -u " + ref_diff_report_path
1845               + " " + out_diff_report_path;
1846             if (system(cmd.c_str()))
1847               is_ok = false;
1848           }
1849         else
1850           is_ok = false;
1851       }
1852
1853     return !is_ok;
1854 }