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
>

Reply via email to