X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fconfigurator%2Fconfigurator.c;h=7d9db8a1b407928810f3195b8f1a63d4bd82a366;hb=aaf830998ef2dc127dd09f30fc9a2156e0634a57;hp=4b2ffe782c7eabf68ce490309cd43de67ce43121;hpb=e73b0b37186b158369dc70652edae6706cba8133;p=ccan diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c index 4b2ffe78..7d9db8a1 100644 --- a/tools/configurator/configurator.c +++ b/tools/configurator/configurator.c @@ -12,7 +12,7 @@ #include #define DEFAULT_COMPILER "cc" -#define DEFAULT_FLAGS "-g -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -Werror" +#define DEFAULT_FLAGS "-g -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition" #define OUTPUT_FILE "configurator.out" #define INPUT_FILE "configuratortest.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",