This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: std::rethrow_exception is broken


On 31/03/14 14:13 +0200, Rainer Orth wrote:

Unfortunately, the new tests FAIL on non-C99 targets (i386-pc-solaris2.9
in my case):

FAIL: 18_support/exception_ptr/60612-terminate.cc (test for excess errors)
Excess errors:
/vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/18_support/exception_ptr/6061
2-terminate.cc:26:27: error: '_Exit' was not declared in this scope

WARNING: 18_support/exception_ptr/60612-terminate.cc compilation failed to produ
ce executable

Sorry about that.
Does Solaris 9 not support C99 at all, or does it only define _Exit
when __STDC_VERSION__ has the right value?

The following patch fixes this, following the idiom often used in the
libstdc++ testsuite.

Tested with the appropriate runtest invocation on
i386-pc-solaris2.{9,11}.  Ok for mainline?

The patch is OK, thanks.

When looking into this, I noticed that this idiom is very widespread in
the v3 testsuite, but IMNSHO a *very bad* idea since it hides the fact
that many tests are acutually UNSUPPORTED, but appear to PASS, while the
only thing that passes is an empty main.  I had something similar
recently when all C99 functionality in libstdc++ got disabled, but
testsuite results barely changed.

I completely agree it's a bad idea.

Unless someone strongly objects, I expect to change those tests to use
corresponding dg-require-* keywords to make mark them appropriately once
4.9 branches.

I certainly don't object, but you should be aware that once we're in
stage 1 I want to review all our uses of _GLIBCXX_USE_C99 and replace
it with more fine-grained checks. We should at least have separate
macros for:

* "we can use the C99 library in C++11 mode"
(true for a modern libc that checks for __cplusplus >= 201103L)

* "we can use the C99 library in C++98 mode"
(true for glibc, because we define _GNU_SOURCE)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]