1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright (c) 2019, Joyent, Inc.
14 */
15
16 /*
17 * This tests that we don't end up with several copies of the same type.
18 */
19
20 #include "check-common.h"
21
22 static check_symbol_t check_syms[] = {
23 { "int", "a" },
24 { "short", "b" },
25 { "const char *", "c" },
26 { "float", "d" },
27 { "double" "e" },
28 { "int", "f" },
29 { "short", "g" },
30 { "const char *", "h" },
31 { "float", "i" },
32 { "double" "j" },
33 { "int", "k" },
34 { "short", "l" },
35 { "const char *", "m" },
36 { "float", "n" },
37 { "double" "o" },
38 { "int", "p" },
39 { "short", "q" },
40 { "const char *", "r" },
41 { "float", "s" },
42 { "double" "t" },
43 { "struct dup" "dupmain" },
44 { "struct dup" "dup1" },
45 { "struct dup" "dup2" },
46 { "struct dup" "dup3" },
47 { NULL }
48 };
49
50
51 int
main(int argc,char * argv[])52 main(int argc, char *argv[])
53 {
54 int i, ret = 0;
55
56 if (argc < 2) {
57 errx(EXIT_FAILURE, "missing test files");
58 }
59
60 for (i = 1; i < argc; i++) {
61 ctf_file_t *fp;
62
63 if ((fp = ctf_open(argv[i], &ret)) == NULL) {
64 warnx("failed to open %s: %s", argv[i],
65 ctf_errmsg(ret));
66 ret = EXIT_FAILURE;
67 continue;
68 }
69
70 if (!ctftest_check_symbols(fp, check_syms)) {
71 ret = EXIT_FAILURE;
72 }
73
74 if (!ctftest_duplicates(fp)) {
75 ret = EXIT_FAILURE;
76 }
77
78 ctf_close(fp);
79 }
80
81 return (ret);
82 }
83