incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-240) #define _RWSTD_NO_EXCEPTIONS when exceptions are disabled via command line option
Date Fri, 07 Dec 2007 16:22:44 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549459
] 

Martin Sebor commented on STDCXX-240:
-------------------------------------

I understand that what's at issue here is changing the library headers by compiling with or
without -qnoeh *without* reconfiguring (and rebuilding) the library binary.

Our tests should be able to deal with no exception support via macro hackery.

The situation is more difficult with examples because we try to avoid polluting them with
proprietary macros. Most examples, with the exception of those that showcase our extensions,
should be 100% conforming and portable C++ and should compile with other implementations (this
will be true for most once we deal with STDCXX-425).

I agree that _LIBC_THROWS() should expand to nothing when -qnoeh is used *and* if it causes
the compiler to have a cow. Otherwise, if it's just silently ignored, we could leave it alone.
But then again, removing it unconditionally should be the safest way to go.

As for why building the library with -qnoeh, and then attempting to build user code without
it is a bad idea, I assume you're referring to the problem of the library throwing an exception
that the user code won't prepared to handle when compiled with -qnoeh? If so, I agree that
would be bad. Fortunately, we provide a hook for user programs to gain control (via a callback
mechanism) before the library throws so this shouldn't be a big problem. The hook isn't used
in all places where the library can throw (there a number of places where the library can
cause the C++ runtime to throw by invoking operator new or dynamic_cast) but that's, presumably,
handled correctly by the compiler switch. All other exceptions thrown directly by the library
go through this hook (__rw::__rw_throw_proc).

> #define _RWSTD_NO_EXCEPTIONS when exceptions are disabled via command line option
> ---------------------------------------------------------------------------------
>
>                 Key: STDCXX-240
>                 URL: https://issues.apache.org/jira/browse/STDCXX-240
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Build
>    Affects Versions: 4.1.2, 4.1.3, 4.1.4
>            Reporter: Martin Sebor
>            Assignee: Travis Vitek
>            Priority: Minor
>             Fix For: 4.2.1
>
>         Attachments: stdcxx-240.patch
>
>
> Moved from the Rogue Wave bug tracking database:
> Class/File: stdcomp.h
> Fix Priority: Can Fix
> Long Description: 
>   *** Dec 1 1999 6:03PM *** sebor ***
> A request for enhancement.
> Subject: define RWSTD_NO_EXCEPTIONS when __HPACC_NOEH is
> Date: Wed, 01 Dec 1999 17:11:36 -0800
> From: Chichiang Wan <wanc@cup.hp.com>
> Organization: California Language Labs
> To: oemsupport <oemsupport@roguewave.com>
> CC: dhandly@cup.hp.com, wanc_at_hp <wanc@cup.hp.com>
> aCC has an option +noeh.  When it is provided, __HPACC_NOEH will be
> defined.  It would be nice for users to need to only use +noeh.  For
> that,  
> RWSTD_NO_EXCEPTIONS needs to be defined conditionally. 
> =========================================================
> $ cat test.C
> #include <string>
> $ aCC +noeh -c test.C
> Error 46: "/opt/aCC/include/memory", line 493 # Exception handling is 
> not
>     enabled (do not use the +noeh flag to aCC).
>       RWSTD_THROW_NO_MSG(tmp == 0, bad_alloc);
> -- Chichiang
> ****Modified By: sebor @ May 29, 2000 10:28:25 PM****
> We should do this AND test it -- not just on aCC but in general with all compilers that
support this feature.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message