diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 1024 |
1 files changed, 726 insertions, 298 deletions
@@ -775,6 +775,7 @@ enable_largefile with_openssl with_stackprotect with_hardening +with_retpoline with_rpath with_cflags with_cflags_after @@ -796,6 +797,7 @@ with_pie enable_pkcs11 enable_security_key with_security_key_builtin +enable_dsa_keys with_ssl_dir with_openssl_header_check with_ssl_engine @@ -820,6 +822,7 @@ with_superuser_path with_4in6 with_bsd_auth with_pid_dir +enable_fd_passing enable_lastlog enable_utmp enable_utmpx @@ -1464,8 +1467,10 @@ Optional Features: --disable-largefile omit support for large files --disable-pkcs11 disable PKCS#11 support code [no] --disable-security-key disable U2F/FIDO support code no + --disable-dsa-keys disable DSA key support no --disable-strip Disable calling strip(1) on install --disable-etc-default-login Disable using PATH from /etc/default/login no + --disable-fd-passing disable file descriptor passsing no --disable-lastlog disable use of lastlog even if detected no --disable-utmp disable use of utmp even if detected no --disable-utmpx disable use of utmpx even if detected no @@ -1481,6 +1486,7 @@ Optional Packages: --without-openssl Disable use of OpenSSL; use only limited internal crypto **EXPERIMENTAL** --without-stackprotect Don't use compiler's stack protection --without-hardening Don't use toolchain hardening flags + --without-retpoline Enable retpoline spectre mitigation --without-rpath Disable auto-added -R linker paths --with-cflags Specify additional flags to pass to compiler --with-cflags-after Specify additional flags to pass to compiler after configure @@ -6028,6 +6034,7 @@ fi use_stack_protector=1 use_toolchain_hardening=1 +use_retpoline=1 # Check whether --with-stackprotect was given. if test ${with_stackprotect+y} @@ -6049,6 +6056,16 @@ then : fi +# Check whether --with-retpoline was given. +if test ${with_retpoline+y} +then : + withval=$with_retpoline; + if test "x$withval" = "xno"; then + use_retpoline=0 + fi +fi + + # We use -Werror for the tests only so that we catch warnings like "this is # on by default" for things like -fPIE. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5 @@ -6126,18 +6143,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6187,18 +6210,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6263,18 +6292,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6324,18 +6359,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6400,18 +6441,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6461,18 +6508,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6537,18 +6590,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6598,18 +6657,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6674,18 +6739,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6735,18 +6806,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6811,18 +6888,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6872,18 +6955,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -6948,18 +7037,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7009,18 +7104,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7085,18 +7186,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7146,18 +7253,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7222,18 +7335,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7283,18 +7402,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7359,18 +7484,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7420,18 +7551,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7496,18 +7633,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7557,18 +7700,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7633,18 +7782,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7694,18 +7849,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7770,18 +7931,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7831,18 +7998,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7907,18 +8080,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -7968,18 +8147,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8044,18 +8229,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8105,18 +8296,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8181,18 +8378,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8242,18 +8445,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8318,18 +8527,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8379,18 +8594,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8455,18 +8676,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8516,18 +8743,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8569,12 +8802,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext } if test "x$use_toolchain_hardening" = "x1"; then { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5 -printf %s "checking if $CC supports compile flag -mretpoline... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5 +printf %s "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; } saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -mretpoline" + CFLAGS="$CFLAGS $WERROR -D_FORTIFY_SOURCE=2" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-mretpoline" + test "x$_define_flag" = "x" && _define_flag="-D_FORTIFY_SOURCE=2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8593,18 +8826,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8654,18 +8893,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8704,14 +8949,14 @@ printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -} # clang +} { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,retpolineplt" >&5 -printf %s "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,relro" >&5 +printf %s "checking if $LD supports link flag -Wl,-z,relro... " >&6; } saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $WERROR -Wl,-z,retpolineplt" + LDFLAGS="$LDFLAGS $WERROR -Wl,-z,relro" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-Wl,-z,retpolineplt" + test "x$_define_flag" = "x" && _define_flag="-Wl,-z,relro" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8730,18 +8975,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8792,18 +9043,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8845,12 +9102,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext } { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5 -printf %s "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; } - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -D_FORTIFY_SOURCE=2" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,now" >&5 +printf %s "checking if $LD supports link flag -Wl,-z,now... " >&6; } + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $WERROR -Wl,-z,now" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-D_FORTIFY_SOURCE=2" + test "x$_define_flag" = "x" && _define_flag="-Wl,-z,now" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8869,18 +9126,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8897,20 +9160,21 @@ int main(int argc, char **argv) { _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_c_try_link "$LINENO" then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" else - if test "$cross_compiling" = yes + if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - CFLAGS="$saved_CFLAGS $_define_flag" + LDFLAGS="$saved_LDFLAGS $_define_flag" + else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8930,18 +9194,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -8962,11 +9232,11 @@ if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - CFLAGS="$saved_CFLAGS $_define_flag" + LDFLAGS="$saved_LDFLAGS $_define_flag" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, fails at run time" >&5 printf "%s\n" "no, fails at run time" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -8976,18 +9246,19 @@ fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext } { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,relro" >&5 -printf %s "checking if $LD supports link flag -Wl,-z,relro... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,noexecstack" >&5 +printf %s "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; } saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $WERROR -Wl,-z,relro" + LDFLAGS="$LDFLAGS $WERROR -Wl,-z,noexecstack" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-Wl,-z,relro" + test "x$_define_flag" = "x" && _define_flag="-Wl,-z,noexecstack" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9006,18 +9277,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9068,18 +9345,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9120,13 +9403,18 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext } + # NB. -ftrapv expects certain support functions to be present in + # the compiler library (libgcc or similar) to detect integer operations + # that can overflow. We must check that the result of enabling it + # actually links. The test program compiled/linked includes a number + # of integer operations that should exercise this. { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,now" >&5 -printf %s "checking if $LD supports link flag -Wl,-z,now... " >&6; } - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $WERROR -Wl,-z,now" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5 +printf %s "checking if $CC supports compile flag -ftrapv and linking succeeds... " >&6; } + saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $WERROR -ftrapv" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-Wl,-z,now" + test "x$_define_flag" = "x" && _define_flag="-ftrapv" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9145,18 +9433,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9178,16 +9472,15 @@ then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" else - if test "$cross_compiling" = yes + if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - LDFLAGS="$saved_LDFLAGS $_define_flag" - + CFLAGS="$saved_CFLAGS $_define_flag" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9207,18 +9500,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9239,11 +9538,11 @@ if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - LDFLAGS="$saved_LDFLAGS $_define_flag" + CFLAGS="$saved_CFLAGS $_define_flag" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, fails at run time" >&5 printf "%s\n" "no, fails at run time" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -9253,19 +9552,25 @@ fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext } - { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,noexecstack" >&5 -printf %s "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; } - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $WERROR -Wl,-z,noexecstack" + # clang 15 seems to have a bug in -fzero-call-used-regs=all. See + # https://bugzilla.mindrot.org/show_bug.cgi?id=3475 and + # https://github.com/llvm/llvm-project/issues/59242 + # clang 17 has a different bug that causes an ICE when using this + # flag at all (https://bugzilla.mindrot.org/show_bug.cgi?id=3629) + case "$CLANG_VER" in + apple-15*) { + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds" >&5 +printf %s "checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds... " >&6; } + saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $WERROR -fzero-call-used-regs=used" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-Wl,-z,noexecstack" + test "x$_define_flag" = "x" && _define_flag="-fzero-call-used-regs=used" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9284,18 +9589,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9317,16 +9628,15 @@ then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" else - if test "$cross_compiling" = yes + if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - LDFLAGS="$saved_LDFLAGS $_define_flag" - + CFLAGS="$saved_CFLAGS $_define_flag" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9346,18 +9656,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9378,11 +9694,11 @@ if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - LDFLAGS="$saved_LDFLAGS $_define_flag" + CFLAGS="$saved_CFLAGS $_define_flag" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, fails at run time" >&5 printf "%s\n" "no, fails at run time" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -9392,24 +9708,20 @@ fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -} - # NB. -ftrapv expects certain support functions to be present in - # the compiler library (libgcc or similar) to detect integer operations - # that can overflow. We must check that the result of enabling it - # actually links. The test program compiled/linked includes a number - # of integer operations that should exercise this. - { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5 -printf %s "checking if $CC supports compile flag -ftrapv and linking succeeds... " >&6; } +} ;; + 17*) ;; + *) { + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds" >&5 +printf %s "checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds... " >&6; } saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -ftrapv" + CFLAGS="$CFLAGS $WERROR -fzero-call-used-regs=used" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-ftrapv" + test "x$_define_flag" = "x" && _define_flag="-fzero-call-used-regs=used" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9428,18 +9740,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9489,18 +9807,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9540,20 +9864,15 @@ printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -} - # clang 15 seems to have a bug in -fzero-call-used-regs=all. See - # https://bugzilla.mindrot.org/show_bug.cgi?id=3475 and - # https://github.com/llvm/llvm-project/issues/59242 - # clang 17 has a different bug that causes an ICE when using this - # flag at all (https://bugzilla.mindrot.org/show_bug.cgi?id=3629) - case "$CLANG_VER" in - apple-15*) { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds" >&5 -printf %s "checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds... " >&6; } +} ;; + esac + { + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrivial-auto-var-init=zero" >&5 +printf %s "checking if $CC supports compile flag -ftrivial-auto-var-init=zero... " >&6; } saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -fzero-call-used-regs=used" + CFLAGS="$CFLAGS $WERROR -ftrivial-auto-var-init=zero" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-fzero-call-used-regs=used" + test "x$_define_flag" = "x" && _define_flag="-ftrivial-auto-var-init=zero" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9572,18 +9891,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9600,7 +9925,7 @@ int main(int argc, char **argv) { _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null @@ -9633,18 +9958,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9682,17 +10013,17 @@ printf "%s\n" "no" >&6; } CFLAGS="$saved_CFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -} ;; - 17*) ;; - *) { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds" >&5 -printf %s "checking if $CC supports compile flag -fzero-call-used-regs=used and linking succeeds... " >&6; } +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +} + fi + if test "x$use_retpoline" = "x1"; then + { + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5 +printf %s "checking if $CC supports compile flag -mretpoline... " >&6; } saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -fzero-call-used-regs=used" + CFLAGS="$CFLAGS $WERROR -mretpoline" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-fzero-call-used-regs=used" + test "x$_define_flag" = "x" && _define_flag="-mretpoline" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9711,18 +10042,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9739,7 +10076,7 @@ int main(int argc, char **argv) { _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null @@ -9772,18 +10109,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9821,17 +10164,15 @@ printf "%s\n" "no" >&6; } CFLAGS="$saved_CFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -} ;; - esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +} # clang { - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrivial-auto-var-init=zero" >&5 -printf %s "checking if $CC supports compile flag -ftrivial-auto-var-init=zero... " >&6; } - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $WERROR -ftrivial-auto-var-init=zero" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,retpolineplt" >&5 +printf %s "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; } + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $WERROR -Wl,-z,retpolineplt" _define_flag="" - test "x$_define_flag" = "x" && _define_flag="-ftrivial-auto-var-init=zero" + test "x$_define_flag" = "x" && _define_flag="-Wl,-z,retpolineplt" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9850,18 +10191,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9878,20 +10225,21 @@ int main(int argc, char **argv) { _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_c_try_link "$LINENO" then : if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" else - if test "$cross_compiling" = yes + if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - CFLAGS="$saved_CFLAGS $_define_flag" + LDFLAGS="$saved_LDFLAGS $_define_flag" + else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9911,18 +10259,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -9943,11 +10297,11 @@ if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - CFLAGS="$saved_CFLAGS $_define_flag" + LDFLAGS="$saved_LDFLAGS $_define_flag" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, fails at run time" >&5 printf "%s\n" "no, fails at run time" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -9957,10 +10311,11 @@ fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext } fi @@ -11321,18 +11676,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -11382,18 +11743,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -15000,18 +15367,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -15061,18 +15434,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -15137,18 +15516,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -15199,18 +15584,24 @@ char *f2(char *s, ...) { va_end(args); return strdup(ret); } +const char *f3(int s) { + return s ? "good" : "gooder"; +} int main(int argc, char **argv) { - (void)argv; char b[256], *cp; + const char *s; /* Some math to catch -ftrapv problems in the toolchain */ int i = 123 * argc, j = 456 + argc, k = 789 - argc; float l = i * 2.1; double m = l / 0.5; long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; + (void)argv; f(1); - snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + s = f3(f(2)); + snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); if (write(1, b, 0) == -1) exit(0); - cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); + cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); + if (write(1, cp, 0) == -1) exit(0); free(cp); /* * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does @@ -16279,6 +16670,23 @@ then : fi +disable_ecdsa= +# Check whether --enable-dsa-keys was given. +if test ${enable_dsa_keys+y} +then : + enableval=$enable_dsa_keys; + if test "x$enableval" = "xno" ; then + disable_ecdsa=1 + fi + + +fi + +test -z "$disable_ecdsa" && + +printf "%s\n" "#define WITH_DSA 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 printf %s "checking for library containing dlopen... " >&6; } if test ${ac_cv_search_dlopen+y} @@ -17900,7 +18308,13 @@ then : else CPPFLAGS="-I${withval} ${CPPFLAGS}" fi - openssl_bin_PATH="${PATH}${PATH_SEPARATOR}${withval}/bin${PATH_SEPARATOR}${withval}/apps" + if test -x "${withval}/bin/openssl" && \ + "${withval}/bin/openssl" version >/dev/null 2>&1; then + openssl_bin_PATH="${withval}/bin${PATH_SEPARATOR}${PATH}" + elif test -x "${withval}/apps/openssl" && \ + "${withval}/apps/openssl" version >/dev/null 2>&1; then + openssl_bin_PATH="${withval}/apps${PATH_SEPARATOR}${PATH}" + fi fi @@ -18076,9 +18490,9 @@ printf "%s\n" "$ssl_header_ver" >&6; } else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -printf "%s\n" "not found" >&6; } - as_fn_error $? "OpenSSL version header not found." "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } + as_fn_error $? "OpenSSL version test program failed." "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18488,8 +18902,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # Check for OpenSSL without EVP_aes_{192,256}_cbc - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has crippled AES support" >&5 -printf %s "checking whether OpenSSL has crippled AES support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL lacks support for AES 192/256" >&5 +printf %s "checking whether OpenSSL lacks support for AES 192/256... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -24874,6 +25288,20 @@ printf "%s\n" "#define _PATH_SSH_PIDDIR \"$piddir\"" >>confdefs.h + +# Check whether --enable-fd-passing was given. +if test ${enable_fd_passing+y} +then : + enableval=$enable_fd_passing; + if test "x$enableval" = "xno" ; then + printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h + + fi + + +fi + + # Check whether --enable-lastlog was given. if test ${enable_lastlog+y} then : |