llvm-project/libcxxabi/src
Eric Fiselier 1b00fc5d81 [libcxxabi] Fix multi-level pointer conversions and pointer to member conversion detection.
Summary:
Currently there are bugs in out detection of multi-level pointer conversions and pointer to member conversions. This patch fixes the following issues.

* Allow multi-level pointers with different nested qualifiers.
* Allow multi-level mixed pointers to objects and pointers to members with different nested qualifiers.
* Allow conversions from `int Base::*` to `int Derived::*` but only for non-nested pointers.

There is still some work that needs to be done to clean this patch up but I want to get some input on it.
Open questions:

* Does `__pointer_to_member_type_info::can_catch(...)` need to adjust the pointer if a base to derived conversion is performed?


Reviewers: danalbert, compnerd, mclow.lists

Reviewed By: mclow.lists

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D8758

llvm-svn: 233984
2015-04-02 23:26:37 +00:00
..
Unwind Also use dl_iterate_phdr() on CloudABI. 2015-03-31 07:59:53 +00:00
CMakeLists.txt [libcxxabi] Build both static and shared versions of libc++abi by default. 2015-03-03 15:59:09 +00:00
abort_message.cpp Fix build for apple machines. 2015-02-06 01:25:08 +00:00
abort_message.h Work on restricting symbol visibility. 2012-02-02 20:47:28 +00:00
config.h s/LIBCXXABI_SINGLE_THREADED/LIBCXXABI_HAS_NO_THREADS/ for consistency with libcxx 2014-09-05 17:46:40 +00:00
cxa_aux_runtime.cpp Adding ABI support for __cxa_throw_bad_array_new_length. 2014-09-11 17:26:43 +00:00
cxa_default_handlers.cpp Use __atomic_exchange_n instead of Clang's __sync_swap 2014-10-03 20:03:47 +00:00
cxa_demangle.cpp Don't print debugging messages to stdout. 2015-03-19 09:17:21 +00:00
cxa_exception.cpp Formatting fixes. 2015-02-05 23:48:06 +00:00
cxa_exception.hpp Formatting fixes. 2015-02-05 23:48:06 +00:00
cxa_exception_storage.cpp s/LIBCXXABI_SINGLE_THREADED/LIBCXXABI_HAS_NO_THREADS/ for consistency with libcxx 2014-09-05 17:46:40 +00:00
cxa_guard.cpp Enable -Wundef. 2015-02-05 01:33:15 +00:00
cxa_handlers.cpp Use __atomic_exchange_n instead of Clang's __sync_swap 2014-10-03 20:03:47 +00:00
cxa_handlers.hpp Bruce Mitchener: Typo fixes. 2013-02-15 15:48:49 +00:00
cxa_new_delete.cpp If libc++ has not declared bad_array_length, then declare it here just so that it gets into the binary. 2013-11-07 17:16:37 +00:00
cxa_personality.cpp Remove unneeded const_cast in readPointerHelper. Pointed out by jroelofs 2015-03-10 21:32:53 +00:00
cxa_thread_atexit.cpp [libcxxabi] Add __cxa_thread_atexit for TLS support on Linux. 2014-12-18 00:03:57 +00:00
cxa_unexpected.cpp Add a descriptive name for a constant. Also I'm at least temporarily waging war on throw specs, both old and new style. Except where we have already publicly exposed the throw spec, I'm getting rid of them. They may come back later. But they seem somewhat prone to cyclic dependencies here. The throw spec implies compiler generated code that this library has to jump to during stack unwinding. I'd like to minimize the possiblity that the code used to properly make that jump is itself creating such jumps. 2012-01-30 16:07:00 +00:00
cxa_vector.cpp Fix build with GCC: 2015-03-05 02:56:05 +00:00
cxa_virtual.cpp use abort_message() 2011-08-02 01:19:07 +00:00
exception.cpp Add some needed symbols in exception.cpp and eliminate dependence upon uncaught_exception() from cxa_vector.cpp. libc++abi is very nearly a self-contained (though not complete) library now. 2012-01-24 21:48:10 +00:00
fallback_malloc.ipp s/LIBCXXABI_SINGLE_THREADED/LIBCXXABI_HAS_NO_THREADS/ for consistency with libcxx 2014-09-05 17:46:40 +00:00
private_typeinfo.cpp [libcxxabi] Fix multi-level pointer conversions and pointer to member conversion detection. 2015-04-02 23:26:37 +00:00
private_typeinfo.h [libcxxabi] Fix multi-level pointer conversions and pointer to member conversion detection. 2015-04-02 23:26:37 +00:00
stdexcept.cpp Make libc++abi use the implementation of __numstr from libc++. No functionality change, just removal of duplicated code. 2014-05-07 20:17:41 +00:00
typeinfo.cpp Work on restricting symbol visibility. 2012-02-02 20:47:28 +00:00