Skip to content
Snippets Groups Projects
  1. Jan 03, 2024
  2. Jan 16, 2023
  3. Jan 07, 2023
    • LIU Hao's avatar
      Always define `WIN32_LEAN_AND_MEAN` before <windows.h> · 902c7559
      LIU Hao authored
      Recently, mingw-w64 has got updated <msxml.h> from Wine which is included
      indirectly by <windows.h> if `WIN32_LEAN_AND_MEAN` is not defined. The
      `IXMLDOMDocument` class has a member function named `abort()`, which gets
      affected by our `abort()` macro in "system.h".
      
      `WIN32_LEAN_AND_MEAN` should, nevertheless, always be defined. This
      can exclude 'APIs such as Cryptography, DDE, RPC, Shell, and Windows
      Sockets' [1], and speed up compilation of these files a bit.
      
      [1] https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
      
      gcc/
      
      	PR middle-end/108300
      	* config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
      	before <windows.h>.
      	* diagnostic-color.cc: Likewise.
      	* plugin.cc: Likewise.
      	* prefix.cc: Likewise.
      
      gcc/ada/
      
      	PR middle-end/108300
      	* adaint.c: Define `WIN32_LEAN_AND_MEAN` before `#include
      	<windows.h>`.
      	* cio.c: Likewise.
      	* ctrl_c.c: Likewise.
      	* expect.c: Likewise.
      	* gsocket.h: Likewise.
      	* mingw32.h: Likewise.
      	* mkdir.c: Likewise.
      	* rtfinal.c: Likewise.
      	* rtinit.c: Likewise.
      	* seh_init.c: Likewise.
      	* sysdep.c: Likewise.
      	* terminals.c: Likewise.
      	* tracebak.c: Likewise.
      
      gcc/jit/
      
      	PR middle-end/108300
      	* jit-w32.h: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      
      libatomic/
      
      	PR middle-end/108300
      	* config/mingw/lock.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libffi/
      
      	PR middle-end/108300
      	* src/aarch64/ffi.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libgcc/
      
      	PR middle-end/108300
      	* config/i386/enable-execute-stack-mingw32.c: Define
      	`WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* libgcc2.c: Likewise.
      	* unwind-generic.h: Likewise.
      
      libgfortran/
      
      	PR middle-end/108300
      	* intrinsics/sleep.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libgomp/
      
      	PR middle-end/108300
      	* config/mingw32/proc.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libiberty/
      
      	PR middle-end/108300
      	* make-temp-file.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* pex-win32.c: Likewise.
      
      libssp/
      
      	PR middle-end/108300
      	* ssp.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      
      libstdc++-v3/
      
      	PR middle-end/108300
      	* src/c++11/system_error.cc: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      	* src/c++11/thread.cc: Likewise.
      	* src/c++17/fs_ops.cc: Likewise.
      	* src/filesystem/ops.cc: Likewise.
      
      libvtv/
      
      	PR middle-end/108300
      	* vtv_malloc.cc: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* vtv_rts.cc: Likewise.
      	* vtv_utils.cc: Likewise.
      902c7559
  4. Oct 17, 2022
    • H.J. Lu's avatar
      x86: Check corrupted return address when unwinding stack · 9072db9d
      H.J. Lu authored
      If shadow stack is enabled, when unwinding stack, we count how many stack
      frames we pop to reach the landing pad and adjust shadow stack by the same
      amount.  When counting the stack frame, we compare the return address on
      normal stack against the return address on shadow stack.  If they don't
      match, return _URC_FATAL_PHASE2_ERROR for the corrupted return address on
      normal stack.  Don't check the return address for
      
      1. Non-catchable exception where exception_class == 0.  Process will be
      terminated.
      2. Zero return address which marks the outermost stack frame.
      3. Signal stack frame since kernel puts a restore token on shadow stack.
      
      	* unwind-generic.h (_Unwind_Frames_Increment): Add the EXC
      	argument.
      	* unwind.inc (_Unwind_RaiseException_Phase2): Pass EXC to
      	_Unwind_Frames_Increment.
      	(_Unwind_ForcedUnwind_Phase2): Likewise.
      	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
      	Take the EXC argument.  Return _URC_FATAL_PHASE2_ERROR if the
      	return address on normal stack doesn't match the return address
      	on shadow stack.
      9072db9d
  5. Jan 03, 2022
  6. Jan 04, 2021
  7. Jan 01, 2020
  8. Jan 01, 2019
  9. Apr 19, 2018
    • H.J. Lu's avatar
      libgcc/CET: Skip signal frames when unwinding shadow stack · 5707be3c
      H.J. Lu authored
      When -fcf-protection -mcet is used, I got
      
      FAIL: g++.dg/eh/sighandle.C
      
      (gdb) bt
       #0  _Unwind_RaiseException (exc=exc@entry=0x416ed0)
          at /export/gnu/import/git/sources/gcc/libgcc/unwind.inc:140
       #1  0x00007ffff7d9936b in __cxxabiv1::__cxa_throw (obj=<optimized out>,
          tinfo=0x403dd0 <typeinfo for int@@CXXABI_1.3>, dest=0x0)
          at /export/gnu/import/git/sources/gcc/libstdc++-v3/libsupc++/eh_throw.cc:90
       #2  0x0000000000401255 in sighandler (signo=11, si=0x7fffffffd6f8,
          uc=0x7fffffffd5c0)
          at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:9
       #3  <signal handler called> <<<< Signal frame which isn't on shadow stack
       #4  dosegv ()
          at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:14
       #5  0x00000000004012e3 in main ()
          at /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:30
      (gdb) p frames
      $6 = 5
      (gdb)
      
      frame count should be 4, not 5.  This patch skips signal frames when
      unwinding shadow stack.
      
      gcc/testsuite/
      
      	PR libgcc/85334
      	* g++.dg/torture/pr85334.C: New test.
      
      libgcc/
      
      	PR libgcc/85334
      	* unwind-generic.h (_Unwind_Frames_Increment): New.
      	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
      	Likewise.
      	* unwind.inc (_Unwind_RaiseException_Phase2): Increment frame
      	count with _Unwind_Frames_Increment.
      	(_Unwind_ForcedUnwind_Phase2): Likewise.
      
      From-SVN: r259502
      5707be3c
  10. Jan 03, 2018
  11. Nov 17, 2017
    • Igor Tsimbalist's avatar
      Add Intel CET support for EH in libgcc. · 6a10fff4
      Igor Tsimbalist authored
      Control-flow Enforcement Technology (CET), published by Intel,
      introduces the Shadow Stack feature, which ensures a return from a
      function is done to exactly the same location from where the function
      was called. When EH is present the control-flow transfer may skip some
      stack frames and the shadow stack has to be adjusted not to signal a
      violation of a control-flow transfer. It's done by counting a number
      of skiping frames and adjasting shadow stack pointer by this number.
      
      Having new semantic of the 'ret' instruction if CET is supported in HW
      the 'ret' instruction cannot be generated in ix86_expand_epilogue when
      we are returning after EH is processed. Added a code in
      ix86_expand_epilogue to adjust Shadow Stack pointer and to generate an
      indirect jump instead of 'ret'. As sp register is used during this
      adjustment thus the argument in pro_epilogue_adjust_stack is changed
      to update cfa_reg based on whether control-flow instrumentation is set.
      Without updating the cfa_reg field there is an assert later in dwarf2
      pass related to mismatch the stack register and cfa_reg value.
      
      gcc/
      	* config/i386/i386.c (ix86_expand_epilogue): Change simple
      	return to indirect jump for EH return if control-flow protection
      	is enabled. Change explicit 'false' argument in
      	pro_epilogue_adjust_stack with a value of flag_cf_protection.
      	* config/i386/i386.md (simple_return_indirect_internal): Remove
      	SImode restriction to support 64-bit.
      
      libgcc/
      	* config/i386/linux-unwind.h: Include
      	config/i386/shadow-stack-unwind.h.
      	* config/i386/shadow-stack-unwind.h: New file.
      	* unwind-dw2.c: (uw_install_context): Add a frame parameter and
      	pass it to _Unwind_Frames_Extra.
      	* unwind-generic.h (_Unwind_Frames_Extra): New.
      	* unwind.inc (_Unwind_RaiseException_Phase2): Add frames_p
      	parameter. Add local variable frames to count number of frames.
      	(_Unwind_ForcedUnwind_Phase2): Likewise.
      	(_Unwind_RaiseException): Add local variable frames to count
      	number of frames, pass it to _Unwind_RaiseException_Phase2 and
      	uw_install_context.
      	(_Unwind_ForcedUnwind): Likewise.
      	(_Unwind_Resume): Likewise.
      	(_Unwind_Resume_or_Rethrow): Likewise.
      
      From-SVN: r254876
      6a10fff4
  12. Jan 01, 2017
  13. Jan 04, 2016
  14. Dec 16, 2015
  15. Jan 05, 2015
  16. Jan 02, 2014
  17. Feb 04, 2013
  18. Nov 29, 2012
  19. Jul 19, 2012
    • Tristan Gingold's avatar
      eh_personality.cc (__gxx_personality_seh0): New function. · bf1431e3
      Tristan Gingold authored
      
      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: default avatarRichard Henderson <rth@redhat.com>
      
      From-SVN: r189644
      bf1431e3
  20. 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
  21. Apr 09, 2009
  22. Feb 20, 2009
  23. Jun 18, 2008
    • Ulrich Weigand's avatar
      targhooks.h (struct gcc_target): New member unwind_word_mode. · 7b0518e3
      Ulrich Weigand authored
      	* targhooks.h (struct gcc_target): New member unwind_word_mode.
      	(default_unwind_word_mode): Add prototype.
      	* targhooks.c (default_unwind_word_mode): New function.
      	(default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
      	instead of word_mode.
      	* target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
      	(TARGET_INITIALIZER): Use it.
      
      	* c-common.c (handle_mode_attribute): Support "unwind_word"
      	mode attribute.
      	* unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
      
      	* except.c (init_eh): Use targetm.unwind_word_mode () instead of
      	word_mode to access SjLj_Function_Context member "data".
      	(sjlj_emit_dispatch_table): Likewise.  Also, perform type
      	conversion from targetm.eh_return_filter_mode () to
      	targetm.unwind_word_mode () if they differ.
      
      	* builtin-types.def (BT_UNWINDWORD): New primitive type.
      	(BT_FN_UNWINDWORD_PTR): New function type.
      	(BT_FN_WORD_PTR): Remove.
      	* builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
      	* except.c (expand_builtin_extend_pointer): Convert pointer to
      	targetm.unwind_word_mode () instead of word_mode.
      
      	* config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
      	* config/spu/spu.c (spu_eh_return_filter_mode): Remove.
      	(spu_unwind_word_mode): New function.
      	(TARGET_EH_RETURN_FILTER_MODE): Do not define.
      	(TARGET_UNWIND_WORD_MODE): Define.
      	* config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
      
      From-SVN: r136912
      7b0518e3
  24. Nov 26, 2007
  25. Sep 14, 2007
    • Sandra Loosemore's avatar
      tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document. · 56e449d3
      Sandra Loosemore authored
      
      2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
      	    Nigel Stephens  <nigel@mips.com>
      
      	gcc/
      	* doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
      	* unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
      	(_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
      	declaration.
      	(_Unwind_ForcedUnwind): Likewise.
      	(_Unwind_Resume): Likewise.
      	(_Unwind_Resume_or_Rethrow): Likewise.
      	(_Unwind_Backtrace): Likewise.
      	(_Unwind_SjLj_RaiseException): Likewise.
      	(_Unwind_SjLj_ForcedUnwind): Likewise.
      	(_Unwind_SjLj_Resume): Likewise.
      	(_Unwind_SjLj_Resume_or_Rethrow): Likewise.
      	* unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
      	to definition.
      	(_Unwind_ForcedUnwind): Likewise.
      	(_Unwind_Resume): Likewise.
      	(_Unwind_Resume_or_Rethrow): Likewise.
      	(_Unwind_Backtrace): Likewise.
      	* unwind-compat.c (_Unwind_Backtrace): Likewise.
      	(_Unwind_ForcedUnwind): Likewise.
      	(_Unwind_RaiseException): Likewise.
      	(_Unwind_Resume): Likewise.
      	(_Unwind_Resume_or_Rethrow): Likewise.
      
      	* config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
      	nomips16 mode when IN_LIBGCC2 with hard float.
      
      Co-Authored-By: default avatarNigel Stephens <nigel@mips.com>
      
      From-SVN: r128501
      56e449d3
  26. Mar 29, 2007
  27. Jan 24, 2007
    • Andreas Krebbel's avatar
      unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with _uleb128_t and... · f767122b
      Andreas Krebbel authored
      unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
      
      2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
      
      	* 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.
      
      From-SVN: r121116
      f767122b
  28. Feb 27, 2006
    • Jakub Jelinek's avatar
      re PR other/26208 (Serious problem with unwinding through signal frames) · 754e45a8
      Jakub Jelinek authored
      	PR other/26208
      	* 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.
      
      From-SVN: r111488
      754e45a8
  29. 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
  30. Jun 25, 2005
  31. May 20, 2005
  32. May 17, 2005
    • Nathan Sidwell's avatar
      unwind-dw2-fde-glibc.c (base_from_cb_data, [...]): Use gcc_assert and... · 79d0dfa3
      Nathan Sidwell authored
      unwind-dw2-fde-glibc.c (base_from_cb_data, [...]): Use gcc_assert and gcc_unreachable as appropriate.
      
      	* unwind-dw2-fde-glibc.c (base_from_cb_data,
      	_Unwind_IteratePhdrCallback): Use gcc_assert and gcc_unreachable as
      	appropriate.
      	* unwind-dw2-fde.c (__deregister_frame_info_bases,
      	base_from_object, fde_split, end_fde_sort): Likewise.
      	* unwind-dw2.c (_Unwind_GetGR, _Unwind_SetGR, execute_stack_op,
      	execute_cfa_program, _Unwind_SetSpColumn, uw_update_context_1,
      	uw_init_context_1): Likewise.
      	* unwind.inc (_Unwind_RaiseException_Phase2, _Unwind_Resume,
      	_Unwind_Resume_or_Rethrow): Likewise.
      	* unwind-pe.h (__gxx_abort): Do not define.
      	(size_of_encoded_value, base_of_encoded_value,
      	read_encoded_value_with_base): Use gcc_unreachable.
      	* unwind.h (_Unwind_GetTextRelBase): Likewise.
      
      From-SVN: r99835
      79d0dfa3
  33. Nov 30, 2004
    • Zack Weinberg's avatar
      * gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.h · 7370bebd
      Zack Weinberg authored
      	* unwind.h: Surround all visibility pragmas with #ifndef HIDE_EXPORTS.
      
      	* mklibgcc.in: Drastic restructure for comprehensibility.
      	Remove the old hidden-directive hack.
      	Eliminate support for .txt files in LIB2ADD etc (never used).
      	Eliminate support for assembly source files in LIB2ADDEH* and
      	LIBUNWIND (also never used).
      	Build up dependency lists for libraries incrementally.
      	If we have SHLIB_LINK, compile each file twice, once for the
      	static and once for the shared library; also probe for
      	-fvisibility=hidden in the generated libgcc.mk.  If found,
      	pass that and -DHIDE_EXPORTS to the compilation of every C
      	source file going into the static library.  If found, generate
      	hidden-directive lists for every assembly source file going
      	into the static library, but incorporate them with -include
      	instead of ld -r.
      	Write comments into generated libgcc.mk to facilitate debugging.
      	* Makefile.in: Pass ASM_HIDDEN_OP to mklibgcc.
      	* config/t-slibgcc-darwin: Define ASM_HIDDEN_OP.
      
      	* config/darwin.h (REAL_LIBGCC_SPEC): Put -lgcc back in
      	-Zdynamiclib case.
      
      From-SVN: r91513
      7370bebd
  34. Aug 03, 2004
    • Mark Mitchell's avatar
      gthr-gnat.c: Add visibility #pragmas. · 3fc1f660
      Mark Mitchell authored
      	* gthr-gnat.c: Add visibility #pragmas.
      	* gthr-gnat.h : Likewise.
      	* gthr.h: Likewise.
      	* libgcc2.c (__ffsSI2): Move prototype to libgcc2.h.
      	(__ffsDI2): Likewise.
      	(__clzSI2): Likewise.
      	(__ctzSI2): Likewise.
      	(__ctzDI2): Likewise.
      	(__popcountSI2): Likewise.
      	(__popcountDI2): Likewise.
      	(__paritySI2): Likewise.
      	(__parityDI2): Likewise.
      	* libgcc2.h: Add visibility #pragmas.
      	(__clzDI2): Add prototype.
      	(__clzSI2): Likewise.
      	(__ctzSI2): Likewise.
      	(__ffsDI2): Likewise.
      	(__ffsSI2): Likewise.
      	(__ctzDI2): Likewise.
      	(__popcountSI2): Likewise.
      	(__popcountDI2): Likewise.
      	(__paritySI2): Likewise.
      	(__parityDI2): Likewise.
      	* unwind-dw2-fde.h: Add visibility #pragmas.
      	* unwind.h: Likewise.
      
      From-SVN: r85489
      3fc1f660
  35. Jan 21, 2004
    • Kazu Hirata's avatar
      alias.c, [...]: Update copyright. · d9221e01
      Kazu Hirata authored
      	* alias.c, basic-block.h, c-common.c, c-common.h,
      	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
      	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
      	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
      	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
      	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
      	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
      	genautomata.c, genconditions.c, genemit.c, genflags.c,
      	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
      	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
      	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
      	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
      	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
      	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
      	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
      	unwind.h, varray.c, varray.h: Update copyright.
      
      From-SVN: r76302
      d9221e01
  36. Jan 08, 2004
    • Zack Weinberg's avatar
      dwarf2.h, [...]: Add multiple-include guard. · 7ce27103
      Zack Weinberg authored
      	* dwarf2.h, unwind-dw2-fde.h, unwind-pe.h, unwind.h:
      	Add multiple-include guard.
      cp:
      	* parser.c (cp_parser_save_member_function_body): Mark the
      	definition static.
      treelang:
      	* parse.y (yyerror): Mark the definition static.
      
      From-SVN: r75536
      7ce27103
  37. Sep 04, 2003
    • Jakub Jelinek's avatar
      libgcc-ia64.ver: Export _Unwind_GetBSP@@GCC_3.3.2. · bc93e287
      Jakub Jelinek authored
      	* config/ia64/libgcc-ia64.ver: Export _Unwind_GetBSP@@GCC_3.3.2.
      	* config/ia64/unwind-ia64.c (_Unwind_GetBSP): New function.
      	* unwind.h (_Unwind_GetBSP): New prototype.
      	* libgcc-std.ver: Add empty GCC_3.3.2 version.
      	* mkmap-symver.awk: For symbol versions with no exported symbols,
      	don't put anything into version script, just change all symbol
      	versions which inherit from it to inherit from its ancestor.
      
      From-SVN: r71057
      bc93e287
  38. May 07, 2003
    • Richard Henderson's avatar
      except.c: Revert 04-01 and 04-02 forced-unwind changes. · a944ceb9
      Richard Henderson authored
      gcc/
              * except.c: Revert 04-01 and 04-02 forced-unwind changes.
              * flags.h, toplev.c, doc/invoke.texi: Likewise.
      
              * unwind-dw2.c (_Unwind_GetCFA): Fix ptr->int conversion warning.
              * unwind.inc (_Unwind_DeleteException): Check for null
              exception_cleanup.
      
              * unwind-sjlj.c (_Unwind_SjLj_Resume_or_Rethrow): New.
              * unwind.inc (_Unwind_Resume_or_Rethrow): New.
              * unwind.h: Declare them.
              * libgcc-std.ver (GCC_3.3): Export them.
      
      gcc/cp/
              * cfns.gperf: Comment out POSIX thread cancellation points,
              plus abort and raise.
              * cfns.h: Regenerate.
      
      gcc/testsuite/
              * g++.dg/eh/forced1.C: Expect catch-all handlers to run.
              Verify exception_cleanup not called for rethrows.
              * g++.dg/eh/forced2.C: Test that exception_cleanup is called
              when exiting catch block without rethrowing.
              * g++.dg/eh/forced3.C: New.
              * g++.dg/eh/forced4.C: New.
      
      libstdc++-v3/
              * libsupc++/eh_catch.cc (__cxa_begin_catch): Handle foreign exceptions.
              (__cxa_end_catch): Likewise.
              * libsupc++/eh_throw.cc (__cxa_rethrow): Likewise.  Use
              _Unwind_Resume_or_Rethrow.
              * libsupc++/eh_personality.cc (empty_exception_spec): New.
              (PERSONALITY_FUNCTION): Don't ignore terminate or catch-all
              for _UA_FORCE_UNWIND.  Honor empty filter spec for foreign
              exceptions.  Don't push terminate/unexpected to cxa functions.
              (__cxa_call_unexpected): Remove foreign exception fixmes.
      
      From-SVN: r66583
      a944ceb9
  39. Apr 15, 2003
  40. Apr 03, 2003
    • Richard Henderson's avatar
      libgcc-std.ver (_Unwind_GetCFA): New. · 378683cf
      Richard Henderson authored
              * libgcc-std.ver (_Unwind_GetCFA): New.
              * unwind-dw2.c (_Unwind_GetCFA): New.
              * unwind-libunwind.c (_Unwind_GetCFA): New.
              * unwind-sjlj.c (_Unwind_GetCFA): New.
              * unwind.h: Declare it.
      
      From-SVN: r65190
      378683cf
Loading