]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Only run test if alarm is available
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Sun, 19 Jan 2025 17:33:24 +0000 (18:33 +0100)
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Thu, 23 Jan 2025 09:50:43 +0000 (10:50 +0100)
Most baremetal toolchains will not have an implementation for alarm and
sigaction as they are target specific.
For arm-none-eabi with newlib, function signatures are exposed, but
there is no implmentation and thus the test cases causes a undefined
symbol link error.

gcc/testsuite/ChangeLog:

* gcc.dg/pr78185.c: Remove dg-do and replace with
with dg-require-effective-target of signal and alarm.
* gcc.dg/pr116906-1.c: Likewise.
* gcc.dg/pr116906-2.c: Likewise.
* gcc.dg/vect/pr101145inf.c: Use effective-target alarm.
* gcc.dg/vect/pr101145inf_1.c: Likewise.
* lib/target-supports.exp(check_effective_target_alarm): New.

gcc/ChangeLog:

* doc/sourcebuild.texi (Effective-Target Keywords): Document
'alarm'.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.dg/pr116906-1.c
gcc/testsuite/gcc.dg/pr116906-2.c
gcc/testsuite/gcc.dg/pr78185.c
gcc/testsuite/gcc.dg/vect/pr101145inf.c
gcc/testsuite/gcc.dg/vect/pr101145inf_1.c
gcc/testsuite/lib/target-supports.exp

index b5c1b23e527164b5a7380d063b98602a049dca38..98ede70f23c05d843035bd6a522ea64f35c0cdf0 100644 (file)
@@ -2808,6 +2808,9 @@ both scalar and vector modes.
 @subsubsection Environment attributes
 
 @table @code
+@item alarm
+Target supports @code{alarm}.
+
 @item c
 The language for the compiler under test is C.
 
index 27b1fdae02bf843807cdf9274c1971401c13feac..7187507a60d116dee3252389d630abb01f7bd736 100644 (file)
@@ -1,4 +1,5 @@
-/* { dg-do run { target *-*-linux* *-*-gnu* *-*-uclinux* } } */
+/* { dg-require-effective-target alarm } */
+/* { dg-require-effective-target signal } */
 /* { dg-options "-O2" } */
 
 #include <stdint.h>
index 3478771678ce242442723cb99dd36119ad862ebe..41a352bf8370949f9f16ba3763131a1b9c72bdcd 100644 (file)
@@ -1,4 +1,5 @@
-/* { dg-do run { target *-*-linux* *-*-gnu* *-*-uclinux* } } */
+/* { dg-require-effective-target alarm } */
+/* { dg-require-effective-target signal } */
 /* { dg-options "-O2 -fno-tree-ch" } */
 
 #include <unistd.h>
index d7781b2080fb3a2387765dc6ad2b6091e90971f0..ada8b1b9f90773814b1c0a0337d2d4b184b64bc4 100644 (file)
@@ -1,4 +1,5 @@
-/* { dg-do run { target *-*-linux* *-*-gnu* *-*-uclinux* } } */
+/* { dg-require-effective-target alarm } */
+/* { dg-require-effective-target signal } */
 /* { dg-options "-O" } */
 
 #include <unistd.h>
index aa598875aa599585506f9845dbddcaaf7b7cd868..70aea94b6e0ba1c0de928f1ffeb9579ed7065684 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target alarm } */
 /* { dg-require-effective-target signal } */
 /* { dg-additional-options "-O3" } */
 #include <limits.h>
index 0465788c3ccaf2ee7deef3f088e34a6b47bc1cb9..fe008284e1d915f27c18e3fb7d1406769079db68 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target alarm } */
 /* { dg-require-effective-target signal } */
 /* { dg-additional-options "-O3" } */
 #include <limits.h>
index 1785a9d61500852481e30cfb39ea80dea502103b..9ad1e1965bbd10de537a21d34acc4bd9e8153d65 100644 (file)
@@ -14271,3 +14271,30 @@ proc add_options_for_nvptx_alloca_ptx { flags } {
 
     return $flags
 }
+
+# Return true if alarm is supported on the target.
+
+proc check_effective_target_alarm { } {
+    if { ![check_effective_target_signal] } {
+       return 0
+    }
+
+    return [check_no_compiler_messages alarm executable {
+       #include <signal.h>
+       #include <stdlib.h>
+       #include <unistd.h>
+       void do_exit(int i) { exit (0); }
+       int main (void) { 
+         struct sigaction s;
+         sigemptyset (&s.sa_mask);
+         s.sa_handler = exit;
+         s.sa_flags = 0;
+         sigaction (SIGALRM, &s, NULL);
+         alarm (1);
+
+         /* Infinite loop to simulate work...  */
+         while (1);
+         abort ();
+       }
+    }]
+}