Re: [patch] Fix oddity in personality routine

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
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  <[email protected]>
> 
> 	* exception.cc (PERSONALITY_FUNCTION): Fix oversight.
> 


Yes, I think that's right.

Andrew.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.