9d84a30e9bd404df28fdeee7afcc69786fc05c78 |
|
18-Nov-2015 |
Egor Kochetov <egor.kochetov@intel.com> |
Fixed segfault when throwing exceptions via gabi++ Replaced 'malloc' with 'memalign'. See http://b.android.com/179410 Change-Id: Ib239c80d01a38e7205077febac1a39f3244e2ad7 Signed-off-by: Egor Kochetov <egor.kochetov@intel.com>
|
92f1ee6990752f26aebdbbfb5a87c474d3edd1e0 |
|
31-Dec-2013 |
Albert J. Wong <ajwong@google.com> |
Fix new.delete tests by correcting link methodology. Replace GABIXX_LIBCXX with LIBCXXABI. Removed -Bsymbolic. Specified -O0 in testit_android because the optimizations make some of the tests fail. Also replaced GABIXX_LIBCXX with LIBCXXABI and gabi++ to reflect libc++abi, not libc++rt. The linking of libc++_shared.so incorreclty specified -Bsymbolic which, aside from causing issues with rtti and exception handlers, also makes the default implementations of the array operator new, and the single-object no-throw variant (both of which wrap the normal single-object new) link directly to the single-object new rather than jump through the PLT. This means that even if you override single-object new, the default implementations of these other new operators will NOT find the override. Bad bad bad. Ideally, this should use -Bsymbolic-functions with --dynamic-list-cpp-new and --dynamic-list-cpp-typeinfo so that the linker can avoid a plt jump for most lookups, but somehow even with the dynamic-list settings, the operator new/delete functions were skipping the plt jump. Removed all of these options for now. willchan, danakj, and thakis contributed to this patch. BUG=36496 Change-Id: Iaaa25de365b6444e49ceaadaf9d0b1f442b9c85d
|
965d95b85241f2aabbc731e30e0abd9cebfab7f9 |
|
22-Nov-2013 |
David 'Digit' Turner <digit@android.com> |
gabi++: Do not use malloc() to allocate C++ thread-local objects. This avoids a dead-lock when malloc() is called with libc.debug.malloc defined to something other than 0 on userdebug/eng Android builds. + Add a unit test to check that this works. BUG=61883 Change-Id: Ib7c023a549483fa950392041c7ab970c08eab6d0
|
2319d708f6756fde7f18e0bf276715f001521c5a |
|
30-Oct-2013 |
David 'Digit' Turner <digit@android.com> |
gabi++: Add std::get_new_handler() and __cxa_deleted_virtual() This patch adds two missing functions to GAbi++: - std::get_new_handler() is used to retrieve the current std::new_handler - __cxa_deleted_virtual() is used in C++11 vtables to point to 'deleted methods'. + Add missing _GABIXX_NOEXCEPT and _GABIXX_NORETURN declarations. + Change throw() declarations into _GABIXX_NOEXCEPT, when compiling C++11, this translates into the allegedly more efficient 'noexcept' statement. Change-Id: Ia5beaba8b6926372b96fa154b23bb118ab064f3e
|
f345f1845a57834fa559114c27913c2f7a40f501 |
|
13-Aug-2013 |
Andrew Hsieh <andrewhsieh@google.com> |
Fixed stlport compilation warning with gcc4.8 under "-W -Wall -Wno-unused-parameter" Change-Id: I3a1bb9ca752b9c2e0ca239889d87c3d513d989c0
|
d9767af301c97e0f825caead7cab9bfaf0d9e5e2 |
|
29-Jul-2013 |
David 'Digit' Turner <digit@android.com> |
gabi++: Add _GABIXX_NOEXCEPT. This adds a new macro that will resolve to the C++11 'noexcept' keyword, and to 'throw()' otherwise. Change-Id: Ifa9b6643773b99eb1be5de28e6d27783f2942898
|
ce2be28ffd56784d084ece009d26a37f829cff00 |
|
29-Jul-2013 |
David 'Digit' Turner <digit@android.com> |
gabi++: Introduced _GABIXX_HIDDEN macro. This patch introduces a new GAbi++ macro used to declare functions that are internal to the library, and should never be exposed to client code. This doesn't affect the visibility of other symbols. Change-Id: I1e4b8e9796fabcfefe4a6f98a47599dc0898fe85
|
7a9c37698a1e2cdd865b5db7b14f9781cb696da6 |
|
28-Jul-2013 |
David 'Digit' Turner <digit@android.com> |
gabi++: Fix terminate / unexpected thread-safety. This patch makes all operations on terminate and unexpected handlers properly thread-safe. This also marks the appropriate functions as "noreturn". + Move internal <cxxabi.h> declarations to internal header src/cxxabi_defines.h + Add new <gabixx_config.h> header. + Move some exception-specific code to src/exception.cc + Rename __cxxabiv1::fatalError() to __gabixx::__fatal_error() in src/fatal_error.cc + Get rid of __cxa_thread_info. Change-Id: If79bf0263cc5f0be1bbf782a7874125fd4923d17
|
a841250002d8fbe2c9536c8632290845d7f2451f |
|
09-Apr-2013 |
Andrew Hsieh <andrewhsieh@google.com> |
Fix STLPORT_FORCE_REBUILD warnings with NDK_ANALYZE=1 Change-Id: I41ac3174d9e28b4a528b45bf012f09ceaa13ebe7
|
f616538a7f20e82157587efa026cedc3b9944542 |
|
12-Mar-2013 |
WenHan Gu <Wenhan.gu@mediatek.com> |
[Bug-fix] Remove redundant free on exception object. __cxa_decrement_exception_refcount should not call exceptionDestructor() directly, since __cxa_free_exception will do that. Change-Id: I6ccfd66d21e08abbba15c704edef980a0cb769fc Signed-off-by: WenHan Gu <Wenhan.gu@mediatek.com>
|
3fb3d58dd29ea2300583e9f02aa19882fc509286 |
|
12-Mar-2013 |
WenHan Gu <Wenhan.gu@mediatek.com> |
[Bug-fix] Wrong offset of pointer to be an argument. According to spec, argument of __cxa_free_exception should be the result of a call to __cxa_allocate_exception. (Same problem on __cxa_increment_exception_refcount and __cxa_decrement_exception_refcount). Change-Id: I4b486f737513f2a5050e5723c8260245bf6d21c1 Signed-off-by: WenHan Gu <Wenhan.gu@mediatek.com>
|
fdf89810ae76eac8def019716322018499531410 |
|
04-Mar-2013 |
Albert J. Wong <ajwong@google.com> |
Make Hello World run with libcxx and gabi++. This change does 2 things: (1) Modifies gabi++ source compatible with libcxx. (2) Adds stubs for missing libc functions needed by libcxx. It introduces a new macro, GXXABI_LIBCXX, into gabi++ which conditionally enables and disables functions in gabi++ to make the exported API behave like libcxxabi's. Existing gabi++ code is also refactored to remove symbols + APIs that shouldn't really be in namespace std. Locale handling code has been patched to hobble along in the c-abi, but there are TODOs. The exception handling logic in gabi++ isn't complete, nor are the libc stubs. Where incomplete functionality is introduced a preprocess warning is left to indicate lack of functionality. After this CL, it is possible to make a running Hello World using libcxx on Android. Change-Id: Iceafd6f8d6dead6b64320b0c0f852d579cceb34c
|
6bbe11ee3dcdb5d1f5a26dde6fb09b7ed85b57a5 |
|
21-Nov-2012 |
David 'Digit' Turner <digit@android.com> |
gabi++: Implement thread-safe C++ runtime support. The current GAbi++ code is missing some code to make exception handling work properly in multi-threaded contexts. This patch adds the missing bits, while allowing the code to run properly on devices that run platforms older than Froyo (see comments). Change-Id: Iaa3e4faec19b731499261ef33731cf384cb432aa
|
7ae983a6ba4bf8ed27a64c492ed5a7178e389bc8 |
|
21-Nov-2012 |
David 'Digit' Turner <digit@android.com> |
GAbi++: Improve fatal error handling. This patch does two things to improve fatal error handling in GAbi++: - Change the default std::terminate() implementation to crash the current process instead of calling abort(), in order to improve debugging. See source code comments for details. - Introduce a new internal fatalError() function that is used to report errors to stderr and/or the log, then call std::terminate(). + Add missing 'exceptions' tags to LOCAL_CPP_FEATURES. Change-Id: I7e95ddc445ec85524a5091df464802e2f0be83ff
|
419afd910dc325e65df10b53e99e49c1eded6d26 |
|
19-Nov-2012 |
WenHan Gu <Wenhan.gu@mediatek.com> |
Make gabi++ support C++ exception handling. After applying this patch, we can make gabi++ support full features on C++ exception handling. This CL has run through tests in both ndk and GCC testsuites (196 tests total) that are related to exception handling. It achieves the same pass rate as gnustl library does! NDK documentation states that upstream might support exception in gabi++. Therefore, I did this patch to achieve the goal. Change-Id: I59a448364b35054fcd9ba6ee33ca87380090d675
|