Hello Howard,

It did happen on ARM and x86_32, and I guess all targets have this bug.
This bug behaves depending on the upcoming entry, might be nothing,
infinite loop, other errors...

Thanks.


2012/11/2 Howard Hinnant <[email protected]>

> On Nov 1, 2012, at 5:32 AM, Wen-Han Gu (谷汶翰) <[email protected]> wrote:
>
> > Dear cfe-commits and libcxxabi developers,
> >
> > I hit a bug in libc++abi when testing on a gcc testsuite sample.
> > This can be fixed simply by this small patch.
> > Please help review it. Thanks in advance!
> >
> >
> > Index: src/cxa_personality.cpp
> > ===================================================================
> > --- src/cxa_personality.cpp     (revision 167216)
> > +++ src/cxa_personality.cpp     (working copy)
> > @@ -552,7 +552,7 @@
> >      const uint8_t* callSiteTableEnd = callSiteTableStart +
> callSiteTableLength;
> >      const uint8_t* actionTableStart = callSiteTableEnd;
> >      const uint8_t* callSitePtr = callSiteTableStart;
> > -    while (true)
> > +    while (callSitePtr < callSiteTableEnd)
> >      {
> >          // There is one entry per call site.
> >  #if !__arm__
> > @@ -782,7 +782,12 @@
> >              call_terminate(native_exception, unwind_exception);
> >          }
> >  #endif  // !__arm__
> > -    }  // there is no break out of this loop, only return
> > +    }  // there might be some tricky cases which break out of this loop
> > +
> > +    // If we are here, it means no eh table entry specify how to handle
> > +    // this exception. For example, gcc testsuites eh23 at
> > +    // <gcc>/gcc/testsuite/g++.old-deja/g++.mike/eh23.C
> > +    call_terminate(native_exception, unwind_exception);
> >  }
> >
> >  // public API
>
> Thanks for the patch.  Was this on __arm__ and was the symptom an infinite
> loop?
>
> Howard
>
>
>


-- 
Best regards,
Wen-Han Gu (Nowar)
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to