except.c: Revert 04-01 and 04-02 forced-unwind changes.
authorRichard Henderson <rth@redhat.com>
Wed, 7 May 2003 22:11:38 +0000 (15:11 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 7 May 2003 22:11:38 +0000 (15:11 -0700)
commita944ceb94a99f5a271e2bd84a5a922858e5f699f
treec4966921e4085694a93888d4028afb2a1818fda4
parenta21d83cd14f80ebd8b9ab6c4d87c42bf06bfec08
except.c: Revert 04-01 and 04-02 forced-unwind changes.

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
21 files changed:
gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/cfns.gperf
gcc/cp/cfns.h
gcc/doc/invoke.texi
gcc/except.c
gcc/flags.h
gcc/libgcc-std.ver
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/eh/forced1.C
gcc/testsuite/g++.dg/eh/forced2.C
gcc/testsuite/g++.dg/eh/forced3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/eh/forced4.C [new file with mode: 0644]
gcc/toplev.c
gcc/unwind-sjlj.c
gcc/unwind.h
gcc/unwind.inc
libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_catch.cc
libstdc++-v3/libsupc++/eh_personality.cc
libstdc++-v3/libsupc++/eh_throw.cc