[ 
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 <[EMAIL PROTECTED]>
> Organization: California Language Labs
> To: oemsupport <[EMAIL PROTECTED]>
> CC: [EMAIL PROTECTED], wanc_at_hp <[EMAIL PROTECTED]>
> 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.

Reply via email to