aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitar Dimitrov <dimitar@dinux.eu>2022-11-18 21:59:42 +0200
committerDimitar Dimitrov <dimitar@dinux.eu>2022-11-21 18:13:53 +0200
commit9fe9dd2455ecc2d02c50559eb272b480cafc8c68 (patch)
treefe412c4539bcd47fd6efbe2959faee41824f8bcc
parentf80bfdcc84707583a66526fb1fb428eb66389359 (diff)
downloadgcc-9fe9dd2455ecc2d02c50559eb272b480cafc8c68.zip
gcc-9fe9dd2455ecc2d02c50559eb272b480cafc8c68.tar.gz
gcc-9fe9dd2455ecc2d02c50559eb272b480cafc8c68.tar.bz2
testsuite: Add filter for target socket support
The new analyzer tests for sockets are failing on embedded targets. The newlib and avr-libc C libraries do not support sockets. Testing done: - No changes in gcc.sum for x86_64-pc-linux-gnu, with or without this patch. - Filtered cases are now UNSUPPORTED instead of failing on AVR and PRU backends. gcc/ChangeLog: * doc/sourcebuild.texi (sockets): Document new check. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/fd-accept.c: Require sockets. * gcc.dg/analyzer/fd-bind.c: Ditto. * gcc.dg/analyzer/fd-connect.c: Ditto. * gcc.dg/analyzer/fd-datagram-socket.c: Ditto. * gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c: Ditto. * gcc.dg/analyzer/fd-glibc-byte-stream-socket.c: Ditto. * gcc.dg/analyzer/fd-glibc-datagram-client.c: Ditto. * gcc.dg/analyzer/fd-glibc-datagram-socket.c: Ditto. * gcc.dg/analyzer/fd-listen.c: Ditto. * gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c: Ditto. * gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c: Ditto. * gcc.dg/analyzer/fd-socket-meaning.c: Ditto. * gcc.dg/analyzer/fd-socket-misuse.c: Ditto. * gcc.dg/analyzer/fd-stream-socket-active-open.c: Ditto. * gcc.dg/analyzer/fd-stream-socket-passive-open.c: Ditto. * gcc.dg/analyzer/fd-stream-socket.c: Ditto. * gcc.dg/analyzer/fd-symbolic-socket.c: Ditto. * lib/target-supports.exp (check_effective_target_sockets): New check. Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
-rw-r--r--gcc/doc/sourcebuild.texi3
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-accept.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-bind.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-connect.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-listen.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c1
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c2
-rw-r--r--gcc/testsuite/lib/target-supports.exp14
19 files changed, 45 insertions, 0 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 7662669..ffe69d6 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2666,6 +2666,9 @@ Target can compile using @code{pthread.h} with no errors or warnings.
@item pthread_h
Target has @code{pthread.h}.
+@item sockets
+Target can compile using @code{sys/socket.h} with no errors or warnings.
+
@item run_expensive_tests
Expensive testcases (usually those that consume excessive amounts of CPU
time) should be run on this target. This can be enabled by setting the
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-accept.c b/gcc/testsuite/gcc.dg/analyzer/fd-accept.c
index 36cc7af..5426063 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-accept.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-accept.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-bind.c b/gcc/testsuite/gcc.dg/analyzer/fd-bind.c
index 6f91bc4..c34803f 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-bind.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-bind.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-connect.c b/gcc/testsuite/gcc.dg/analyzer/fd-connect.c
index 1ab54d0..7bf687e2 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-connect.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-connect.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c b/gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c
index 045bdfa..5850857 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c
index 1ff9028..5a1a6f5 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c
@@ -1,4 +1,5 @@
/* Example from glibc manual (16.9.7). */
+/* { dg-require-effective-target sockets } */
/* { dg-additional-options "-Wno-analyzer-too-complex" } */
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c
index f96da81..806bb24 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c
@@ -1,4 +1,5 @@
/* Example from glibc manual (16.9.6). */
+/* { dg-require-effective-target sockets } */
#include <stdio.h>
#include <string.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c
index 888c751..072ac4c 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c
@@ -1,4 +1,5 @@
/* Example from the glibc manual (16.10.4). */
+/* { dg-require-effective-target sockets } */
#include <stdio.h>
#include <errno.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c
index b8b6876..d417828 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c
@@ -1,4 +1,5 @@
/* Example from glibc manual (16.10.3). */
+/* { dg-require-effective-target sockets } */
#include <stdio.h>
#include <errno.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-listen.c b/gcc/testsuite/gcc.dg/analyzer/fd-listen.c
index 1f54a8f..becf469 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-listen.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-listen.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c b/gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c
index d9c3ff0..ee627de 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c
@@ -26,6 +26,7 @@ Formatted or processed versions of this manual, if unaccompanied by
the source, must acknowledge the copyright and authors of this work.
*/
+/* { dg-require-effective-target sockets } */
/* { dg-additional-options "-Wno-analyzer-too-complex" } */
#include <sys/types.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c b/gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c
index 66398e8..d2e39eb 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c
@@ -26,6 +26,8 @@ Formatted or processed versions of this manual, if unaccompanied by
the source, must acknowledge the copyright and authors of this work.
*/
+/* { dg-require-effective-target sockets } */
+
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c b/gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c
index 5bfb57f..82a199f 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target sockets } */
/* { dg-additional-options "-fanalyzer-verbose-state-changes" } */
#include <sys/socket.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c b/gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c
index 4ff08d5..628f5e4 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c
@@ -1,5 +1,7 @@
/* Various operations done on sockets in the wrong phase. */
+/* { dg-require-effective-target sockets } */
+
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c
index 7fde0ef..841894c 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c
index c31e5b5..a610911 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c
@@ -2,6 +2,8 @@
either from scratch, or when various phases are assumed to already
be done. */
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c
index 3a292d0..e51f0f0 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c b/gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c
index 83400c1..ad1f989 100644
--- a/gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c
+++ b/gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target sockets } */
+
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 01cf17e..65ba33b 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1176,6 +1176,20 @@ proc check_effective_target_pthread {} {
} "-pthread"]
}
+# Return 1 if the target supports both Unix and internet sockets, 0 otherwise.
+proc check_effective_target_sockets {} {
+ return [check_no_compiler_messages socket executable {
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+int main (void) {
+ socket(AF_UNIX, SOCK_STREAM, 0);
+ socket(AF_INET, SOCK_DGRAM, 0);
+ return 0;
+}
+ } ""]
+}
+
# Return 1 if compilation with -mpe-aligned-commons is error-free
# for trivial code, 0 otherwise.