This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix __cxa_begin_cleanup return value


Hello!
The ARM ABI specifies that __cxa_begin_cleanup should return 'true' on sucess, 
and 'false' on error. At the moment, however, it returns true is exception is 
not native, and false otherwise.

It does not cause any problems with gcc, since the return value of 
__cxa_begin_cleanup is not tested, but causes problem with third-party tools.

The attached patch fixes it by making __cxa_begin_cleanup always return 
'true'.

Tested with cross to arm-none-linux-gnueabi, no regressions.

2006-16-06  Vladimir Prus  <vladimir@codesourcery.com>

	* libsupc++/eh_arm.cc (__cxa_begin_cleanup): Always return 'true'.

Index: libstdc++-v3/libsupc++/eh_arm.cc
===================================================================
--- libstdc++-v3/libsupc++/eh_arm.cc	(revision 114710)
+++ libstdc++-v3/libsupc++/eh_arm.cc	(working copy)
@@ -113,7 +113,7 @@ __cxa_begin_cleanup(_Unwind_Exception* u
       globals->propagatingExceptions = header;
     }
 
-  return !native;
+  return true;
 }
 
 // Do the work for __cxa_end_cleanup.  Returns the currently propagating

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]