This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Minimal GCC/Linux shared lib + EH bug example
- From: Mark Mitchell <mark at codesourcery dot com>
- To: "Martin v. Loewis" <martin at v dot loewis dot de>
- Cc: Jason Merrill <jason at redhat dot com>, David Abrahams <david dot abrahams at rcn dot com>, "Ralf W. Grosse-Kunstleve" <rwgk at cci dot lbl dot gov>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Sun, 12 May 2002 12:01:00 -0700
- Subject: Re: Minimal GCC/Linux shared lib + EH bug example
--On Sunday, May 12, 2002 08:48:42 PM +0200 "Martin v. Loewis"
<martin@v.loewis.de> wrote:
> Mark Mitchell <mark@codesourcery.com> writes:
>
>> > I find this testcase somewhat persuasive, as the offending dlopen call
>> > is not in the C++ code. What do others think?
>>
>> I agree with your other statement: RTLD_LOCAL and C++ don't really make
>> sense.
>
> The issue is that Python *must* use RTLD_LOCAL to load its extension
> modules, or else unrelated extension modules might crash due to
> conflicting symbols.
I understand. I'm actually a Python devotee. :-)
And, of course, this applies to C++ modules too: I don't want your
module catching my exceptions just because we both happen to have
a type with the same name. Or maybe I do, but I'm not sure unless
I know what your module is, and whether it means the same thing by
that type that I do...
> Now, people want to use C++ for extension modules. So far, this has
> worked fine - except that it now stops working with g++ 3.x, if you
> want to throw exceptions in the extension module.
>
>> We will have given people a bigger bazooka, but it will be aimed at
>> their own feet.
>
> Since the alternative is not to allow writing exceptions in C++,
> people would be willing to accept restrictions, if they know what
> those restrictions are.
And here we hit the age-old debate, on which I am usually on the losing
side.
My feeling is that a user interface like this is just not worth having.
It is true that these features can be useful to some people some of the
time, and that in careful hands can be deployed appropriately. It's
just that we have a lot of problems in GCC due to our corner-case options;
we've tacked on options to let all kinds of people do all kinds of things.
But, we tend to break those options, and we tend to not document them
right, and people tend to use them in unintended ways, and so forth and
so on. I don't think we serve our users in this way.
All that said, I'm surprised that throwing exceptions -- without crossing
DSO boundaries -- doesn't work. I'd expect that would work almost by
accident.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com