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.