1*5bb525f4SRobert Mustacchi /*
2*5bb525f4SRobert Mustacchi * This file and its contents are supplied under the terms of the
3*5bb525f4SRobert Mustacchi * Common Development and Distribution License ("CDDL"), version 1.0.
4*5bb525f4SRobert Mustacchi * You may only use this file in accordance with the terms of version
5*5bb525f4SRobert Mustacchi * 1.0 of the CDDL.
6*5bb525f4SRobert Mustacchi *
7*5bb525f4SRobert Mustacchi * A full copy of the text of the CDDL should have accompanied this
8*5bb525f4SRobert Mustacchi * source. A copy of the CDDL is also available via the Internet at
9*5bb525f4SRobert Mustacchi * http://www.illumos.org/license/CDDL.
10*5bb525f4SRobert Mustacchi */
11*5bb525f4SRobert Mustacchi
12*5bb525f4SRobert Mustacchi /*
13*5bb525f4SRobert Mustacchi * Copyright (c) 2019, Joyent, Inc.
14*5bb525f4SRobert Mustacchi */
15*5bb525f4SRobert Mustacchi
16*5bb525f4SRobert Mustacchi /*
17*5bb525f4SRobert Mustacchi * This tests that a global that has been scoped to local scope through symbol
18*5bb525f4SRobert Mustacchi * reduction of a mapfile can still be detected.
19*5bb525f4SRobert Mustacchi */
20*5bb525f4SRobert Mustacchi
21*5bb525f4SRobert Mustacchi #include "check-common.h"
22*5bb525f4SRobert Mustacchi
23*5bb525f4SRobert Mustacchi static check_symbol_t check_syms[] = {
24*5bb525f4SRobert Mustacchi { "data", "int" },
25*5bb525f4SRobert Mustacchi { NULL }
26*5bb525f4SRobert Mustacchi };
27*5bb525f4SRobert Mustacchi
28*5bb525f4SRobert Mustacchi static const char *scoped_args[] = { "uint32_t" };
29*5bb525f4SRobert Mustacchi
30*5bb525f4SRobert Mustacchi static check_function_test_t functions[] = {
31*5bb525f4SRobert Mustacchi { "global", "int", 0, 0, NULL },
32*5bb525f4SRobert Mustacchi { "scoped", "int", 1, 0, scoped_args },
33*5bb525f4SRobert Mustacchi { NULL }
34*5bb525f4SRobert Mustacchi };
35*5bb525f4SRobert Mustacchi
36*5bb525f4SRobert Mustacchi int
main(int argc,char * argv[])37*5bb525f4SRobert Mustacchi main(int argc, char *argv[])
38*5bb525f4SRobert Mustacchi {
39*5bb525f4SRobert Mustacchi int i, ret = 0;
40*5bb525f4SRobert Mustacchi
41*5bb525f4SRobert Mustacchi if (argc < 2) {
42*5bb525f4SRobert Mustacchi errx(EXIT_FAILURE, "missing test files");
43*5bb525f4SRobert Mustacchi }
44*5bb525f4SRobert Mustacchi
45*5bb525f4SRobert Mustacchi for (i = 1; i < argc; i++) {
46*5bb525f4SRobert Mustacchi ctf_file_t *fp;
47*5bb525f4SRobert Mustacchi uint_t j;
48*5bb525f4SRobert Mustacchi
49*5bb525f4SRobert Mustacchi if ((fp = ctf_open(argv[i], &ret)) == NULL) {
50*5bb525f4SRobert Mustacchi warnx("failed to open %s: %s", argv[i],
51*5bb525f4SRobert Mustacchi ctf_errmsg(ret));
52*5bb525f4SRobert Mustacchi ret = EXIT_FAILURE;
53*5bb525f4SRobert Mustacchi continue;
54*5bb525f4SRobert Mustacchi }
55*5bb525f4SRobert Mustacchi
56*5bb525f4SRobert Mustacchi if (!ctftest_check_symbols(fp, check_syms))
57*5bb525f4SRobert Mustacchi ret = EXIT_FAILURE;
58*5bb525f4SRobert Mustacchi
59*5bb525f4SRobert Mustacchi for (j = 0; functions[j].cft_name != NULL; j++) {
60*5bb525f4SRobert Mustacchi if (!ctftest_check_function(functions[j].cft_name, fp,
61*5bb525f4SRobert Mustacchi functions[j].cft_rtype, functions[j].cft_nargs,
62*5bb525f4SRobert Mustacchi functions[j].cft_flags, functions[j].cft_args)) {
63*5bb525f4SRobert Mustacchi ret = EXIT_FAILURE;
64*5bb525f4SRobert Mustacchi }
65*5bb525f4SRobert Mustacchi }
66*5bb525f4SRobert Mustacchi
67*5bb525f4SRobert Mustacchi
68*5bb525f4SRobert Mustacchi ctf_close(fp);
69*5bb525f4SRobert Mustacchi }
70*5bb525f4SRobert Mustacchi
71*5bb525f4SRobert Mustacchi return (ret);
72*5bb525f4SRobert Mustacchi }
73