From bbe2542f728dbd46ffc9997537e62228173ffa24 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Fri, 1 Aug 2014 06:16:07 +0000 Subject: [PATCH] Don't run cproj-fails-with-broken-glibc for broken glibc 2014-08-01 Tom de Vries * lib/target-supports.exp (check_effective_target_glibc) (check_effective_target_glibc_2_12_or_later) (check_effective_target_not_glibc_2_11_or_earlier): New proc. * gcc.dg/cproj-fails-with-broken-glibc.c: Require effective target not_glibc_2_11_or_earlier. From-SVN: r213403 --- gcc/testsuite/ChangeLog | 8 ++++ .../gcc.dg/cproj-fails-with-broken-glibc.c | 1 + gcc/testsuite/lib/target-supports.exp | 38 +++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index df30b4b88047..37b42b390063 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-08-01 Tom de Vries + + * lib/target-supports.exp (check_effective_target_glibc) + (check_effective_target_glibc_2_12_or_later) + (check_effective_target_not_glibc_2_11_or_earlier): New proc. + * gcc.dg/cproj-fails-with-broken-glibc.c: Require effective target + not_glibc_2_11_or_earlier. + 2014-07-31 Tom de Vries * gcc.dg/pr51879-7.c: Remove superfluous declaration of bar. diff --git a/gcc/testsuite/gcc.dg/cproj-fails-with-broken-glibc.c b/gcc/testsuite/gcc.dg/cproj-fails-with-broken-glibc.c index fe143b9ea5b7..1df29f912fce 100644 --- a/gcc/testsuite/gcc.dg/cproj-fails-with-broken-glibc.c +++ b/gcc/testsuite/gcc.dg/cproj-fails-with-broken-glibc.c @@ -11,6 +11,7 @@ /* { dg-options "-fno-builtin-cproj" } */ /* { dg-add-options c99_runtime } */ /* { dg-require-effective-target c99_runtime } */ +/* { dg-require-effective-target not_glibc_2_11_or_earlier } */ extern void abort(void); extern void exit(int); diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index fa5137ea472e..cbe29307c28a 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5038,6 +5038,44 @@ proc check_effective_target_newlib {} { }] } +# Return true if this is a glibc target. + +proc check_effective_target_glibc {} { + return [check_no_compiler_messages glibc object { + #include + #if !(defined (__GLIBC__) && defined (__GLIBC_MINOR__)) + #error FOO + #endif + }] +} + +# Return true if this is a glibc 2.12 or later target. + +proc check_effective_target_glibc_2_12_or_later {} { + return [check_no_compiler_messages glibc_2_12_or_later object { + #include + #if !(defined (__GLIBC__) && defined (__GLIBC_MINOR__) \ + && __GLIBC_PREREQ(2,12)) + #error FOO + #endif + }] +} + +# Return true if this is a not a glibc 2.11 or earlier target. + +proc check_effective_target_not_glibc_2_11_or_earlier {} { + + if { ![check_effective_target_glibc] } { + return 1 + } + + if { [check_effective_target_glibc_2_12_or_later] } { + return 1 + } + + return 0 +} + # Return true if this is NOT a Bionic target. proc check_effective_target_non_bionic {} { -- 2.47.3