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