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
  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 }