This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: [patch] Fix oddity in personality routine
- From: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- To: Eric Botcazou <ebotcazou at adacore dot com>
- Cc: java at gcc dot gnu dot org
- Date: Fri, 13 Nov 2009 14:17:58 -0500
- Subject: Re: [patch] Fix oddity in personality routine
- References: <200911131850.03946.ebotcazou@adacore.com>
On Fri, Nov 13, 2009 at 06:50:03PM +0100, Eric Botcazou wrote:
> Hi,
>
> r128098 has introduced an oddity in the personality routine:
>
> int ip_before_insn = 0;
> [...]
>
> // Parse the LSDA header.
> p = parse_lsda_header (context, language_specific_data, &info);
> #ifdef HAVE_GETIPINFO
> ip = _Unwind_GetIPInfo (context, &ip_before_insn);
> #else
> ip = _Unwind_GetIP (context) - 1;
> #endif
> if (! ip_before_insn)
> --ip;
>
> So, if !HAVE_GETIPINFO, the IP is decremented by 2! It used to be 1 and both
> libstdc++-v3/libsupc++/eh_personality.cc and ada/raise-gcc.c have the expected
> version:
>
> #ifdef _GLIBCXX_HAVE_GETIPINFO
> ip = _Unwind_GetIPInfo (context, &ip_before_insn);
> #else
> ip = _Unwind_GetIP (context);
> #endif
> if (! ip_before_insn)
> --ip;
>
> Hence the attached patch, that I don't plan to test though. OK anyway?
>
>
> 2009-11-13 Eric Botcazou <ebotcazou@adacore.com>
>
> * exception.cc (PERSONALITY_FUNCTION): Fix oversight.
>
>
> --
> Eric Botcazou
> Index: exception.cc
> ===================================================================
> --- exception.cc (revision 154059)
> +++ exception.cc (working copy)
> @@ -328,7 +328,7 @@ PERSONALITY_FUNCTION (int version,
> #ifdef HAVE_GETIPINFO
> ip = _Unwind_GetIPInfo (context, &ip_before_insn);
> #else
> - ip = _Unwind_GetIP (context) - 1;
> + ip = _Unwind_GetIP (context);
> #endif
> if (! ip_before_insn)
> --ip;
Shouldn't this fix also get backported to gcc-4_4-branch and
gcc-4_3-branch as well? They both have r128098.
Jack