https://gcc.gnu.org/g:a5bb49ce5649751a96b63c1b96d1fde22ede564b
commit r17-1392-ga5bb49ce5649751a96b63c1b96d1fde22ede564b Author: Iain Sandoe <[email protected]> Date: Tue Jun 2 00:13:07 2026 +0100 testsuite, c, Darwin: Fix suprious fails in mk*temp* tests. Since there is a mixture of Posix and unspecified functions in this group, it appears to have precipitated placement in two different headers (stdlib and unistd). Include both to cater for this. Darwin also emits a deprecation warning for mktemp. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/mkdtemp-1.c: Add unistd header. * gcc.dg/analyzer/mkstemps-1.c: Likewise. * gcc.dg/analyzer/mktemp-1.c: Handle deprecation warnings. Signed-off-by: Iain Sandoe <[email protected]> Diff: --- gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mktemp-1.c | 22 ++++++++++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c b/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c index da77ce786516..2cc339b9a65e 100644 --- a/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c @@ -2,6 +2,7 @@ #include <stdio.h> #include <stdlib.h> +#include <unistd.h> #include <errno.h> #include "analyzer-decls.h" diff --git a/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c b/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c index 75fcb9dbb08d..6f1e7ef3e733 100644 --- a/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <stdlib.h> +#include <unistd.h> extern void populate (char *buf); diff --git a/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c b/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c index 0f4b448a6aa6..0f1122a06ed8 100644 --- a/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c @@ -3,7 +3,7 @@ /* TODO: mktemp is deprecated per MSC24-C (https://wiki.sei.cmu.edu/confluence/x/hNYxBQ). Once a warning for deprecated functions exists, mktemp should - also warn about its use. */ + also warn about its use. Later versions of Darwin do warn here. */ #include <stdio.h> #include <stdlib.h> @@ -15,40 +15,47 @@ extern void populate (char *buf); void test_passthrough (char *s) { mktemp (s); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_string_literal_correct_placeholder (void) { mktemp ("/home/user/sessXXXXXX"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */ - /* { dg-message "use a writable character array" "fix suggestion" { target *-*-* } .-1 } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ + /* { dg-message "use a writable character array" "fix suggestion" { target *-*-* } .-2 } */ } void test_string_literal_missing_placeholder (void) { mktemp ("/home/user/sess"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_string_literal_empty (void) { mktemp (""); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_correct (void) { char tmpl[] = "/var/run/sock.XXXXXX"; mktemp (tmpl); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_correct_minimal (void) { char tmpl[] = "XXXXXX"; mktemp (tmpl); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_correct_offset_into_buffer (void) { char buf[] = "////XXXXXX"; mktemp (buf + 4); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_missing_placeholder_offset_into_buffer (void) @@ -56,36 +63,42 @@ void test_missing_placeholder_offset_into_buffer (void) char buf[] = "////XXXXXX"; /* Placeholder is incorrect from the pointer's perspective. */ mktemp (buf + 5); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_missing_placeholder (void) { char tmpl[] = "/var/run/sock"; mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_too_short (void) { char tmpl[] = "XY"; mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_empty_buffer (void) { char tmpl[] = ""; mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_partial_placeholder (void) { char tmpl[] = "/var/run/sockXXXXX-"; mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_four_xs (void) { char tmpl[] = "/var/run/sockXXXX"; mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_populated_buf (void) @@ -93,11 +106,13 @@ void test_populated_buf (void) char tmpl[24]; populate (tmpl); mktemp (tmpl); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_NULL (void) { mktemp (NULL); /* possibly -Wanalyzer-null-argument */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ } void test_errno_bad_template (void) @@ -105,6 +120,7 @@ void test_errno_bad_template (void) errno = 0; char tmpl[] = "/tmp/foo"; char *result = mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ __analyzer_eval (errno > 0); /* { dg-warning "TRUE" } */ } @@ -112,6 +128,7 @@ void test_failure_nul_byte (void) { char tmpl[] = "/tmp/foo"; char *result = mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */ + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ __analyzer_eval (result[0] == '\0'); /* { dg-warning "TRUE" } */ __analyzer_eval (result == tmpl); /* { dg-warning "TRUE" } */ } @@ -120,6 +137,7 @@ void test_success_path (void) { char tmpl[] = "/tmp/testXXXXXX"; char *result = mktemp (tmpl); + /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */ if (result[0] != '\0') __analyzer_eval (result == tmpl); /* { dg-warning "TRUE" } */ }
