diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-10-13 15:56:45 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-10-14 16:36:25 -0400 |
commit | 974e3975c5bd14ee8817f892532d1e55492227df (patch) | |
tree | 09c9c38cfeb45c73d17e762b5f3e1d6afadf315e | |
parent | 270c5a982ccb4ef83bd9ad37d39cf47461acb55a (diff) | |
download | gcc-974e3975c5bd14ee8817f892532d1e55492227df.zip gcc-974e3975c5bd14ee8817f892532d1e55492227df.tar.gz gcc-974e3975c5bd14ee8817f892532d1e55492227df.tar.bz2 |
analyzer: don't use <setjmp.h> in tests [PR97394]
PR analyzer/97394 reports issues with analyzer setjmp results
when testing against MUSL. This patch fixes up gcc.dg/analyzer
so that it doesn't use <setjmp.h>.
gcc/testsuite/ChangeLog:
PR analyzer/97394
* gcc.dg/analyzer/setjmp-pr93378.c: Use test-setjmp.h rather than
<setjmp.h>.
* gcc.dg/analyzer/sigsetjmp-5.c: Likewise.
* gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
* gcc.dg/analyzer/test-setjmp.h: Don't include <setjmp.h>.
Provide decls of jmp_buf, sigjmp_buf, setjmp, sigsetjmp,
longjmp, and siglongjmp.
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/test-setjmp.h | 15 |
4 files changed, 15 insertions, 6 deletions
diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c index 6e2468e..e31e127 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c @@ -1,7 +1,7 @@ /* { dg-additional-options "-O1 -g" } */ /* { dg-require-effective-target indirect_jumps } */ -#include <setjmp.h> +#include "test-setjmp.h" jmp_buf buf; diff --git a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c index 2bc73e8..d6a9910 100644 --- a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c @@ -1,6 +1,6 @@ /* { dg-require-effective-target sigsetjmp } */ -#include <setjmp.h> +#include "test-setjmp.h" #include <stddef.h> #include "analyzer-decls.h" diff --git a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c index d45804b..f89277e 100644 --- a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c +++ b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c @@ -1,6 +1,6 @@ /* { dg-require-effective-target sigsetjmp } */ -#include <setjmp.h> +#include "test-setjmp.h" #include <stddef.h> #include <stdlib.h> diff --git a/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h b/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h index ee0e1ec..db24227 100644 --- a/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h +++ b/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h @@ -7,10 +7,19 @@ setjmp is a function on some systems and a macro on others. This header provides a SETJMP macro in a (fake) system header, - for consistency of output across such systems. */ - -#include <setjmp.h> + along with precanned decls of setjmp, for consistency of output across + different systems. */ #pragma GCC system_header +struct __jmp_buf_tag {}; +typedef struct __jmp_buf_tag jmp_buf[1]; +typedef struct __jmp_buf_tag sigjmp_buf[1]; + +extern int setjmp(jmp_buf env); +extern int sigsetjmp(sigjmp_buf env, int savesigs); + +extern void longjmp(jmp_buf env, int val); +extern void siglongjmp(sigjmp_buf env, int val); + #define SETJMP(E) setjmp(E) |