X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fconfigurator%2Fconfigurator.c;h=7d9db8a1b407928810f3195b8f1a63d4bd82a366;hp=1017e5c5a6378b9222bd118ba5ea3e8c39f69705;hb=6e1cdb3d8b6fac56b24403e2d0b86810a9ccffb2;hpb=85c347709c1740af23dde53685475e5d8118125e diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c index 1017e5c5..7d9db8a1 100644 --- a/tools/configurator/configurator.c +++ b/tools/configurator/configurator.c @@ -44,6 +44,9 @@ static struct test tests[] = { "static int __attribute__((const)) func(int x) { return x; }" }, { "HAVE_ATTRIBUTE_MAY_ALIAS", OUTSIDE_MAIN, NULL, "typedef short __attribute__((__may_alias__)) short_a;" }, + { "HAVE_ATTRIBUTE_NORETURN", DEFINES_FUNC, NULL, + "#include \n" + "static void __attribute__((noreturn)) func(int x) { exit(x); }" }, { "HAVE_ATTRIBUTE_PRINTF", DEFINES_FUNC, NULL, "static void __attribute__((format(__printf__, 1, 2))) func(const char *fmt, ...) { }" }, { "HAVE_ATTRIBUTE_UNUSED", OUTSIDE_MAIN, NULL, @@ -71,6 +74,8 @@ static struct test tests[] = { "return __builtin_expect(argc == 1, 1) ? 0 : 1;" }, { "HAVE_BUILTIN_FFSL", INSIDE_MAIN, NULL, "return __builtin_ffsl(0L) == 0 ? 0 : 1;" }, + { "HAVE_BUILTIN_FFSLL", INSIDE_MAIN, NULL, + "return __builtin_ffsll(0LL) == 0 ? 0 : 1;" }, { "HAVE_BUILTIN_POPCOUNTL", INSIDE_MAIN, NULL, "return __builtin_popcountl(255L) == 8 ? 0 : 1;" }, { "HAVE_BUILTIN_TYPES_COMPATIBLE_P", INSIDE_MAIN, NULL, @@ -83,6 +88,8 @@ static struct test tests[] = { { "HAVE_FOR_LOOP_DECLARATION", INSIDE_MAIN, NULL, "for (int i = 0; i < argc; i++) { return 0; };\n" "return 1;" }, + { "HAVE_FLEXIBLE_ARRAY_MEMBER", OUTSIDE_MAIN, NULL, + "struct foo { unsigned int x; int arr[]; };" }, { "HAVE_GETPAGESIZE", DEFINES_FUNC, NULL, "#include \n" "static int func(void) { return getpagesize(); }" }, @@ -265,9 +272,10 @@ static bool run_test(const char *cmd, struct test *test) if (system("cat " INPUT_FILE) == -1); output = run(cmd, &status); - if (status != 0) { + if (status != 0 || strstr(output, "warning")) { if (verbose) - printf("Compile fail for %s, status %i: %s\n", + printf("Compile %s for %s, status %i: %s\n", + status ? "fail" : "warning", test->name, status, output); if (test->style == EXECUTE) errx(1, "Test for %s did not compile:\n%s",