Skip to content
Snippets Groups Projects
  1. Jan 16, 2023
  2. Jan 03, 2022
  3. Sep 01, 2021
    • Sebastian Huber's avatar
      Fix arm target build with inhibit_libc · 7a6f40d0
      Sebastian Huber authored
      Do not declare abort in "libgcc/unwind-arm-common.inc" since it is already
      provided by "tsystem.h".  It fixes the following build error:
      
      In file included from libgcc/config/arm/unwind-arm.c:144:
      libgcc/unwind-arm-common.inc:55:24: error: macro "abort" passed 1 arguments, but takes just 0
         55 | extern void abort (void);
      
      libgcc/
      
      	* unwind-arm-common.inc (abort): Remove.
      7a6f40d0
  4. Jan 04, 2021
  5. Feb 10, 2020
    • Christophe Lyon's avatar
      arm: Fix up arm installed unwind.h for use in pedantic modes [PR93615] · 5602b48b
      Christophe Lyon authored
      Commit r10-6500-g811a475ea3fcc55ee4aea7c81171891ef19dfc25 broke the
      GCC build for arm-none-uclinuxfdpiceabi, as it forgot to update some
      uses of gnu_Unwind_Find_got.
      
      2020-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	libgcc/
      	PR target/93615
      	* unwind-arm-common.inc: Replace uses of gnu_Unwind_Find_got with
      	_Unwind_gnu_Find_got.
      	* unwind-pe.h: Likewise.
      5602b48b
  6. Jan 01, 2020
  7. Sep 10, 2019
    • Christophe Lyon's avatar
      [ARM/FDPIC v6 11/24] [ARM] FDPIC: Add support to unwind FDPIC signal frame · ae1152e5
      Christophe Lyon authored
      
      2019-09-10  Christophe Lyon  <christophe.lyon@st.com>
      	Mickaël Guêné <mickael.guene@st.com>
      
      	libgcc/
      	* unwind-arm-common.inc (ARM_SET_R7_RT_SIGRETURN)
      	(THUMB2_SET_R7_RT_SIGRETURN, FDPIC_LDR_R12_WITH_FUNCDESC)
      	(FDPIC_LDR_R9_WITH_GOT, FDPIC_LDR_PC_WITH_RESTORER)
      	(FDPIC_FUNCDESC_OFFSET, ARM_NEW_RT_SIGFRAME_UCONTEXT)
      	(ARM_UCONTEXT_SIGCONTEXT, ARM_SIGCONTEXT_R0, FDPIC_T2_LDR_R12_WITH_FUNCDESC)
      	(FDPIC_T2_LDR_R9_WITH_GOT, FDPIC_T2_LDR_PC_WITH_RESTORER): New.
      	(__gnu_personality_sigframe_fdpic): New.
      	(get_eit_entry): Add FDPIC signal frame support.
      
      
      Co-Authored-By: default avatarMickaël Guêné <mickael.guene@st.com>
      
      From-SVN: r275573
      ae1152e5
    • Christophe Lyon's avatar
      [ARM/FDPIC v6 06/24] [ARM] FDPIC: Add support for c++ exceptions · 5d727a4b
      Christophe Lyon authored
      
      The main difference with existing support is that function addresses
      are function descriptor addresses instead. This means that all code
      dealing with function pointers now has to cope with function
      descriptors instead.
      
      For the same reason, Linux kernel helpers can no longer be called by
      dereferencing their address, so we implement wrappers that directly
      call the kernel helpers.
      
      When restoring a function address, we also have to restore the FDPIC
      register value (r9).
      
      2019-09-10  Christophe Lyon  <christophe.lyon@st.com>
      	Mickaël Guêné <mickael.guene@st.com>
      
      	gcc/
      	* ginclude/unwind-arm-common.h (unwinder_cache): Add reserved5
      	field.
      
      	libgcc/
      	* config/arm/linux-atomic.c (__kernel_cmpxchg): Add FDPIC support.
      	(__kernel_dmb): Likewise.
      	(__fdpic_cmpxchg): New function.
      	(__fdpic_dmb): New function.
      	* config/arm/unwind-arm.h (FDPIC_REGNUM): New define.
      	(gnu_Unwind_Find_got): New function.
      	(_Unwind_decode_typeinfo_ptr): Add FDPIC support.
      	* unwind-arm-common.inc (UCB_PR_GOT): New.
      	(funcdesc_t): New struct.
      	(get_eit_entry): Add FDPIC support.
      	(unwind_phase2): Likewise.
      	(unwind_phase2_forced): Likewise.
      	(__gnu_Unwind_RaiseException): Likewise.
      	(__gnu_Unwind_Resume): Likewise.
      	(__gnu_Unwind_Backtrace): Likewise.
      	* unwind-pe.h (read_encoded_value_with_base): Likewise.
      
      	libstdc++/
      	* libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
      	support.
      
      
      Co-Authored-By: default avatarMickaël Guêné <mickael.guene@st.com>
      
      From-SVN: r275568
      5d727a4b
  8. Jan 01, 2019
  9. Jan 03, 2018
  10. Jan 01, 2017
  11. Jan 04, 2016
  12. Jan 05, 2015
  13. Jan 02, 2014
  14. Feb 04, 2013
  15. Dec 20, 2011
    • Sergio Durigan Junior's avatar
      unwind-arm-common.inc: Include `tconfig.h', `tsystem.h' and `sys/sdt.h'. · 69048898
      Sergio Durigan Junior authored
      2011-12-20  Sergio Durigan Junior  <sergiodj@redhat.com>
      
      	* unwind-arm-common.inc: Include `tconfig.h', `tsystem.h' and
      	`sys/sdt.h'.
      	(_Unwind_DebugHook): New function.
      	(uw_restore_core_regs): New define.
      	(unwind_phase2): Use uw_restore_core_regs instead of
      	restore_core_regs.
      	(unwind_phase2_forced): Likewise.
      	(__gnu_Unwind_Resume): Likewise.
      
      From-SVN: r182552
      69048898
  16. Oct 21, 2011
  17. Sep 13, 2011
    • Paul Brook's avatar
      arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. · 1e874273
      Paul Brook authored
      2011-09-13  Paul Brook  <paul@codesourcery.com>
       
      	gcc/
      	* config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
      	(ARM_TARGET2_DWARF_FORMAT): Provide default definition.
      	* config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
      	* config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
      	* config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
      	* config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
      	* config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
      	* config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
      	enabling unwind tables.
      	(c6x_debug_unwind_info): New function.
      	(TARGET_ARM_EABI_UNWINDER): Define.
      	(TARGET_DEBUG_UNWIND_INFO): Define.
      	* config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
      	(TARGET_EXTRA_CFI_SECTION): Remove.
      	* config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
      	* ginclude/unwind-arm-common.h: New file.
      
      	libgcc/
      	* config.host (tic6x-*-*): Add c6x/t-c6x-elf.  Set unwind_header.
      	* unwind-c.c (PERSONALITY_FUNCTION): Use UNWIND_POINTER_REG.
      	* unwind-arm-common.inc: New file.
      	* config/arm/unwind-arm.c: Use unwind-arm-common.inc.
      	* config/arm/unwind-arm.h: Use unwind-arm-common.h.
      	(_GLIBCXX_OVERRIDE_TTYPE_ENCODING): Define.
      	* config/c6x/libunwind.S: New file.
      	* config/c6x/pr-support.c: New file.
      	* config/c6x/unwind-c6x.c: New file.
      	* config/c6x/unwind-c6x.h: New file.
      	* config/c6x/t-c6x-elf: New file.
      
      
      	libstdc++-v3/
      	* libsupc++/eh_arm.cc (__cxa_end_cleanup): Add C6X implementation.
      	* libsupc++/eh_call.cc (__cxa_call_unexpected): Set rtti_base.
      	* libsupc++/eh_personality.cc (NO_SIZE_OF_ENCODED_VALUE): Remove
      	__ARM_EABI_UNWINDER__ check.
      	(parse_lsda_header): Check _GLIBCXX_OVERRIDE_TTYPE_ENCODING.
      	(get_ttype_entry): Use generic implementation on ARM EABI.
      	(check_exception_spec): Use _Unwind_decode_typeinfo_ptr and
      	UNWIND_STACK_REG.
      	(PERSONALITY_FUNCTION): Set ttype_base.
      
      From-SVN: r178808
      1e874273
  18. Aug 05, 2011
    • Rainer Orth's avatar
      Makefile.in (UNWIND_H): Remove. · 201cdb74
      Rainer Orth authored
      	gcc:
      	* Makefile.in (UNWIND_H): Remove.
      	(LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED): Move to
      	../libgcc/Makefile.in.
      	(LIBUNWIND, SHLIBUNWIND_LINK, SHLIBUNWIND_INSTALL): Likewise.
      	(LIBUNWINDDEP): Remove.
      	(libgcc-support): Remove LIB2ADDEH, $(srcdir)/emutls.c dependencies.
      	(libgcc.mvars): Remove LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED,
      	LIBUNWIND, SHLIBUNWIND_LINK, SHLIBUNWIND_INSTALL.
      	(stmp-int-hdrs): Remove $(UNWIND_H) dependency.
      	Don't copy $(UNWIND_H).
      	* config.gcc (ia64*-*-linux*): Remove with_system_libunwind
      	handling.
      	* configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Remove.
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      	* emutls.c, unwind-c.c, unwind-compat.c, unwind-compat.h,
      	unwind-dw2-fde-compat.c, unwind-dw2-fde-glibc.c, unwind-dw2-fde.c,
      	unwind-dw2-fde.h, unwind-dw2.c, unwind-dw2.h, unwind-generic.h,
      	unwind-pe.h, unwind-sjlj.c, unwind.inc: Move to ../libgcc.
      	* unwind-dw2-fde-darwin.c: Move to ../libgcc/config.
      	* config/arm/libunwind.S, config/arm/pr-support.c,
      	config/arm/unwind-arm.c, config/arm/unwind-arm.h: Move to
      	../libgcc/config/arm.
      	* config/arm/t-bpabi (UNWIND_H, LIB2ADDEH): Remove.
      	* config/arm/t-symbian (UNWIND_H, LIB2ADDEH): Remove.
      	* config/frv/t-frv ($(T)frvbegin$(objext)): Use
      	$(srcdir)/../libgcc to refer to unwind-dw2-fde.h.
      	($(T)frvend$(objext)): Likewise.
      	* config/ia64/t-glibc (LIB2ADDEH): Remove.
      	* config/ia64/t-glibc-libunwind: Move to ../libgcc/config/ia64.
      	* config/ia64/fde-glibc.c, config/ia64/fde-vms.c,
      	config/ia64/unwind-ia64.c, config/ia64/unwind-ia64.h: Move to
      	../libgcc/config/ia64.
      	* config/ia64/t-hpux (LIB2ADDEH): Remove.
      	* config/ia64/t-ia64 (LIB2ADDEH): Remove.
      	* config/ia64/t-vms (LIB2ADDEH): Remove.
      	* config/ia64/vms.h (UNW_IVMS_MODE,
      	MD_UNW_COMPATIBLE_PERSONALITY_P): Remove.
      	* config/picochip/t-picochip (LIB2ADDEH): Remove.
      	* config/rs6000/aix.h (R_LR, MD_FROB_UPDATE_CONTEXT): Remove.
      	* config/rs6000/t-darwin (LIB2ADDEH): Remove.
      	* config/rs6000/darwin-fallback.c: Move to ../libgcc/config/rs6000.
      	* config/sh/t-sh ($(T)unwind-dw2-Os-4-200.o): Use
      	$(srcdir)/../libgcc to refer to unwinder sources.
      	* config/spu/t-spu-elf (LIB2ADDEH): Remove.
      	* config/t-darwin (LIB2ADDEH): Remove.
      	* config/t-freebsd (LIB2ADDEH): Remove.
      	* config/t-libunwind (LIB2ADDEH, LIB2ADDEHSTATIC): Remove.
      	* config/t-libunwind-elf: Move to ../libgcc/config.
      	* config/t-linux (LIB2ADDEH): Remove.
      	* config/t-sol2 (LIB2ADDEH): Remove.
      	* config/xtensa/t-xtensa (LIB2ADDEH): Remove.
      	* system.h (MD_FROB_UPDATE_CONTEXT): Poison.
      
      	gcc/po:
      	* EXCLUDES (unwind-c.c, unwind-dw2-fde-darwin.c)
      	(unwind-dw2-fde-glibc.c, unwind-dw2-fde.c, unwind-dw2-fde.h)
      	(unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h): Remove.
      
      	libgcc:
      	* Makefile.in (LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED): New
      	variables.
      	(LIBUNWIND, SHLIBUNWIND_LINK, SHLIBUNWIND_INSTALL): New variables.
      	(LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED): Add $(srcdir)/emutls.c.
      	(install-unwind_h): New target.
      	(all): Depend on it.
      	* config.host (unwind_header): New variable.
      	(*-*-freebsd*): Set tmake_file to t-eh-dw2-dip.
      	(*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu,
      	*-*-gnu*): Likewise, also for *-*-kopensolaris*-gnu.
      	(*-*-solaris2*): Add t-eh-dw2-dip to tmake_file.
      	(arm*-*-linux*): Add arm/t-bpabi for arm*-*-linux-*eabi.
      	Set unwind_header.
      	(arm*-*-uclinux*): Add arm/t-bpabi for arm*-*-uclinux*eabi.
      	Set unwind_header.
      	(arm*-*-eabi*, arm*-*-symbianelf*): Add arm/t-bpabi for
      	arm*-*-eabi*.
      	Add arm/t-symbian to tmake_file for arm*-*-symbianelf*.
      	Set unwind_header.
      	(ia64*-*-elf*): Add ia64/t-eh-ia64 to tmake_file.
      	(ia64*-*-freebsd*): Likewise.
      	(ia64*-*-linux*): Add ia64/t-glibc, ia64/t-eh-ia64, t-libunwind to
      	tmake_file.
      	Add t-libunwind-elf, ia64/t-glibc-libunwind unless
      	$with_system_libunwind.
      	(ia64*-*-hpux*): Set tmake_file.
      	(ia64-hp-*vms*): Add ia64/t-eh-ia64 to tmake_file.
      	(picochip-*-*): Set tmake_file.
      	(rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Set
      	md_unwind_header.
      	(rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*): Likewise.
      	(rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
      	(s390x-ibm-tpf*): Add t-eh-dw2-dip to tmake_file.
      	(xtensa*-*-elf*): Set tmake_file.
      	(xtensa*-*-linux*): Likewise.
      	* configure.ac: Include ../config/unwind_ipinfo.m4.
      	Call GCC_CHECK_UNWIND_GETIPINFO.
      	Link unwind.h to $unwind_header.
      	* configure: Regenerate.
      	* emutls.c, unwind-c.c, unwind-compat.c, unwind-compat.h,
      	unwind-dw2-fde-compat.c, unwind-dw2-fde-dip.c, unwind-dw2-fde.c,
      	unwind-dw2-fde.h, unwind-dw2.c, unwind-dw2.h, unwind-generic.h,
      	unwind-pe.h, unwind-sjlj.c, unwind.inc: New files.
      	* config/unwind-dw2-fde-darwin.c: New file.
      	* config/arm/libunwind.S, config/arm/pr-support.c,
      	config/arm/t-bpabi, config/arm/t-symbian, config/arm/unwind-arm.c,
      	config/arm/unwind-arm.h,: New files.
      	* config/ia64/fde-glibc.c, config/ia64/fde-vms.c,
      	config/ia64/t-eh-ia64, config/ia64/t-glibc,
      	config/ia64/t-glibc-libunwind, config/ia64/t-hpux,
      	config/ia64/t-vms, config/ia64/unwind-ia64.c,
      	config/ia64/unwind-ia64.h: New files.
      	* config/picochip/t-picochip: New file.
      	* config/rs6000/aix-unwind.h, config/rs6000/darwin-fallback.c: New
      	files.
      	* config/rs6000/t-darwin (LIB2ADDEH): Set.
      	* config/s390/t-tpf (LIB2ADDEH): Remove.
      	* config/t-darwin (LIB2ADDEH): Set.
      	* config/t-eh-dw2-dip: New file.
      	* config/t-libunwind, config/t-libunwind-elf: New files.
      	* config/t-sol2 (LIB2ADDEH): Remove.
      	* config/xtensa/t-xtensa: New file.
      
      	gcc/ada:
      	* gcc-interface/Makefile.in (raise-gcc.o): Search
      	$(srcdir)/../libgcc.
      
      	libgo:
      	* Makefile.am (AM_CFLAGS): Search $(srcdir)/../libgcc.
      	* Makefile.in: Regenerate.
      
      	libjava:
      	* configure.ac (GCC_UNWIND_INCLUDE): Rename to
      	LIBGCC_UNWIND_INCLUDE.
      	Point to $(multi_basedir)/./libjava/../libgcc.
      	* configure: Regenerate.
      	* Makefile.am (GCC_UNWIND_INCLUDE): Reflect this.
      	* Makefile.in: Regenerate.
      
      	libobjc:
      	* Makefile.in (INCLUDES): Search
      	$(srcdir)/$(MULTISRCTOP)../libgcc.
      
      	libstdc++-v3:
      	* acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Point TOPLEVEL_INCLUDES
      	to $(toplevel_srcdir)/libgcc.
      	* configure: Regenerate.
      
      From-SVN: r177447
      201cdb74
  19. Jun 29, 2011
    • Nathan Sidwell's avatar
      unwind-arm.c (enum __cxa_type_match_result): New. · 3a86cfeb
      Nathan Sidwell authored
      	gcc/
      	* config/arm/unwind-arm.c (enum __cxa_type_match_result): New.
      	(cxa_type_match): Correct declaration.
      	(__gnu_unwind_pr_common): Reconstruct
      	additional indirection when __cxa_type_match returns
      	succeeded_with_ptr_to_base.
      
      	libstdc++/
      	* libsupc++/eh_arm.c (__cxa_type_match): Construct address of
      	thrown object here.  Return succeded_with_ptr_to_base for all
      	pointer cases.
      
      From-SVN: r175641
      3a86cfeb
  20. Mar 21, 2011
  21. Oct 30, 2009
  22. Apr 09, 2009
  23. Sep 04, 2007
    • Andrew Haley's avatar
      libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New. · 6f4176b0
      Andrew Haley authored
      2007-08-08  Andrew Haley  <aph@redhat.com>
      
              * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
              * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
              * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
      
      From-SVN: r128087
      6f4176b0
  24. Mar 07, 2007
    • Joseph Myers's avatar
      libunwind.S: Add .arch/.object_arch for armv4 builds. · a566d050
      Joseph Myers authored
      gcc:
      2007-03-07  Paul Brook  <paul@codesourcery.com>
      
      	* config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
      
      gcc:
      2007-03-07  Joseph Myers  <joseph@codesourcery.com>
      
      	* config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
      	New.
      	(phase1_vrs): Use them.
      	(DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
      	(__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
      	__gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
      	(restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
      	__gnu_Unwind_Restore_WMMXC if required.
      	(_Unwind_VRS_Pop): Implement iWMMXt support.
      	* config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
      	gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
      	gnu_Unwind_Save_WMMXC): Define.
      
      gcc/testsuite:
      2007-03-07  Joseph Myers  <joseph@codesourcery.com>
      
      	* g++.dg/eh/arm-iwmmxt-unwind.C: New test.
      
      From-SVN: r122658
      a566d050
  25. Dec 13, 2006
    • Mark Shinwell's avatar
      arm.c (arm_output_fldmx): Output FLDMD instead of FLDMX. · 8edfc4cc
      Mark Shinwell authored
              gcc/
              * config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
              FLDMX.  Rename function to...
              (vfp_output_fldmd): ...this.
              (vfp_output_fstmx): Output FSTMD instead of FSTMX.  Rename
              function to...
              (vfp_output_fstmd): ...this.
              (vfp_emit_fstmx): Don't leave space in the frame layout for the
              FSTMX format word.  Rename function to...
              (vfp_emit_fstmd): ...this.
              (arm_get_vfp_saved_size): Don't add in space for the FSTMX format
              word.
              (arm_output_epilogue): Adjust comment to reflect use of FSTMD.
              (arm_unwind_emit_sequence): Don't compensate for the FSTMX format
              word.  Also emit "vsave" assembler directives in such cases rather
              than "save".
              * config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
              gnu_Unwind_Save_VFP): Adjust comments.
              (gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
              for saving and restoring using FSTMD and FLDMD rather than
              FSTMX and FLDMX.
              (gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
              New functions for saving and restoring the VFPv3 registers 16 .. 31.
              * config/arm/pr-support.c (gnu_unwind_execute): Add conditional
              compilation case to correctly handle unwind opcode 0xc8 when using
              VFP.
              * config/arm/unwind-arm.c (struct vfpv3_regs): New.
              (DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
              (__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
              __gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
              Declare.
              (restore_non_core_regs): Restore registers using FLDMD rather than
              FLDMX if required.  Also handle restoration of VFPv3 registers.
              (_Unwind_VRS_Pop): Handle saving and restoring of registers using
              FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
              including cases where the caller specifies a range of registers
              that overlaps the d15/d16 boundary.
      
      From-SVN: r119838
      8edfc4cc
  26. Dec 04, 2006
  27. Nov 15, 2006
  28. Sep 20, 2006
  29. Nov 16, 2005
    • Daniel Jacobowitz's avatar
      unwind-arm.c (abort): Add prototype here. · 74d9c39f
      Daniel Jacobowitz authored
      gcc/
      	* 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.
      
      From-SVN: r107091
      74d9c39f
    • Nathan Sidwell's avatar
      unwind-arm.h: Reorder interface function declarations. · 1dcca6f3
      Nathan Sidwell authored
      2005-11-16  Nathan Sidwell  <nathan@codesourcery.com>
      gcc/
      	* config/arm/unwind-arm.h: Reorder interface function declarations.
      	(_URC_END_OF_STACK): New enumeration value.
      	(_US_UNWIND_ACTION_MASK, _US_FORCE_UNWIND, _US_END_OF_STACK): Likewise.
      	(struct _Unwind_Control_Block): Document reserved field use.
      	(_Unwind_Stop_Fn): New typedef.
      	(_Unwind_ForcedUnwind): Declare.
      	(_Unwind_Resume_or_Rethrow): Declare.
      	* config/arm/libunwind.S (UNWIND_WRAPER): Add nargs
      	argument.  Adjust.
      	(_Unwind_Resume_or_Rethrow, _Unwind_ForcedUnwind): New.
      	* config/arm/unwind-arm.c (UCB_FORCED_STOP_FN)
      	(UCB_FORCED_STOP_ARG): New.
      	(search_EIT_table): Update boundary condition checks.
      	(get_eit_entry): Return _URC_END_OF_STACK when cannot unwind.
      	(unwind_phase2): Replace for with do..while.
      	(unwind_phase2_forced): New.
      	(__gnu_Unwind_RaiseException): Replace for with do..while.
      	(__gnu_Unwind_ForcedUnwind): New.
      	(__gnu_Unwind_Resume): Set FORCE_UNWIND flag, if forced unwinding.
      	Use appropriate phase2 unwinder.
      	(__gnu_Unwind_Resume_or_Rethrow): New.
      	(__gnu_unwind_pr_common): Cope with forced unwinding.
      gcc/testsuite/
      	* g++.dg/eh/forced1.C: Adjust to cope with ARM EABI
      	structures.
      	* g++.dg/eh/forced2.C: Likewise.
      	* g++.dg/eh/forced3.C: Likewise.
      	* g++.dg/eh/forced4.C: Likewise.
      libstdc++-v3/
      	* libsupc++/eh_arm.cc (__cxa_begin_cleanup): Remember a
      	foreign exception too.
      	(__gnu_end_cleanup): Recover a foreign exception too.
      	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Cope
      	with forced unwinding.
      	* libsupc++/eh_throw.cc (__cxxabiv1::__cxa_rethrow): Use
      	_Unwind_Resume_or_Rethrow for ARM EABI.
      
      From-SVN: r107089
      1dcca6f3
  30. Jul 03, 2005
  31. Jul 01, 2005
    • Kelley Cook's avatar
      libunwind.S, [...]: Update FSF address. · 7e5a6536
      Kelley Cook authored
      2005-07-01  Kelley Cook  <kcook@gcc.gnu.org>
      
      	* config/arm/libunwind.S, config/arm/pr-support.c,
      	config/arm/unwind-arm.c, config/arm/unwind-arm.h,
      	config/c4x/predicates.md, tree-object-size.c: Update FSF address.
      
      From-SVN: r101494
      7e5a6536
  32. Jun 28, 2005
    • Paul Brook's avatar
      Makefile.in: Set and use UNWIND_H. · 2a75c0b6
      Paul Brook authored
      2005-06-28  Paul Brook  <paul@codesourcery.com>
      
      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.
      
      From-SVN: r101389
      2a75c0b6
Loading