[ 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.