[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2014-03-12 Thread roland at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

roland at gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from roland at gnu dot org ---
Fixed on trunk and 4.8.


[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2014-03-12 Thread roland at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

--- Comment #5 from roland at gcc dot gnu.org ---
Author: roland
Date: Wed Mar 12 22:44:09 2014
New Revision: 208520

URL: http://gcc.gnu.org/viewcvs?rev=208520&root=gcc&view=rev
Log:
PR libstdc++/59392: Fix ARM EABI uncaught throw from unexpected exception
handler

libstdc++-v3/
PR libstdc++/59392
* libsupc++/eh_call.cc (__cxa_call_unexpected): Call __do_catch with
the address of a null pointer, not with a null pointer to pointer.
Copy comment for this case from eh_personality.cc:__cxa_call_unexpected.
* testsuite/18_support/bad_exception/59392.cc: New file.

Added:
   
branches/gcc-4_8-branch/libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
  (with props)
Modified:
branches/gcc-4_8-branch/libstdc++-v3/ChangeLog
branches/gcc-4_8-branch/libstdc++-v3/libsupc++/eh_call.cc

Propchange:
branches/gcc-4_8-branch/libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
('svn:eol-style' added)


[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2014-03-12 Thread roland at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

--- Comment #4 from roland at gcc dot gnu.org ---
Author: roland
Date: Wed Mar 12 22:42:13 2014
New Revision: 208519

URL: http://gcc.gnu.org/viewcvs?rev=208519&root=gcc&view=rev
Log:
PR libstdc++/59392: Fix ARM EABI uncaught throw from unexpected exception
handler

libstdc++-v3/
PR libstdc++/59392
* libsupc++/eh_call.cc (__cxa_call_unexpected): Call __do_catch with
the address of a null pointer, not with a null pointer to pointer.
Copy comment for this case from eh_personality.cc:__cxa_call_unexpected.
* testsuite/18_support/bad_exception/59392.cc: New file.

Added:
trunk/libstdc++-v3/testsuite/18_support/bad_exception/59392.cc   (with
props)
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/libsupc++/eh_call.cc

Propchange: trunk/libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
('svn:eol-style' added)


[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2014-03-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||patch
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-03-12
 Ever confirmed|0   |1

--- Comment #3 from Jonathan Wakely  ---
The posted patch is OK, approved for trunk and 4.8


[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2013-12-09 Thread roland at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

--- Comment #2 from roland at gnu dot org ---
Fix posted: http://gcc.gnu.org/ml/gcc-patches/2013-12/msg00753.html


[Bug libstdc++/59392] crash on throw from "unexpected exception" handler with ARM EABI unwinder

2013-12-04 Thread mseaborn at chromium dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392

Mark Seaborn  changed:

   What|Removed |Added

 CC||mseaborn at chromium dot org

--- Comment #1 from Mark Seaborn  ---
Instead of:

  if (catch_type->__do_catch(&bad_exc, NULL, 1))

I think this should be:

  // We don't have a thrown object to compare against, but since
  // bad_exception doesn't have virtual bases, that's OK; just pass 0.
  void *obj = NULL;
  if (catch_type->__do_catch(&bad_exc, &obj, 1))

or to avoid the comment, just:

  std::bad_exception ex;
  void *obj = &ex;
  if (catch_type->__do_catch(&typeid(ex), &obj, 1))

The non-EABI equivalent is the second check_exception_spec() call in
__cxa_call_unexpected() in eh_personality.cc.