incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: STDCXX-509
Date Wed, 17 Oct 2007 18:27:28 GMT
Travis Vitek wrote:
>> Martin Sebor wrote:
>>
>> Travis Vitek wrote:
>>> So I've been looking at the issue of the missing symbols for the
>>> destructor, copy constructor and assignment operators for bad_cast,
>>> bad_typeid and exceptions. Specifically, these symbols...
>> So based on the config macros below, 4.1.3 shouldn't have had
>> the definition of the exception copy assignment operator in it
>> (i.e., it should have come from the runtime library), whereas
>> 4.2.0 should have it in it. Yet the 4.1.3 examples aren't
>> finding the symbol either in the MSVC runtime (which is the
>> same), or in the 4.2.0 dll?
>>
> 
> Nope, you're backwards here.
> 
> As an example, the config.h for 4.1.3 does _not_ define
> _RWSTD_NO_BAD_CAST_ASSIGNMENT [the define is commented out], so the
> 4.1.3 library will have bad_cast::operator=() defined.

No, you've got it backwards. :) NO_BAD_CAST_ASSIGNMENT means
the function is not found in the runtime and that we need to
define it in the library. When the macro is not defined
(notice the double negative, !NO_XXX), the function will not
be defined.

> The 4.2.0 library
> does have the macro defined, so the symbol omitted from the library.

The other way around.

Martin

> 
>> You are running the 4.1.3 examples with the 4.2.0 library,
>> right? I.e., not 4.2.0 examples with the 4.1.3 library. Just
>> checking.
>>
> 
> Yes. As outlined in my previous e-mail, I'm running the 4.1.3
> examples/tests with the 4.2.0 dll.
> 
>> Martin
>>
>>> The 4.1.3 config.h header has the following defines
>>>
>>>   // #define _RWSTD_NO_BAD_CAST_ASSIGNMENT
>>>   // #define _RWSTD_NO_BAD_CAST_COPY_CTOR
>>>   #define _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
>>>   // #define _RWSTD_NO_BAD_CAST_DTOR
>>>   #define _RWSTD_NO_BAD_CAST_WHAT
>>>
>>>   // #define _RWSTD_NO_BAD_TYPEID_ASSIGNMENT
>>>   // #define _RWSTD_NO_BAD_TYPEID_COPY_CTOR
>>>   #define _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
>>>   // #define _RWSTD_NO_BAD_TYPEID_DTOR
>>>   #define _RWSTD_NO_BAD_TYPEID_WHAT
>>>
>>>   // #define _RWSTD_NO_EXCEPTION_ASSIGNMENT
>>>   // #define _RWSTD_NO_EXCEPTION_COPY_CTOR
>>>   // #define _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
>>>   // #define _RWSTD_NO_EXCEPTION_DTOR
>>>   // #define _RWSTD_NO_EXCEPTION_WHAT
>>>
>>> The 4.2.0 config.h header has the following defines
>>>
>>>   #define _RWSTD_NO_BAD_CAST_ASSIGNMENT
>>>   #define _RWSTD_NO_BAD_CAST_COPY_CTOR
>>>   #define _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
>>>   #define _RWSTD_NO_BAD_CAST_DTOR
>>>   #define _RWSTD_NO_BAD_CAST_WHAT
>>>
>>>   #define _RWSTD_NO_BAD_TYPEID_ASSIGNMENT
>>>   #define _RWSTD_NO_BAD_TYPEID_COPY_CTOR
>>>   #define _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
>>>   #define _RWSTD_NO_BAD_TYPEID_DTOR
>>>   #define _RWSTD_NO_BAD_TYPEID_WHAT
>>>
>>>   #define _RWSTD_NO_EXCEPTION_ASSIGNMENT
>>>   #define _RWSTD_NO_EXCEPTION_COPY_CTOR
>>>   #define _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
>>>   #define _RWSTD_NO_EXCEPTION_DTOR
>>>   #define _RWSTD_NO_EXCEPTION_WHAT
>>>
>>> This is pretty consistent with what I'm expecting. I'm 
>> looking into the
>>> config tests now to see why we have a change in behavior 
>> with the same
>>> configuration.
>>>
>>> Travis
>>


Mime
View raw message