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 a global that has been scoped to local scope through symbol
18 * reduction of a mapfile can still be detected.
19 */
20
21 #include "check-common.h"
22
23 static check_symbol_t check_syms[] = {
24 { "data", "int" },
25 { NULL }
26 };
27
28 static const char *scoped_args[] = { "uint32_t" };
29
30 static check_function_test_t functions[] = {
31 { "global", "int", 0, 0, NULL },
32 { "scoped", "int", 1, 0, scoped_args },
33 { NULL }
34 };
35
36 int
main(int argc,char * argv[])37 main(int argc, char *argv[])
38 {
39 int i, ret = 0;
40
41 if (argc < 2) {
42 errx(EXIT_FAILURE, "missing test files");
43 }
44
45 for (i = 1; i < argc; i++) {
46 ctf_file_t *fp;
47 uint_t j;
48
49 if ((fp = ctf_open(argv[i], &ret)) == NULL) {
50 warnx("failed to open %s: %s", argv[i],
51 ctf_errmsg(ret));
52 ret = EXIT_FAILURE;
53 continue;
54 }
55
56 if (!ctftest_check_symbols(fp, check_syms))
57 ret = EXIT_FAILURE;
58
59 for (j = 0; functions[j].cft_name != NULL; j++) {
60 if (!ctftest_check_function(functions[j].cft_name, fp,
61 functions[j].cft_rtype, functions[j].cft_nargs,
62 functions[j].cft_flags, functions[j].cft_args)) {
63 ret = EXIT_FAILURE;
64 }
65 }
66
67
68 ctf_close(fp);
69 }
70
71 return (ret);
72 }
73