Commit f664a991 authored by Daniel Lehman's avatar Daniel Lehman Committed by Alexandre Julliard

msvcp90: Add std::range_error table.

parent de4e3dda
...@@ -907,10 +907,10 @@ ...@@ -907,10 +907,10 @@
@ stub -arch=win64 ??0overflow_error@std@@QEAA@AEBV01@@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 @ stub -arch=win32 ??0overflow_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0overflow_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @ stub -arch=win64 ??0overflow_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win32 ??0range_error@std@@QAE@ABV01@@Z @ thiscall -arch=win32 ??0range_error@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_range_error_copy_ctor
@ stub -arch=win64 ??0range_error@std@@QEAA@AEBV01@@Z @ cdecl -arch=win64 ??0range_error@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_range_error_copy_ctor
@ stub -arch=win32 ??0range_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @ thiscall -arch=win32 ??0range_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_range_error_ctor_bstr
@ stub -arch=win64 ??0range_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @ cdecl -arch=win64 ??0range_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z(ptr ptr) MSVCP_range_error_ctor_bstr
@ thiscall -arch=win32 ??0runtime_error@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_runtime_error_copy_ctor @ 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 @ 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 @ 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
...@@ -1083,8 +1083,8 @@ ...@@ -1083,8 +1083,8 @@
@ cdecl -arch=win64 ??1out_of_range@std@@UEAA@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=win32 ??1overflow_error@std@@UAE@XZ
@ stub -arch=win64 ??1overflow_error@std@@UEAA@XZ @ stub -arch=win64 ??1overflow_error@std@@UEAA@XZ
@ stub -arch=win32 ??1range_error@std@@UAE@XZ @ thiscall -arch=win32 ??1range_error@std@@UAE@XZ(ptr) MSVCP_runtime_error_dtor
@ stub -arch=win64 ??1range_error@std@@UEAA@XZ @ cdecl -arch=win64 ??1range_error@std@@UEAA@XZ(ptr) MSVCP_runtime_error_dtor
@ thiscall -arch=win32 ??1runtime_error@std@@UAE@XZ(ptr) MSVCP_logic_error_dtor @ 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 @ cdecl -arch=win64 ??1runtime_error@std@@UEAA@XZ(ptr) MSVCP_logic_error_dtor
@ thiscall -arch=win32 ??1strstream@std@@UAE@XZ(ptr) strstream_dtor @ thiscall -arch=win32 ??1strstream@std@@UAE@XZ(ptr) strstream_dtor
...@@ -1257,8 +1257,8 @@ ...@@ -1257,8 +1257,8 @@
@ cdecl -arch=win64 ??4out_of_range@std@@QEAAAEAV01@AEBV01@@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=win32 ??4overflow_error@std@@QAEAAV01@ABV01@@Z
@ stub -arch=win64 ??4overflow_error@std@@QEAAAEAV01@AEBV01@@Z @ stub -arch=win64 ??4overflow_error@std@@QEAAAEAV01@AEBV01@@Z
@ stub -arch=win32 ??4range_error@std@@QAEAAV01@ABV01@@Z @ thiscall -arch=win32 ??4range_error@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_range_error_assign
@ stub -arch=win64 ??4range_error@std@@QEAAAEAV01@AEBV01@@Z @ cdecl -arch=win64 ??4range_error@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_range_error_assign
@ thiscall -arch=win32 ??4runtime_error@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_runtime_error_assign @ thiscall -arch=win32 ??4runtime_error@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_runtime_error_assign
@ cdecl -arch=win64 ??4runtime_error@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_runtime_error_assign @ cdecl -arch=win64 ??4runtime_error@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_runtime_error_assign
@ stub -arch=win32 ??4underflow_error@std@@QAEAAV01@ABV01@@Z @ stub -arch=win32 ??4underflow_error@std@@QAEAAV01@ABV01@@Z
...@@ -1829,7 +1829,7 @@ ...@@ -1829,7 +1829,7 @@
# extern ??_7money_base@std@@6B@ # extern ??_7money_base@std@@6B@
@ extern ??_7out_of_range@std@@6B@ MSVCP_out_of_range_vtable @ extern ??_7out_of_range@std@@6B@ MSVCP_out_of_range_vtable
# extern ??_7overflow_error@std@@6B@ # extern ??_7overflow_error@std@@6B@
# extern ??_7range_error@std@@6B@ @ extern ??_7range_error@std@@6B@ MSVCP_range_error_vtable
@ extern ??_7runtime_error@std@@6B@ MSVCP_runtime_error_vtable @ extern ??_7runtime_error@std@@6B@ MSVCP_runtime_error_vtable
# extern ??_7time_base@std@@6B@ # extern ??_7time_base@std@@6B@
# extern ??_7underflow_error@std@@6B@ # extern ??_7underflow_error@std@@6B@
...@@ -2045,8 +2045,8 @@ ...@@ -2045,8 +2045,8 @@
@ cdecl -arch=win64 ?_Doraise@out_of_range@std@@MEBAXXZ(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=win32 ?_Doraise@overflow_error@std@@MBEXXZ
@ stub -arch=win64 ?_Doraise@overflow_error@std@@MEBAXXZ @ stub -arch=win64 ?_Doraise@overflow_error@std@@MEBAXXZ
@ stub -arch=win32 ?_Doraise@range_error@std@@MBEXXZ @ thiscall -arch=win32 ?_Doraise@range_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ stub -arch=win64 ?_Doraise@range_error@std@@MEBAXXZ @ cdecl -arch=win64 ?_Doraise@range_error@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise
@ thiscall -arch=win32 ?_Doraise@runtime_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise @ thiscall -arch=win32 ?_Doraise@runtime_error@std@@MBEXXZ(ptr) MSVCP_exception__Doraise
@ cdecl -arch=win64 ?_Doraise@runtime_error@std@@MEBAXXZ(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=win32 ?_Doraise@underflow_error@std@@MBEXXZ
......
...@@ -311,6 +311,7 @@ typedef enum __exception_type { ...@@ -311,6 +311,7 @@ typedef enum __exception_type {
EXCEPTION_INVALID_ARGUMENT, EXCEPTION_INVALID_ARGUMENT,
EXCEPTION_RUNTIME_ERROR, EXCEPTION_RUNTIME_ERROR,
EXCEPTION_FAILURE, EXCEPTION_FAILURE,
EXCEPTION_RANGE_ERROR,
} exception_type; } exception_type;
void throw_exception(exception_type, const char *); void throw_exception(exception_type, const char *);
......
...@@ -59,6 +59,8 @@ extern const vtable_ptr MSVCP_runtime_error_vtable; ...@@ -59,6 +59,8 @@ extern const vtable_ptr MSVCP_runtime_error_vtable;
extern const vtable_ptr MSVCP_failure_vtable; extern const vtable_ptr MSVCP_failure_vtable;
/* ??_7bad_cast@std@@6B@ */ /* ??_7bad_cast@std@@6B@ */
extern const vtable_ptr MSVCP_bad_cast_vtable; extern const vtable_ptr MSVCP_bad_cast_vtable;
/* ??_7range_error@std@@6B@ */
extern const vtable_ptr MSVCP_range_error_vtable;
static void MSVCP_type_info_dtor(type_info * _this) static void MSVCP_type_info_dtor(type_info * _this)
{ {
...@@ -195,6 +197,8 @@ exception* __thiscall MSVCP_exception_assign(exception *this, const exception *a ...@@ -195,6 +197,8 @@ exception* __thiscall MSVCP_exception_assign(exception *this, const exception *a
/* ?_Doraise@runtime_error@std@@MEBAXXZ */ /* ?_Doraise@runtime_error@std@@MEBAXXZ */
/* ?_Doraise@bad_cast@std@@MBEXXZ */ /* ?_Doraise@bad_cast@std@@MBEXXZ */
/* ?_Doraise@bad_cast@std@@MEBAXXZ */ /* ?_Doraise@bad_cast@std@@MEBAXXZ */
/* ?_Doraise@range_error@std@@MBEXXZ */
/* ?_Doraise@range_error@std@@MEBAXXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_exception__Doraise, 4) DEFINE_THISCALL_WRAPPER(MSVCP_exception__Doraise, 4)
void __thiscall MSVCP_exception__Doraise(exception *this) void __thiscall MSVCP_exception__Doraise(exception *this)
{ {
...@@ -585,6 +589,8 @@ runtime_error* __thiscall MSVCP_runtime_error_ctor_bstr(runtime_error *this, con ...@@ -585,6 +589,8 @@ runtime_error* __thiscall MSVCP_runtime_error_ctor_bstr(runtime_error *this, con
/* ??1runtime_error@std@@UAE@XZ */ /* ??1runtime_error@std@@UAE@XZ */
/* ??1runtime_error@std@@UEAA@XZ */ /* ??1runtime_error@std@@UEAA@XZ */
/* ??1range_error@std@@UAE@XZ */
/* ??1range_error@std@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_dtor, 4) DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_dtor, 4)
void __thiscall MSVCP_runtime_error_dtor(runtime_error *this) void __thiscall MSVCP_runtime_error_dtor(runtime_error *this)
{ {
...@@ -766,6 +772,53 @@ bad_cast* __thiscall MSVCP_bad_cast_opequals(bad_cast *this, const bad_cast *rhs ...@@ -766,6 +772,53 @@ bad_cast* __thiscall MSVCP_bad_cast_opequals(bad_cast *this, const bad_cast *rhs
DEFINE_RTTI_DATA1(bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast@std@@") DEFINE_RTTI_DATA1(bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast@std@@")
DEFINE_CXX_DATA1(bad_cast, &exception_cxx_type_info, MSVCP_bad_cast_dtor) DEFINE_CXX_DATA1(bad_cast, &exception_cxx_type_info, MSVCP_bad_cast_dtor)
/* range_error class data */
typedef runtime_error range_error;
static range_error* MSVCP_range_error_ctor( range_error *this, exception_name name )
{
TRACE("%p %s\n", this, EXCEPTION_STR(name));
MSVCP_runtime_error_ctor(this, name);
this->e.vtable = &MSVCP_range_error_vtable;
return this;
}
/* ??0range_error@std@@QAE@ABV01@@Z */
/* ??0range_error@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_range_error_copy_ctor, 8)
range_error* __thiscall MSVCP_range_error_copy_ctor(
range_error *this, const range_error *rhs)
{
TRACE("%p %p\n", this, rhs);
MSVCP_runtime_error_copy_ctor(this, rhs);
this->e.vtable = &MSVCP_range_error_vtable;
return this;
}
/* ??0range_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
/* ??0range_error@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
#ifndef _MSVCIRT
DEFINE_THISCALL_WRAPPER(MSVCP_range_error_ctor_bstr, 8)
range_error* __thiscall MSVCP_range_error_ctor_bstr(range_error *this, const basic_string_char *str)
{
const char *name = MSVCP_basic_string_char_c_str(str);
TRACE("(%p %p %s)\n", this, str, name);
return MSVCP_range_error_ctor(this, EXCEPTION_NAME(name));
}
#endif
/* ??4range_error@std@@QAEAAV01@ABV01@@Z */
/* ??4range_error@std@@QEAAAEAV01@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_range_error_assign, 8)
range_error* __thiscall MSVCP_range_error_assign(range_error *this, const range_error *assign)
{
MSVCP_runtime_error_dtor(this);
return MSVCP_range_error_copy_ctor(this, assign);
}
DEFINE_RTTI_DATA2(range_error, 0, &runtime_error_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AVrange_error@std@@")
DEFINE_CXX_DATA2(range_error, &runtime_error_cxx_type_info, &exception_cxx_type_info, MSVCP_runtime_error_dtor)
/* ?_Nomemory@std@@YAXXZ */ /* ?_Nomemory@std@@YAXXZ */
void __cdecl _Nomemory(void) void __cdecl _Nomemory(void)
{ {
...@@ -856,6 +909,9 @@ void __asm_dummy_vtables(void) { ...@@ -856,6 +909,9 @@ void __asm_dummy_vtables(void) {
EXCEPTION_VTABLE(bad_cast, EXCEPTION_VTABLE(bad_cast,
VTABLE_ADD_FUNC(MSVCP_bad_cast_vector_dtor) VTABLE_ADD_FUNC(MSVCP_bad_cast_vector_dtor)
VTABLE_ADD_FUNC(MSVCP_exception_what)); VTABLE_ADD_FUNC(MSVCP_exception_what));
EXCEPTION_VTABLE(range_error,
VTABLE_ADD_FUNC(MSVCP_runtime_error_vector_dtor)
VTABLE_ADD_FUNC(MSVCP_exception_what));
#ifndef __GNUC__ #ifndef __GNUC__
} }
#endif #endif
...@@ -913,6 +969,11 @@ void throw_exception(exception_type et, const char *str) ...@@ -913,6 +969,11 @@ void throw_exception(exception_type et, const char *str)
MSVCP_failure_ctor(&e, name); MSVCP_failure_ctor(&e, name);
_CxxThrowException((exception*)&e, &failure_cxx_type); _CxxThrowException((exception*)&e, &failure_cxx_type);
} }
case EXCEPTION_RANGE_ERROR: {
range_error e;
MSVCP_range_error_ctor(&e, name);
_CxxThrowException((exception*)&e, &range_error_cxx_type);
}
} }
} }
...@@ -929,6 +990,7 @@ void init_exception(void *base) ...@@ -929,6 +990,7 @@ void init_exception(void *base)
init_runtime_error_rtti(base); init_runtime_error_rtti(base);
init_failure_rtti(base); init_failure_rtti(base);
init_bad_cast_rtti(base); init_bad_cast_rtti(base);
init_range_error_rtti(base);
init_exception_cxx(base); init_exception_cxx(base);
init_bad_alloc_cxx(base); init_bad_alloc_cxx(base);
...@@ -939,5 +1001,6 @@ void init_exception(void *base) ...@@ -939,5 +1001,6 @@ void init_exception(void *base)
init_runtime_error_cxx(base); init_runtime_error_cxx(base);
init_failure_cxx(base); init_failure_cxx(base);
init_bad_cast_cxx(base); init_bad_cast_cxx(base);
init_range_error_cxx(base);
#endif #endif
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment