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?
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.
I guess you are given that Farid is seeing the same unsats.
Could 4.1.3 be linking with some additional/different runtime
(archive) libraries than 4.2.0? That still doesn't explain why
the symbols aren't found in 4.2.0 if they're defined there
(according to the config macros).
Martin
Martin
public: class exception & __thiscall exception::operator=(class
exception const &)
public: __thiscall exception::exception(class exception const &)
public: __thiscall exception::exception(void)
public: virtual __thiscall exception::~exception(void)
public: virtual char const * __thiscall exception::what(void)const
public: class bad_cast & __thiscall bad_cast::operator=(class
bad_cast const &)
public: __thiscall bad_cast::bad_cast(class bad_cast const &)
public: virtual __thiscall bad_cast::~bad_cast(void)
public: class bad_typeid & __thiscall bad_typeid::operator=(class
bad_typeid const &)
public: __thiscall bad_typeid::bad_typeid(class bad_typeid const &)
public: virtual __thiscall bad_typeid::~bad_typeid(void)
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