Add effective target signal
2017-06-09 Tom de Vries <tom@codesourcery.com>
* lib/target-supports.exp (check_effective_target_signal): New proc.
* lib/gcc.exp (gcc_target_compile): Remove appending of
-DSIGNAL_SUPPRESS to additional_flags.
* gcc.c-torture/execute/ieee/ieee.exp: Add -DSIGNAL_SUPPRESS to
additional_flags if effective target signal is not supported by the
target.
* gcc.c-torture/execute/20101011-1.c: Same.
* gcc.dg/c99-stdint-1.c: Same.
* gcc.dg/c99-stdint-2.c: Same.
* gcc.dg/c99-stdint-5.c: Same.
* gcc.dg/c99-stdint-6.c: Same.
* gcc.dg/stdint-width-1.c: Same.
* doc/sourcebuild.texi (Effective-Target Keywords, Environment
attributes): Document signal effective target.
---
gcc/doc/sourcebuild.texi | 3 +++
gcc/testsuite/gcc.c-torture/execute/20101011-1.c | 1 +
gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp | 4 ++++
gcc/testsuite/gcc.dg/c99-stdint-1.c | 1 +
gcc/testsuite/gcc.dg/c99-stdint-2.c | 2 ++
gcc/testsuite/gcc.dg/c99-stdint-5.c | 1 +
gcc/testsuite/gcc.dg/c99-stdint-6.c | 1 +
gcc/testsuite/gcc.dg/stdint-width-1.c | 1 +
gcc/testsuite/lib/gcc.exp | 3 ---
gcc/testsuite/lib/target-supports.exp | 9 +++++++++
10 files changed, 23 insertions(+), 3 deletions(-)
@@ -1973,6 +1973,9 @@ time) should be run on this target. This can be enabled by setting the
Test system runs executables on a simulator (i.e. slowly) rather than
hardware (i.e. fast).
+@item signal
+Target has @code{signal.h}.
+
@item stabs
Target supports the stabs debugging format.
@@ -1,5 +1,6 @@
/* { dg-options "-fnon-call-exceptions" } */
/* With -fnon-call-exceptions 0 / 0 should not be eliminated. */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
#ifdef SIGNAL_SUPPRESS
# define DO_TEST 0
@@ -53,6 +53,10 @@ if { [istarget "alpha*-*-*"]
lappend additional_flags "-mieee"
}
+if { ![check_effective_target_signal] } {
+ lappend additional_flags "-DSIGNAL_SUPPRESS"
+}
+
# load support procs
load_lib c-torture.exp
@@ -10,6 +10,7 @@
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors -fhosted" } */
/* { dg-require-effective-target ptr32plus } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
#include <limits.h>
#include <stdint.h>
@@ -3,6 +3,8 @@
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors -ffreestanding" } */
/* { dg-require-effective-target ptr32plus } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
+
/* The test is that there are no diagnostics, so just include the
hosted version. */
#include "c99-stdint-1.c"
@@ -3,6 +3,7 @@
compilations). */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
#include <stdint.h>
#ifndef SIGNAL_SUPPRESS
@@ -2,6 +2,7 @@
with any system <inttypes.h> header. */
/* { dg-do compile { target inttypes_types } } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
#include <inttypes.h>
#ifndef SIGNAL_SUPPRESS
@@ -1,6 +1,7 @@
/* Test TS 18661-1 width macros in <stdint.h>. */
/* { dg-do compile } */
/* { dg-options "-std=c11 -ffreestanding" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
#include <stddef.h>
#define __STDC_WANT_IEC_60559_BFP_EXT__
@@ -144,9 +144,6 @@ proc gcc_target_compile { source dest type options } {
if [target_info exists gcc,stack_size] {
lappend options "additional_flags=-DSTACK_SIZE=[target_info gcc,stack_size]"
}
- if [target_info exists gcc,signal_suppress] {
- lappend options "additional_flags=-DSIGNAL_SUPPRESS"
- }
# TEST_ALWAYS_FLAGS are flags that should be passed to every
# compilation. They are passed first to allow individual
@@ -504,6 +504,15 @@ proc check_effective_target_trampolines { } {
return 1
}
+# Return 1 if signal.h is supported.
+
+proc check_effective_target_signal { } {
+ if [target_info exists gcc,signal_suppress] {
+ return 0
+ }
+ return 1
+}
+
# Return 1 if according to target_info struct and explicit target list
# target disables -fdelete-null-pointer-checks. Targets should return 0
# if they simply default to -fno-delete-null-pointer-checks but obey