summaryrefslogtreecommitdiff
path: root/gcc/unwind-c.c
Commit message (Collapse)AuthorAgeFilesLines
* 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>krebbel2007-01-241-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t. * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program, uw_frame_state_for, uw_update_context_1): Likewise. * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise. * unwind-pe.h (read_uleb128, read_sleb128, read_encoded_value_with_base): Likewise. * unwind-generic.h: Define _sleb128_t and _uleb128_t types. 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com> * libsupc++/eh_personality.cc (parse_lsda_header, check_exception_spec, get_ttype_entry, empty_exception_spec, PERSONALITY_FUNCTION): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t. 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com> * exception.cc (parse_lsda_header, PERSONALITY_FUNCTION): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121116 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/27880sje2006-10-091-0/+4
| | | | | | | | | | * unwind-c.c (PERSONALITY_FUNCTION): Ifdef use of _Unwind_GetIPInfo. * configure.ac (HAVE_GETIPINFO): Check for _Unwind_GetIPInfo. * configure: Regenerate. * config.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117576 138bc75d-0d04-0410-961f-82ee72b054a4
* PR other/26208jakub2006-02-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * unwind-dw2.c (struct _Unwind_Context): Add signal_frame field. (extract_cie_info): Handle S flag in augmentation string. (execute_cfa_program): If context->signal_frame, execute also fs->pc == context->ra instructions. (uw_frame_state_for): If context->signal_frame, don't subtract one from context->ra to find FDE. (uw_update_context_1): Set context->signal_frame to fs->signal_frame. (_Unwind_GetIPInfo): New function. * unwind-dw2.h (_Unwind_FrameState): Add signal_frame field. * unwind-c.c (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. * unwind-sjlj.c (_Unwind_GetIPInfo): New function. * unwind-generic.h (_Unwind_GetIPInfo): New prototype. * unwind-compat.c (_Unwind_GetIPInfo): New function. * libgcc-std.ver (_Unwind_GetIPInfo): Export @@GCC_4.2.0. * config/ia64/unwind-ia64.c (_Unwind_GetIPInfo): New function. * config/arm/unwind-arm.h (_Unwind_GetIPInfo): Define. * config/i386/linux-unwind.h (x86_fallback_frame_state, x86_64_fallback_frame_state): Set fs->signal_frame. * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Likewise. (MD_FROB_UPDATE_CONTEXT): Define unconditionally. (frob_update_context): Likewise. Workaround missing S flag in Linux 2.6.12 - 2.6.16 kernel vDSOs. * config/s390/linux-unwind.h (s390_fallback_frame_state): Likewise. Remove the psw_addr + 1 hack. libjava/ * exception.cc (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. * include/i386-signal.h (MAKE_THROW_FRAME): Change into empty macro. (HANDLE_DIVIDE_OVERFLOW): Don't adjust _res->eip if falling through to throw. * include/x86_64-signal.h (MAKE_THROW_FRAME): Change into empty macro. * include/powerpc-signal.h (MAKE_THROW_FRAME): Change into empty macro. libstdc++-v3/ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111488 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/drow2005-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/arm/unwind-arm.c (abort): Add prototype here. (UCB_FORCED_STOP_ARG): Correct typo in macro argument. (struct phase1_vrs): Add prev_sp. (unwind_phase2_forced): Save the original core registers instead of modifying entry_vrs. Take a new flag argument for resuming unwinding and set action flags accordingly. Always set _US_END_OF_STACK when get_eit_entry fails. Unwind before calling the stop function. (_Unwind_GetCFA): New function. (__gnu_Unwind_ForcedUnwind): Update call to unwind_phase2_forced. (__gnu_Unwind_Resume_or_Rethrow): Likewise. (__gnu_Unwind_Resume): Do not unwind here for forced unwinding; just call unwind_phase2_forced. (_Unwind_GetDataRelBase, _Unwind_GetTextRelBase): Move to here. * config/arm/unwind-arm.h (abort): Remove prototype. (_Unwind_GetDataRelBase, _Unwind_GetTextRelBase): Change to prototypes. (_Unwind_GetCFA): New prototype. * config/arm/pr-support.c (abort): Add prototype here. * unwind-c.c (PERSONALITY_FUNCTION) [__ARM_EABI_UNWINDER__]: Handle forced unwinding. * config/arm/arm.c (arm_expand_prologue, thumb_expand_prologue): Do not schedule the prologue with non-call exceptions and EABI. gcc/testsuite/ * gcc.dg/cleanup-5.c, gcc.dg/cleanup-8.c, gcc.dg/cleanup-9.c, gcc.dg/cleanup-10.c, gcc.dg/cleanup-11.c: Update for ARM EABI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107091 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-06-28 Paul Brook <paul@codesourcery.com>pbrook2005-06-281-5/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * Makefile.in: Set and use UNWIND_H. Install as unwind.h. * c-decl.c (finish_decl): Call default_init_unwind_resume_libfunc. * except.c (add_ehspec_entry): Generate arm eabi filter lists. (assign_filter_values): Ditto. (output_ttype): New function. (output_function_exception_table): Use output_ttype. Generate arm eabi filter lists. (default_init_unwind_resume_libfunc): New function. * except.h (default_init_unwind_resume_libfunc): Add prototype. * optabs.c (init_optabs): Don't set unwind_resume_libfunc. * opts.c (decode_options): Use targetm.unwind_tables_default. * target-def.h (TARGET_ASM_TTYPE): Provide and use definition. (TARGET_ARM_EABI_UNWINDER, TARGET_UNWIND_TABLES_DEFAULT): Ditto. * target.h (struct gcc_target): Add asm.ttype, unwind_tables_default and arm_eabi_unwinder. * unwind-c.c: Support Arm EABI unwinder. * unwind.h: Rename ... * unwind-generic.h: ... To this. * doc/tm.texi (TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER): Document. (TARGET_UNWID_TABLES_DEFAULT): Document. * config/arm/arm-protos.h (arm_output_fn_unwind): Add prototype. * config/arm/arm.c (arm_unwind_emit, arm_output_ttype): New functions. (TARGET_UNWIND_EMIT, TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER): Define. (thumb_pushpop, thumb_output_function_prologue): Output unwinding directives. (arm_unwind_emit_stm, arm_unwind_emit_set): New functions. * config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS): Only define when !TARGET_UNWIND_INFO. (ARM_OUTPUT_FN_UNWIND, ARM_EABI_UNWIND_TABLES): Define. * config/arm/bpabi.h (TARGET_UNWIND_INFO): Define. * config/arm/elf.h (ASM_DECLARE_FUNCTION_NAME, ASM_DECLARE_FUNCTION_SIZE): Use ARM_OUTPUT_FN_UNWIND. * config/arm/lib1funcs.asm: Include libunwind.S. * config/arm/libgcc-bpabi.ver: Add unwinding routines. * config/arm/libunwind.S: New file. * config/arm/pr-support.c: New file. * config/arm/t-bpabi (LIB1ASMFUNCS): Add _unwind. (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set. * config/arm/t-symbian (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set. * config/arm/unwind-arm.c: New file. * config/arm/unwind-arm.h: New file. * config/i386/t-netware (USER_H): Remove unwind.h. * config/ia64/ia64.h (TARGET_UNWIND_TABLES_DEFAULT): Define. gcc/cp/ * Make-lang.in (cp/except.o): Depend on $(TARGET_H) * except.c: Include target.h. (init_exception_processing): Initialize unwind_resume_libfunc. * doc/tm.texi: Document TARGET_ASM_TTYPE gcc/ada/ * misc.c (gnat_init_gcc_eh): Call default_init_unwind_resume_libfunc. gcc/java/ * decl.c (java_init_decl_processing): Call default_init_unwind_resume_libfunc. gcc/objc/ * objc-act.c (objc_init_exceptions): Call default_init_unwind_resume_libfunc. libstdc++/ * acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Check for __cxa_end_cleanup. * libsupc++/Makefile.am (sources): Add eh_call.c and eh_arm.c. * libsupc++/eh_arm.cc: New file. * libsupc++/eh_call.cc: New file. * libsupc++/eh_catch.cc (__cxa_get_exception_ptr): Use __gxx_caught_object. (__cxa_begin_catch): Ditto. Use __is_gxx_exception_class. Call _Unwind_Complete when using the ARM EABI. (__cxa_end_catch): Use __is_gxx_exception_class. * libsupc++/eh_personality.cc: Define NO_SIZE_OF_ENCODED_VALUE when using the ARM EABI. (save_caught_exception, restore_caught_exception): New functions. (_throw_typet): New typedef. (get_ttype_entry, get_adjusted_ptr, check_exception_spec): Add ARM EABI implementations. (PERSONALITY_FUNCTION): Use new functions. Addd support for ARM EABI unwinding libary. (__cxa_unexpected): Disable when using the ARM EABI. * libsupc++/eh_throw.cc (__cxa_throw): Use __GXX_INIT_EXCEPTION_CLASS. (__cxa_rethrow): Use __is_gxx_exception_class. Call _Unwind_RaiseException when using the ARM EABI. * libsupc++/unwind-cxx.h (struct __cxa_exception): Add fields for ARM EABI semantics. (struct __cxa_eh_globals): Ditto. (__cxa_call_terminate): Add prototype. (__cxa_type_match, __cxa_begin_cleanup, __cxa_end_cleanup): Add prototypes. (__get_exception_header_from_obj, __get_exception_header_from_ue): Move earlier in file. (__is_gxx_exception_class, __GXX_INIT_EXCEPTION_CLASS, __gxx_caught_object): New functions. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * libmath/Makefile.in: Regenerate. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * src/Makefie.in: Regenerate. * testsuite/makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101385 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF address.kcook2005-06-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101317 138bc75d-0d04-0410-961f-82ee72b054a4
* * unwind-c.c: Add libgcc-style exception.drow2003-08-191-0/+9
| | | | | | | | | | * unwind-dw2.c: Likewise. * unwind-pe.h: Likewise. * unwind-sjlj.c: Likewise. * unwind.inc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70576 138bc75d-0d04-0410-961f-82ee72b054a4
* Patch from Gunther Nikl.wilson2003-06-281-1/+0
| | | | | | | * unwind-c.c (PERSONALITY_FUNCTION): Delete duplicate define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68616 138bc75d-0d04-0410-961f-82ee72b054a4
* * unwind-c.c: Define NO_SIZE_OF_ENCODED_VALUE.kraai2003-06-141-0/+1
| | | | | | | | * unwind-pe.h (size_of_encoded_value): Do not define if NO_SIZE_OF_ENCODED_VALUE is defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67930 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c (handle_cleanup_attribute): New.rth2003-06-041-0/+186
(c_common_attributes): Add it. * c-decl.c (finish_decl): Honor the cleanup attribute. * doc/extend.texi (Variable Attributes): Document it. * unwind-c.c: New file. * Makefile.in (LIB2ADDEH): Add it. * config/t-darwin, config/t-linux, config/t-linux-gnulibc1, config/ia64/t-ia64: Likewise. * gcc.dg/cleanup-1.c: New. * gcc.dg/cleanup-2.c: New. * gcc.dg/cleanup-3.c: New. * gcc.dg/cleanup-4.c: New. * gcc.dg/cleanup-5.c: New. * gcc.dg/cleanup-6.c: New. * gcc.dg/cleanup-7.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67449 138bc75d-0d04-0410-961f-82ee72b054a4