msvcp60: Added partial exceptions support.

This commit is contained in:
Piotr Caban 2012-01-04 15:44:48 +01:00 committed by Alexandre Julliard
parent ee3e873e37
commit f14fd4add6
2 changed files with 251 additions and 132 deletions

View file

@ -61,11 +61,16 @@ typedef struct __cxx_exception_type
void WINAPI _CxxThrowException(exception*,const cxx_exception_type*);
/* vtables */
/* ??_7bad_alloc@std@@6B@ */
extern const vtable_ptr MSVCP_bad_alloc_vtable;
/* ??_7logic_error@std@@6B@ */
extern const vtable_ptr MSVCP_logic_error_vtable;
/* ??_7length_error@std@@6B@ */
extern const vtable_ptr MSVCP_length_error_vtable;
/* ??_7out_of_range@std@@6B@ */
extern const vtable_ptr MSVCP_out_of_range_vtable;
extern const vtable_ptr MSVCP_invalid_argument_vtable;
/* ??_7runtime_error@std@@6B@ */
extern const vtable_ptr MSVCP_runtime_error_vtable;
/* exception class data */
@ -76,15 +81,15 @@ static type_info exception_type_info = {
};
DEFINE_THISCALL_WRAPPER(MSVCP_exception_ctor, 8)
exception* __thiscall MSVCP_exception_ctor(exception *this, const char **name)
exception* __thiscall MSVCP_exception_ctor(exception *this, const char *name)
{
TRACE("(%p %s)\n", this, *name);
TRACE("(%p %s)\n", this, name);
this->vtable = exception_type_info.vtable;
if(*name) {
unsigned int name_len = strlen(*name) + 1;
if(name) {
unsigned int name_len = strlen(name) + 1;
this->name = malloc(name_len);
memcpy(this->name, *name, name_len);
memcpy(this->name, name, name_len);
this->do_free = TRUE;
} else {
this->name = NULL;
@ -103,7 +108,7 @@ exception* __thiscall MSVCP_exception_copy_ctor(exception *this, const exception
this->name = rhs->name;
this->do_free = FALSE;
} else
MSVCP_exception_ctor(this, (const char**)&rhs->name);
MSVCP_exception_ctor(this, rhs->name);
TRACE("name = %s\n", this->name);
return this;
}
@ -117,6 +122,29 @@ void __thiscall MSVCP_exception_dtor(exception *this)
free(this->name);
}
/* ?_Doraise@bad_alloc@std@@MBEXXZ */
/* ?_Doraise@bad_alloc@std@@MEBAXXZ */
/* ?_Doraise@logic_error@std@@MBEXXZ */
/* ?_Doraise@logic_error@std@@MEBAXXZ */
/* ?_Doraise@length_error@std@@MBEXXZ */
/* ?_Doraise@length_error@std@@MEBAXXZ */
/* ?_Doraise@out_of_range@std@@MBEXXZ */
/* ?_Doraise@out_of_range@std@@MEBAXXZ */
/* ?_Doraise@runtime_error@std@@MBEXXZ */
/* ?_Doraise@runtime_error@std@@MEBAXXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_exception__Doraise, 4)
void __thiscall MSVCP_exception__Doraise(exception *this)
{
FIXME("(%p) stub\n", this);
}
DEFINE_THISCALL_WRAPPER(MSVCP_exception_what,4)
const char* __thiscall MSVCP_exception_what(exception * this)
{
TRACE("(%p) returning %s\n", this, this->name);
return this->name ? this->name : "Unknown exception";
}
static const rtti_base_descriptor exception_rtti_base_descriptor = {
&exception_type_info,
0,
@ -157,15 +185,27 @@ void set_exception_vtable(void)
/* bad_alloc class data */
typedef exception bad_alloc;
/* ??0bad_alloc@std@@QAE@PBD@Z */
/* ??0bad_alloc@std@@QEAA@PEBD@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_ctor, 8)
bad_alloc* __thiscall MSVCP_bad_alloc_ctor(bad_alloc *this, const char **name)
bad_alloc* __thiscall MSVCP_bad_alloc_ctor(bad_alloc *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
MSVCP_exception_ctor(this, name);
this->vtable = &MSVCP_bad_alloc_vtable;
return this;
}
/* ??0bad_alloc@std@@QAE@XZ */
/* ??0bad_alloc@std@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_default_ctor, 4)
bad_alloc* __thiscall MSVCP_bad_alloc_default_ctor(bad_alloc *this)
{
return MSVCP_bad_alloc_ctor(this, "bad allocation");
}
/* ??0bad_alloc@std@@QAE@ABV01@@Z */
/* ??0bad_alloc@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_copy_ctor, 8)
bad_alloc* __thiscall MSVCP_bad_alloc_copy_ctor(bad_alloc *this, const bad_alloc *rhs)
{
@ -175,6 +215,8 @@ bad_alloc* __thiscall MSVCP_bad_alloc_copy_ctor(bad_alloc *this, const bad_alloc
return this;
}
/* ??1bad_alloc@std@@UAE@XZ */
/* ??1bad_alloc@std@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_dtor, 4)
void __thiscall MSVCP_bad_alloc_dtor(bad_alloc *this)
{
@ -202,11 +244,13 @@ void * __thiscall MSVCP_bad_alloc_vector_dtor(bad_alloc *this, unsigned int flag
return this;
}
DEFINE_THISCALL_WRAPPER(MSVCP_what_exception,4)
const char* __thiscall MSVCP_what_exception(exception * this)
/* ??4bad_alloc@std@@QAEAAV01@ABV01@@Z */
/* ??4bad_alloc@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_assign, 8)
bad_alloc* __thiscall MSVCP_bad_alloc_assign(bad_alloc *this, const bad_alloc *assign)
{
TRACE("(%p) returning %s\n", this, this->name);
return this->name ? this->name : "Unknown exception";
MSVCP_bad_alloc_dtor(this);
return MSVCP_bad_alloc_copy_ctor(this, assign);
}
DEFINE_RTTI_DATA(bad_alloc, 0, 1, &exception_rtti_base_descriptor, NULL, NULL, ".?AVbad_alloc@std@@");
@ -236,26 +280,28 @@ static const cxx_exception_type bad_alloc_cxx_type = {
};
/* logic_error class data */
typedef struct _logic_error {
typedef struct {
exception e;
basic_string_char str;
} logic_error;
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_ctor, 8)
logic_error* __thiscall MSVCP_logic_error_ctor(
logic_error *this, const char **name)
logic_error *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
this->e.vtable = &MSVCP_logic_error_vtable;
this->e.name = NULL;
this->e.do_free = FALSE;
MSVCP_basic_string_char_ctor_cstr(&this->str, *name);
MSVCP_basic_string_char_ctor_cstr(&this->str, name);
return this;
}
/* ??0logic_error@std@@QAE@ABV01@@Z */
/* ??0logic_error@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_copy_ctor, 8)
logic_error* __thiscall MSVCP_logic_error_copy_ctor(
logic_error *this, logic_error *rhs)
logic_error *this, const logic_error *rhs)
{
TRACE("%p %p\n", this, rhs);
MSVCP_exception_copy_ctor(&this->e, &rhs->e);
@ -264,6 +310,23 @@ logic_error* __thiscall MSVCP_logic_error_copy_ctor(
return this;
}
/* ??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
/* ??0logic_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_ctor_bstr, 8)
logic_error* __thiscall MSVCP_logic_error_ctor_bstr(logic_error *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_logic_error_ctor(this, MSVCP_basic_string_char_c_str(str));
}
/* ??1logic_error@std@@UAE@XZ */
/* ??1logic_error@std@@UEAA@XZ */
/* ??1length_error@std@@UAE@XZ */
/* ??1length_error@std@@UEAA@XZ */
/* ??1out_of_range@std@@UAE@XZ */
/* ??1out_of_range@std@@UEAA@XZ */
/* ??1runtime_error@std@@UAE@XZ */
/* ??1runtime_error@std@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_dtor, 4)
void __thiscall MSVCP_logic_error_dtor(logic_error *this)
{
@ -293,6 +356,17 @@ void* __thiscall MSVCP_logic_error_vector_dtor(
return this;
}
/* ??4logic_error@std@@QAEAAV01@ABV01@@Z */
/* ??4logic_error@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_assign, 8)
logic_error* __thiscall MSVCP_logic_error_assign(logic_error *this, const logic_error *assign)
{
MSVCP_logic_error_dtor(this);
return MSVCP_logic_error_copy_ctor(this, assign);
}
/* ?what@logic_error@std@@UBEPBDXZ */
/* ?what@logic_error@std@@UEBAPEBDXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_what, 4)
const char* __thiscall MSVCP_logic_error_what(logic_error *this)
{
@ -331,17 +405,19 @@ typedef logic_error length_error;
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_ctor, 8)
length_error* __thiscall MSVCP_length_error_ctor(
length_error *this, const char **name)
length_error *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
MSVCP_logic_error_ctor(this, name);
this->e.vtable = &MSVCP_length_error_vtable;
return this;
}
/* ??0length_error@std@@QAE@ABV01@@Z */
/* ??0length_error@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_copy_ctor, 8)
length_error* __thiscall MSVCP_length_error_copy_ctor(
length_error *this, length_error *rhs)
length_error *this, const length_error *rhs)
{
TRACE("%p %p\n", this, rhs);
MSVCP_logic_error_copy_ctor(this, rhs);
@ -349,6 +425,15 @@ length_error* __thiscall MSVCP_length_error_copy_ctor(
return this;
}
/* ??0length_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
/* ??0length_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_ctor_bstr, 8)
length_error* __thiscall MSVCP_length_error_ctor_bstr(length_error *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_length_error_ctor(this, MSVCP_basic_string_char_c_str(str));
}
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_vector_dtor, 8)
void* __thiscall MSVCP_length_error_vector_dtor(
length_error *this, unsigned int flags)
@ -357,6 +442,15 @@ void* __thiscall MSVCP_length_error_vector_dtor(
return MSVCP_logic_error_vector_dtor(this, flags);
}
/* ??4length_error@std@@QAEAAV01@ABV01@@Z */
/* ??4length_error@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_assign, 8)
length_error* __thiscall MSVCP_length_error_assign(length_error *this, const length_error *assign)
{
MSVCP_logic_error_dtor(this);
return MSVCP_length_error_copy_ctor(this, assign);
}
DEFINE_RTTI_DATA(length_error, 0, 2, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, NULL, ".?AVlength_error@std@@");
static const cxx_type_info length_error_cxx_type_info = {
@ -388,17 +482,19 @@ typedef logic_error out_of_range;
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_ctor, 8)
out_of_range* __thiscall MSVCP_out_of_range_ctor(
out_of_range *this, const char **name)
out_of_range *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
MSVCP_logic_error_ctor(this, name);
this->e.vtable = &MSVCP_out_of_range_vtable;
return this;
}
/* ??0out_of_range@std@@QAE@ABV01@@Z */
/* ??0out_of_range@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_copy_ctor, 8)
out_of_range* __thiscall MSVCP_out_of_range_copy_ctor(
out_of_range *this, out_of_range *rhs)
out_of_range *this, const out_of_range *rhs)
{
TRACE("%p %p\n", this, rhs);
MSVCP_logic_error_copy_ctor(this, rhs);
@ -406,6 +502,15 @@ out_of_range* __thiscall MSVCP_out_of_range_copy_ctor(
return this;
}
/* ??0out_of_range@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
/* ??0out_of_range@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_ctor_bstr, 8)
out_of_range* __thiscall MSVCP_out_of_range_ctor_bstr(out_of_range *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_out_of_range_ctor(this, MSVCP_basic_string_char_c_str(str));
}
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_vector_dtor, 8)
void* __thiscall MSVCP_out_of_range_vector_dtor(
out_of_range *this, unsigned int flags)
@ -414,6 +519,15 @@ void* __thiscall MSVCP_out_of_range_vector_dtor(
return MSVCP_logic_error_vector_dtor(this, flags);
}
/* ??4out_of_range@std@@QAEAAV01@ABV01@@Z */
/* ??4out_of_range@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_assign, 8)
out_of_range* __thiscall MSVCP_out_of_range_assign(out_of_range *this, const out_of_range *assign)
{
MSVCP_logic_error_dtor(this);
return MSVCP_out_of_range_copy_ctor(this, assign);
}
DEFINE_RTTI_DATA(out_of_range, 0, 2, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, NULL, ".?AVout_of_range@std@@");
static const cxx_type_info out_of_range_cxx_type_info = {
@ -445,9 +559,9 @@ typedef logic_error invalid_argument;
DEFINE_THISCALL_WRAPPER(MSVCP_invalid_argument_ctor, 8)
invalid_argument* __thiscall MSVCP_invalid_argument_ctor(
invalid_argument *this, const char **name)
invalid_argument *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
MSVCP_logic_error_ctor(this, name);
this->e.vtable = &MSVCP_invalid_argument_vtable;
return this;
@ -498,40 +612,37 @@ static const cxx_exception_type invalid_argument_cxx_type = {
};
/* runtime_error class data */
typedef struct {
exception e;
basic_string_char str;
} runtime_error;
typedef logic_error runtime_error;
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_ctor, 8)
runtime_error* __thiscall MSVCP_runtime_error_ctor(
runtime_error *this, const char **name)
runtime_error *this, const char *name)
{
TRACE("%p %s\n", this, *name);
TRACE("%p %s\n", this, name);
MSVCP_logic_error_ctor(this, name);
this->e.vtable = &MSVCP_runtime_error_vtable;
this->e.name = NULL;
this->e.do_free = FALSE;
MSVCP_basic_string_char_ctor_cstr(&this->str, *name);
return this;
}
/* ??0runtime_error@std@@QAE@ABV01@@Z */
/* ??0runtime_error@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_copy_ctor, 8)
runtime_error* __thiscall MSVCP_runtime_error_copy_ctor(
runtime_error *this, runtime_error *rhs)
runtime_error *this, const runtime_error *rhs)
{
TRACE("%p %p\n", this, rhs);
MSVCP_exception_copy_ctor(&this->e, &rhs->e);
MSVCP_basic_string_char_copy_ctor(&this->str, &rhs->str);
MSVCP_logic_error_copy_ctor(this, rhs);
this->e.vtable = &MSVCP_runtime_error_vtable;
return this;
}
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_dtor, 4)
void __thiscall MSVCP_runtime_error_dtor(runtime_error *this)
/* ??0runtime_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
/* ??0runtime_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_ctor_bstr, 8)
runtime_error* __thiscall MSVCP_runtime_error_ctor_bstr(runtime_error *this, const basic_string_char *str)
{
TRACE("%p\n", this);
MSVCP_exception_dtor(&this->e);
MSVCP_basic_string_char_dtor(&this->str);
TRACE("(%p %p)\n", this, str);
return MSVCP_runtime_error_ctor(this, MSVCP_basic_string_char_c_str(str));
}
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_vector_dtor, 8)
@ -539,20 +650,16 @@ void* __thiscall MSVCP_runtime_error_vector_dtor(
runtime_error *this, unsigned int flags)
{
TRACE("%p %x\n", this, flags);
if(flags & 2) {
/* we have an array, with the number of elements stored before the first object */
int i, *ptr = (int *)this-1;
return MSVCP_logic_error_vector_dtor(this, flags);
}
for(i=*ptr-1; i>=0; i--)
MSVCP_runtime_error_dtor(this+i);
MSVCRT_operator_delete(ptr);
} else {
MSVCP_runtime_error_dtor(this);
if(flags & 1)
MSVCRT_operator_delete(this);
}
return this;
/* ??4runtime_error@std@@QAEAAV01@ABV01@@Z */
/* ??4runtime_error@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_assign, 8)
runtime_error* __thiscall MSVCP_runtime_error_assign(runtime_error *this, const runtime_error *assign)
{
MSVCP_logic_error_dtor(this);
return MSVCP_runtime_error_copy_ctor(this, assign);
}
DEFINE_RTTI_DATA(runtime_error, 0, 1, &exception_rtti_base_descriptor, NULL, NULL, ".?AVruntime_error@std@@");
@ -576,11 +683,13 @@ static const cxx_type_info_table runtime_error_cxx_type_table = {
static const cxx_exception_type runtime_error_cxx_type = {
0,
(cxx_copy_ctor)THISCALL(MSVCP_runtime_error_dtor),
(cxx_copy_ctor)THISCALL(MSVCP_logic_error_dtor),
NULL,
&runtime_error_cxx_type_table
};
/* ?what@runtime_error@std@@UBEPBDXZ */
/* ?what@runtime_error@std@@UEBAPEBDXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_what, 4)
const char* __thiscall MSVCP_runtime_error_what(runtime_error *this)
{
@ -591,12 +700,24 @@ const char* __thiscall MSVCP_runtime_error_what(runtime_error *this)
#ifndef __GNUC__
void __asm_dummy_vtables(void) {
#endif
__ASM_VTABLE(bad_alloc, VTABLE_ADD_FUNC(MSVCP_what_exception));
__ASM_VTABLE(logic_error, VTABLE_ADD_FUNC(MSVCP_logic_error_what));
__ASM_VTABLE(length_error, VTABLE_ADD_FUNC(MSVCP_logic_error_what));
__ASM_VTABLE(out_of_range, VTABLE_ADD_FUNC(MSVCP_logic_error_what));
__ASM_VTABLE(invalid_argument, VTABLE_ADD_FUNC(MSVCP_logic_error_what));
__ASM_VTABLE(runtime_error, VTABLE_ADD_FUNC(MSVCP_runtime_error_what));
__ASM_VTABLE(bad_alloc,
VTABLE_ADD_FUNC(MSVCP_exception_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
__ASM_VTABLE(logic_error,
VTABLE_ADD_FUNC(MSVCP_logic_error_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
__ASM_VTABLE(length_error,
VTABLE_ADD_FUNC(MSVCP_logic_error_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
__ASM_VTABLE(out_of_range,
VTABLE_ADD_FUNC(MSVCP_logic_error_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
__ASM_VTABLE(invalid_argument,
VTABLE_ADD_FUNC(MSVCP_logic_error_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
__ASM_VTABLE(runtime_error,
VTABLE_ADD_FUNC(MSVCP_runtime_error_what)
VTABLE_ADD_FUNC(MSVCP_exception__Doraise));
#ifndef __GNUC__
}
#endif
@ -604,42 +725,40 @@ void __asm_dummy_vtables(void) {
/* Internal: throws selected exception */
void throw_exception(exception_type et, const char *str)
{
const char *addr = str;
switch(et) {
case EXCEPTION: {
exception e;
MSVCP_exception_ctor(&e, &addr);
MSVCP_exception_ctor(&e, str);
_CxxThrowException(&e, &exception_cxx_type);
}
case EXCEPTION_BAD_ALLOC: {
bad_alloc e;
MSVCP_bad_alloc_ctor(&e, &addr);
MSVCP_bad_alloc_ctor(&e, str);
_CxxThrowException(&e, &bad_alloc_cxx_type);
}
case EXCEPTION_LOGIC_ERROR: {
logic_error e;
MSVCP_logic_error_ctor(&e, &addr);
MSVCP_logic_error_ctor(&e, str);
_CxxThrowException((exception*)&e, &logic_error_cxx_type);
}
case EXCEPTION_LENGTH_ERROR: {
length_error e;
MSVCP_length_error_ctor(&e, &addr);
MSVCP_length_error_ctor(&e, str);
_CxxThrowException((exception*)&e, &length_error_cxx_type);
}
case EXCEPTION_OUT_OF_RANGE: {
out_of_range e;
MSVCP_out_of_range_ctor(&e, &addr);
MSVCP_out_of_range_ctor(&e, str);
_CxxThrowException((exception*)&e, &out_of_range_cxx_type);
}
case EXCEPTION_INVALID_ARGUMENT: {
invalid_argument e;
MSVCP_invalid_argument_ctor(&e, &addr);
MSVCP_invalid_argument_ctor(&e, str);
_CxxThrowException((exception*)&e, &invalid_argument_cxx_type);
}
case EXCEPTION_RUNTIME_ERROR: {
runtime_error e;
MSVCP_runtime_error_ctor(&e, &addr);
MSVCP_runtime_error_ctor(&e, str);
_CxxThrowException((exception*)&e, &runtime_error_cxx_type);
}
}

View file

@ -839,12 +839,12 @@
@ stub -arch=win64 ??0__non_rtti_object@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0__non_rtti_object@std@@QAE@PBD@Z
@ stub -arch=win64 ??0__non_rtti_object@std@@QEAA@PEBD@Z
@ stub -arch=win32 ??0bad_alloc@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0bad_alloc@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0bad_alloc@std@@QAE@PBD@Z
@ stub -arch=win64 ??0bad_alloc@std@@QEAA@PEBD@Z
@ stub -arch=win32 ??0bad_alloc@std@@QAE@XZ
@ stub -arch=win64 ??0bad_alloc@std@@QEAA@XZ
@ thiscall -arch=win32 ??0bad_alloc@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_bad_alloc_copy_ctor
@ cdecl -arch=win64 ??0bad_alloc@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_bad_alloc_copy_ctor
@ thiscall -arch=win32 ??0bad_alloc@std@@QAE@PBD@Z(ptr str) MSVCP_bad_alloc_ctor
@ cdecl -arch=win64 ??0bad_alloc@std@@QEAA@PEBD@Z(ptr str) MSVCP_bad_alloc_ctor
@ thiscall -arch=win32 ??0bad_alloc@std@@QAE@XZ(ptr) MSVCP_bad_alloc_default_ctor
@ cdecl -arch=win64 ??0bad_alloc@std@@QEAA@XZ(ptr) MSVCP_bad_alloc_default_ctor
@ stub -arch=win32 ??0bad_cast@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0bad_cast@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0bad_cast@std@@QAE@PBD@Z
@ -871,10 +871,10 @@
@ stub -arch=win64 ??0ios_base@std@@IEAA@XZ # don't forward to msvcp90
@ stub -arch=win32 ??0ios_base@std@@QAE@ABV01@@Z # don't forward to msvcp90
@ stub -arch=win64 ??0ios_base@std@@QEAA@AEBV01@@Z # don't forward to msvcp90
@ stub -arch=win32 ??0length_error@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0length_error@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0length_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0length_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ thiscall -arch=win32 ??0length_error@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_length_error_copy_ctor
@ cdecl -arch=win64 ??0length_error@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_length_error_copy_ctor
@ thiscall -arch=win32 ??0length_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_length_error_ctor_bstr
@ cdecl -arch=win64 ??0length_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_length_error_ctor_bstr
@ stub -arch=win32 ??0locale@std@@AAE@PAV_Locimp@01@@Z # don't forward to msvcp90
@ stub -arch=win64 ??0locale@std@@AEAA@PEAV_Locimp@01@@Z # don't forward to msvcp90
@ stub -arch=win32 ??0locale@std@@QAE@ABV01@0H@Z # don't forward to msvcp90
@ -889,20 +889,20 @@
@ stub -arch=win64 ??0locale@std@@QEAA@W4_Uninitialized@1@@Z # don't forward to msvcp90
@ stub -arch=win32 ??0locale@std@@QAE@XZ # don't forward to msvcp90
@ stub -arch=win64 ??0locale@std@@QEAA@XZ # don't forward to msvcp90
@ stub -arch=win32 ??0logic_error@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0logic_error@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0logic_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ thiscall -arch=win32 ??0logic_error@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_logic_error_copy_ctor
@ cdecl -arch=win64 ??0logic_error@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_logic_error_copy_ctor
@ thiscall -arch=win32 ??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_logic_error_ctor_bstr
@ cdecl -arch=win64 ??0logic_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_logic_error_ctor_bstr
@ stub -arch=win32 ??0messages_base@std@@QAE@I@Z
@ stub -arch=win64 ??0messages_base@std@@QEAA@_K@Z
@ stub -arch=win32 ??0money_base@std@@QAE@I@Z
@ stub -arch=win64 ??0money_base@std@@QEAA@_K@Z
@ stub -arch=win32 ??0ostrstream@std@@QAE@PADHH@Z
@ stub -arch=win64 ??0ostrstream@std@@QEAA@PEAD_JH@Z
@ stub -arch=win32 ??0out_of_range@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0out_of_range@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0out_of_range@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0out_of_range@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ thiscall -arch=win32 ??0out_of_range@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_out_of_range_copy_ctor
@ cdecl -arch=win64 ??0out_of_range@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_out_of_range_copy_ctor
@ thiscall -arch=win32 ??0out_of_range@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_out_of_range_ctor_bstr
@ cdecl -arch=win64 ??0out_of_range@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_out_of_range_ctor_bstr
@ stub -arch=win32 ??0overflow_error@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0overflow_error@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0overflow_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ -911,10 +911,10 @@
@ stub -arch=win64 ??0range_error@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0range_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0range_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win32 ??0runtime_error@std@@QAE@ABV01@@Z
@ stub -arch=win64 ??0runtime_error@std@@QEAA@AEBV01@@Z
@ stub -arch=win32 ??0runtime_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0runtime_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ thiscall -arch=win32 ??0runtime_error@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_runtime_error_copy_ctor
@ cdecl -arch=win64 ??0runtime_error@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_runtime_error_copy_ctor
@ thiscall -arch=win32 ??0runtime_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_runtime_error_ctor_bstr
@ cdecl -arch=win64 ??0runtime_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_runtime_error_ctor_bstr
@ stub -arch=win32 ??0strstream@std@@QAE@PADHH@Z
@ stub -arch=win64 ??0strstream@std@@QEAA@PEAD_JH@Z
@ stub -arch=win32 ??0time_base@std@@QAE@I@Z
@ -1047,8 +1047,8 @@
@ stub -arch=win64 ??1_Winit@std@@QEAA@XZ
@ stub -arch=win32 ??1__non_rtti_object@std@@UAE@XZ
@ stub -arch=win64 ??1__non_rtti_object@std@@UEAA@XZ
@ stub -arch=win32 ??1bad_alloc@std@@UAE@XZ
@ stub -arch=win64 ??1bad_alloc@std@@UEAA@XZ
@ thiscall -arch=win32 ??1bad_alloc@std@@UAE@XZ(ptr) MSVCP_bad_alloc_dtor
@ cdecl -arch=win64 ??1bad_alloc@std@@UEAA@XZ(ptr) MSVCP_bad_alloc_dtor
@ stub -arch=win32 ??1bad_cast@std@@UAE@XZ
@ stub -arch=win64 ??1bad_cast@std@@UEAA@XZ
@ stub -arch=win32 ??1bad_exception@std@@UAE@XZ
@ -1067,26 +1067,26 @@
@ stub -arch=win64 ??1ios_base@std@@UEAA@XZ # don't forward to msvcp90
@ stub -arch=win32 ??1istrstream@std@@UAE@XZ
@ stub -arch=win64 ??1istrstream@std@@UEAA@XZ
@ stub -arch=win32 ??1length_error@std@@UAE@XZ
@ stub -arch=win64 ??1length_error@std@@UEAA@XZ
@ thiscall -arch=win32 ??1length_error@std@@UAE@XZ(ptr) MSVCP_logic_error_dtor
@ cdecl -arch=win64 ??1length_error@std@@UEAA@XZ(ptr) MSVCP_logic_error_dtor
@ stub -arch=win32 ??1locale@std@@QAE@XZ # don't forward to msvcp90
@ stub -arch=win64 ??1locale@std@@QEAA@XZ # don't forward to msvcp90
@ stub -arch=win32 ??1logic_error@std@@UAE@XZ
@ stub -arch=win64 ??1logic_error@std@@UEAA@XZ
@ thiscall -arch=win32 ??1logic_error@std@@UAE@XZ(ptr) MSVCP_logic_error_dtor
@ cdecl -arch=win64 ??1logic_error@std@@UEAA@XZ(ptr) MSVCP_logic_error_dtor
@ stub -arch=win32 ??1messages_base@std@@UAE@XZ
@ stub -arch=win64 ??1messages_base@std@@UEAA@XZ
@ stub -arch=win32 ??1money_base@std@@UAE@XZ
@ stub -arch=win64 ??1money_base@std@@UEAA@XZ
@ stub -arch=win32 ??1ostrstream@std@@UAE@XZ
@ stub -arch=win64 ??1ostrstream@std@@UEAA@XZ
@ stub -arch=win32 ??1out_of_range@std@@UAE@XZ
@ stub -arch=win64 ??1out_of_range@std@@UEAA@XZ
@ thiscall -arch=win32 ??1out_of_range@std@@UAE@XZ(ptr) MSVCP_logic_error_dtor
@ cdecl -arch=win64 ??1out_of_range@std@@UEAA@XZ(ptr) MSVCP_logic_error_dtor
@ stub -arch=win32 ??1overflow_error@std@@UAE@XZ
@ stub -arch=win64 ??1overflow_error@std@@UEAA@XZ
@ stub -arch=win32 ??1range_error@std@@UAE@XZ
@ stub -arch=win64 ??1range_error@std@@UEAA@XZ
@ stub -arch=win32 ??1runtime_error@std@@UAE@XZ
@ stub -arch=win64 ??1runtime_error@std@@UEAA@XZ
@ thiscall -arch=win32 ??1runtime_error@std@@UAE@XZ(ptr) MSVCP_logic_error_dtor
@ cdecl -arch=win64 ??1runtime_error@std@@UEAA@XZ(ptr) MSVCP_logic_error_dtor
@ stub -arch=win32 ??1strstream@std@@UAE@XZ
@ stub -arch=win64 ??1strstream@std@@UEAA@XZ
@ stub -arch=win32 ??1strstreambuf@std@@UAE@XZ
@ -1233,8 +1233,8 @@
@ stub -arch=win64 ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4__non_rtti_object@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4__non_rtti_object@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4bad_alloc@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4bad_alloc@std@@QEAAAEAV01@AEBV01@@Z
@ thiscall -arch=win32 ??4bad_alloc@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_bad_alloc_assign
@ cdecl -arch=win64 ??4bad_alloc@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_bad_alloc_assign
@ stub -arch=win32 ??4bad_cast@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4bad_cast@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4bad_exception@std@@QAEAAV01@ABV01@@Z
@ -1247,20 +1247,20 @@
@ stub -arch=win64 ??4id@locale@std@@QEAAAEAV012@AEBV012@@Z
@ stub -arch=win32 ??4ios_base@std@@QAEAAV01@ABV01@@Z # don't forward to msvcp90
@ stub -arch=win64 ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z # don't forward to msvcp90
@ stub -arch=win32 ??4length_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4length_error@std@@QEAAAEAV01@AEBV01@@Z
@ thiscall -arch=win32 ??4length_error@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_length_error_assign
@ cdecl -arch=win64 ??4length_error@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_length_error_assign
@ stub -arch=win32 ??4locale@std@@QAEAAV01@ABV01@@Z # don't forward to msvcp90
@ stub -arch=win64 ??4locale@std@@QEAAAEAV01@AEBV01@@Z # don't forward to msvcp90
@ stub -arch=win32 ??4logic_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4logic_error@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4out_of_range@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4out_of_range@std@@QEAAAEAV01@AEBV01@@Z
@ thiscall -arch=win32 ??4logic_error@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_logic_error_assign
@ cdecl -arch=win64 ??4logic_error@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_logic_error_assign
@ thiscall -arch=win32 ??4out_of_range@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_out_of_range_assign
@ cdecl -arch=win64 ??4out_of_range@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_out_of_range_assign
@ stub -arch=win32 ??4overflow_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4overflow_error@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4range_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4range_error@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4runtime_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4runtime_error@std@@QEAAAEAV01@AEBV01@@Z
@ thiscall -arch=win32 ??4runtime_error@std@@QAEAAV01@ABV01@@Z(ptr) MSVCP_runtime_error_assign
@ thiscall -arch=win64 ??4runtime_error@std@@QEAAAEAV01@AEBV01@@Z(ptr) MSVCP_runtime_error_assign
@ stub -arch=win32 ??4underflow_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4underflow_error@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z
@ -1814,7 +1814,7 @@
# extern ??_7?$time_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@6B@
# extern ??_7?$time_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@
# extern ??_7__non_rtti_object@std@@6B@
# extern ??_7bad_alloc@std@@6B@
@ extern ??_7bad_alloc@std@@6B@ MSVCP_bad_alloc_vtable
# extern ??_7bad_cast@std@@6B@
# extern ??_7bad_exception@std@@6B@
# extern ??_7bad_typeid@std@@6B@
@ -1823,14 +1823,14 @@
# extern ??_7domain_error@std@@6B@
# extern ??_7facet@locale@std@@6B@
# extern ??_7ios_base@std@@6B@ msvcp90.??_7ios_base@std@@6B@ # don't forward to msvcp90
# extern ??_7length_error@std@@6B@
# extern ??_7logic_error@std@@6B@
@ extern ??_7length_error@std@@6B@ MSVCP_length_error_vtable
@ extern ??_7logic_error@std@@6B@ MSVCP_logic_error_vtable
# extern ??_7messages_base@std@@6B@
# extern ??_7money_base@std@@6B@
# extern ??_7out_of_range@std@@6B@
@ extern ??_7out_of_range@std@@6B@ MSVCP_out_of_range_vtable
# extern ??_7overflow_error@std@@6B@
# extern ??_7range_error@std@@6B@
# extern ??_7runtime_error@std@@6B@
@ extern ??_7runtime_error@std@@6B@ MSVCP_runtime_error_vtable
# extern ??_7time_base@std@@6B@
# extern ??_7underflow_error@std@@6B@
# extern ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@
@ -2027,8 +2027,8 @@
@ stub ?_Cosh@?$_Ctr@O@std@@SAOOO@Z
@ stub -arch=win32 ?_Decref@facet@locale@std@@QAEPAV123@XZ # don't forward to msvcp90
@ stub -arch=win64 ?_Decref@facet@locale@std@@QEAAPEAV123@XZ # don't forward to msvcp90
@ stub -arch=win32 ?_Doraise@bad_alloc@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@bad_alloc@std@@MEBAXXZ
@ thiscall -arch=win32 ?_Doraise@bad_alloc@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@bad_alloc@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ stub -arch=win32 ?_Doraise@bad_cast@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@bad_cast@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@bad_exception@std@@MBEXXZ
@ -2037,18 +2037,18 @@
@ stub -arch=win64 ?_Doraise@bad_typeid@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@domain_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@domain_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@length_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@length_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@logic_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@logic_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@out_of_range@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@out_of_range@std@@MEBAXXZ
@ thiscall -arch=win32 ?_Doraise@length_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@length_error@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ thiscall -arch=win32 ?_Doraise@logic_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@logic_error@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ thiscall -arch=win32 ?_Doraise@out_of_range@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@out_of_range@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ stub -arch=win32 ?_Doraise@overflow_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@overflow_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@range_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@range_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@runtime_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@runtime_error@std@@MEBAXXZ
@ thiscall -arch=win32 ?_Doraise@runtime_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@runtime_error@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ stub -arch=win32 ?_Doraise@underflow_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@underflow_error@std@@MEBAXXZ
@ thiscall -arch=win32 ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z(ptr long) basic_string_char__Eos
@ -4217,10 +4217,10 @@
# extern ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A
# extern ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A
# extern ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A
@ stub -arch=win32 ?what@logic_error@std@@UBEPBDXZ
@ stub -arch=win64 ?what@logic_error@std@@UEBAPEBDXZ
@ stub -arch=win32 ?what@runtime_error@std@@UBEPBDXZ
@ stub -arch=win64 ?what@runtime_error@std@@UEBAPEBDXZ
@ thiscall -arch=win32 ?what@logic_error@std@@UBEPBDXZ(ptr) MSVCP_logic_error_what
@ cdecl -arch=win64 ?what@logic_error@std@@UEBAPEBDXZ(ptr) MSVCP_logic_error_what
@ thiscall -arch=win32 ?what@runtime_error@std@@UBEPBDXZ(ptr) MSVCP_runtime_error_what
@ cdecl -arch=win64 ?what@runtime_error@std@@UEBAPEBDXZ(ptr) MSVCP_runtime_error_what
@ stub -arch=win32 ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z # don't forward to msvcp90
@ stub -arch=win64 ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z # don't forward to msvcp90
@ stub -arch=win32 ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z