On Sun, Jan 19, 2025 at 12:17 PM Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> wrote: > > Ok for trunk? > > -- > > 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-1.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.svens...@foss.st.com> > --- > gcc/doc/sourcebuild.texi | 3 +++ > gcc/testsuite/gcc.dg/pr116906-1.c | 3 ++- > gcc/testsuite/gcc.dg/pr116906-2.c | 3 ++- > gcc/testsuite/gcc.dg/pr78185.c | 3 ++- > gcc/testsuite/gcc.dg/vect/pr101145inf.c | 1 + > gcc/testsuite/gcc.dg/vect/pr101145inf_1.c | 1 + > gcc/testsuite/lib/target-supports.exp | 23 +++++++++++++++++++++++ > 7 files changed, 34 insertions(+), 3 deletions(-) > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi > index b5c1b23e527..98ede70f23c 100644 > --- a/gcc/doc/sourcebuild.texi > +++ b/gcc/doc/sourcebuild.texi > @@ -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. > > diff --git a/gcc/testsuite/gcc.dg/pr116906-1.c > b/gcc/testsuite/gcc.dg/pr116906-1.c > index 27b1fdae02b..7187507a60d 100644 > --- a/gcc/testsuite/gcc.dg/pr116906-1.c > +++ b/gcc/testsuite/gcc.dg/pr116906-1.c > @@ -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> > diff --git a/gcc/testsuite/gcc.dg/pr116906-2.c > b/gcc/testsuite/gcc.dg/pr116906-2.c > index 3478771678c..41a352bf837 100644 > --- a/gcc/testsuite/gcc.dg/pr116906-2.c > +++ b/gcc/testsuite/gcc.dg/pr116906-2.c > @@ -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> > diff --git a/gcc/testsuite/gcc.dg/pr78185.c b/gcc/testsuite/gcc.dg/pr78185.c > index d7781b2080f..ada8b1b9f90 100644 > --- a/gcc/testsuite/gcc.dg/pr78185.c > +++ b/gcc/testsuite/gcc.dg/pr78185.c > @@ -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> > diff --git a/gcc/testsuite/gcc.dg/vect/pr101145inf.c > b/gcc/testsuite/gcc.dg/vect/pr101145inf.c > index aa598875aa5..70aea94b6e0 100644 > --- a/gcc/testsuite/gcc.dg/vect/pr101145inf.c > +++ b/gcc/testsuite/gcc.dg/vect/pr101145inf.c > @@ -1,3 +1,4 @@ > +/* { dg-require-effective-target alarm } */ > /* { dg-require-effective-target signal } */ > /* { dg-additional-options "-O3" } */ > #include <limits.h> > diff --git a/gcc/testsuite/gcc.dg/vect/pr101145inf_1.c > b/gcc/testsuite/gcc.dg/vect/pr101145inf_1.c > index 0465788c3cc..fe008284e1d 100644 > --- a/gcc/testsuite/gcc.dg/vect/pr101145inf_1.c > +++ b/gcc/testsuite/gcc.dg/vect/pr101145inf_1.c > @@ -1,3 +1,4 @@ > +/* { dg-require-effective-target alarm } */ > /* { dg-require-effective-target signal } */ > /* { dg-additional-options "-O3" } */ > #include <limits.h> > diff --git a/gcc/testsuite/lib/target-supports.exp > b/gcc/testsuite/lib/target-supports.exp > index 939ef3a4119..93795a7e27f 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -14255,3 +14255,26 @@ proc add_options_for_nvptx_alloca_ptx { flags } { > > return $flags > } > + > +# Return true if alarm is supported on the target. > + > +proc check_effective_target_alarm { } {
Maybe A small optimization is return false here if signal is not supported. That is: if ![check_effective_target_signal] { return 0 } Thanks, Andrew > + 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 (); > + } > + }] > +} > -- > 2.25.1 >