aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-10-13 15:56:45 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-10-14 16:36:25 -0400
commit974e3975c5bd14ee8817f892532d1e55492227df (patch)
tree09c9c38cfeb45c73d17e762b5f3e1d6afadf315e
parent270c5a982ccb4ef83bd9ad37d39cf47461acb55a (diff)
downloadgcc-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.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/test-setjmp.h15
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)