eh_personality.cc (__gxx_personality_seh0): New function.

libstdc++-v3/
	* libsupc++/eh_personality.cc (__gxx_personality_seh0): New function.
	Adjust for SEH.
	* config/abi/pre/gnu.ver: Add __gxx_personality_seh0.

libobjc/
	* exception.c (__gnu_objc_personality_seh0): New function.

libjava/
	* libgcj.ver: Add __gcj_personality_seh0.
	* exception.cc (__gcj_personality_seh0): New function.
	Adjust for SEH.

libgcc/
	* unwind-seh.c: New file.
	* unwind-generic.h: Include windows.h for SEH.
	(_Unwind_Exception): Use 6 private fields for SEH.
	(_GCC_specific_handler): Declare.
	* unwind-c.c (__gcc_personality_seh0): New function.
	Adjust for SEH.
	* config/i386/libgcc-cygming.ver: New file.
	* config/i386/t-seh-eh: New file.
	* config.host (x86_64-*-mingw*): Default to seh.

gcc/
	* opts.c (finish_options): Handle UI_SEH.
	* expr.c (build_personality_function): Handle UI_SEH.
	* dwarf2out.c (dwarf2out_begin_prologue): Handle UI_SEH.
	* coretypes.h (unwind_info_type): Add UI_SEH.
	* config/i386/winnt.c (i386_pe_seh_emit_except_personality):
	New function.
	(i386_pe_seh_init_sections): Likewise.
	* config/i386/cygming.h (TARGET_ASM_EMIT_EXCEPT_PERSONALITY): Define.
	(TARGET_ASM_INIT_SECTIONS): Define.
	* common/config/i386/i386-common.c (TARGET_EXCEPT_UNWIND_INFO): Define.
	(i386_except_unwind_info): New function.


Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r189644
This commit is contained in:
Tristan Gingold
2012-07-19 07:29:24 +00:00
committed by Tristan Gingold
parent fa4a66d152
commit bf1431e359
25 changed files with 729 additions and 10 deletions

View File

@@ -1,3 +1,10 @@
2012-07-19 Tristan Gingold <gingold@adacore.com>
Richard Henderson <rth@redhat.com>
* libgcj.ver: Add __gcj_personality_seh0.
* exception.cc (__gcj_personality_seh0): New function.
Adjust for SEH.
2012-07-18 H.J. Lu <hongjiu.lu@intel.com>
PR libjava/53973

View File

@@ -197,6 +197,8 @@ get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i)
#ifdef SJLJ_EXCEPTIONS
#define PERSONALITY_FUNCTION __gcj_personality_sj0
#define __builtin_eh_return_data_regno(x) x
#elif defined (__SEH__)
#define PERSONALITY_FUNCTION __gcj_personality_imp
#else
#define PERSONALITY_FUNCTION __gcj_personality_v0
#endif
@@ -220,7 +222,12 @@ PERSONALITY_FUNCTION (_Unwind_State state,
#define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
extern "C" _Unwind_Reason_Code
#ifdef __SEH__
static
#else
extern "C"
#endif
_Unwind_Reason_Code
PERSONALITY_FUNCTION (int version,
_Unwind_Action actions,
_Unwind_Exception_Class exception_class,
@@ -484,3 +491,14 @@ PERSONALITY_FUNCTION (int version,
#endif
return _URC_INSTALL_CONTEXT;
}
#ifdef __SEH__
extern "C"
EXCEPTION_DISPOSITION
__gcj_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame,
PCONTEXT ms_orig_context, PDISPATCHER_CONTEXT ms_disp)
{
return _GCC_specific_handler (ms_exc, this_frame, ms_orig_context,
ms_disp, __gcj_personality_imp);
}
#endif /* SEH */

View File

@@ -7,6 +7,7 @@
_Jv_*;
__gcj_personality_v0;
__gcj_personality_sj0;
__gcj_personality_seh0;
_Z*;
local:
*;