On Fri, Dec 6, 2013 at 1:53 AM, Jakub Jelinek <ja...@redhat.com> wrote: > > The alternative would be to just (perhaps under #ifdef SANITIZER_CP_DEMANGLE) > compile in libiberty/cp-demangle.c (similarly how libstdc++ compiles it in) > as part of libsanitizer/libiberty/ or even libsanitizer/libbacktrace/, > and tweak it, so that like libsanitizer/libbacktrace it uses internal_memcpy > etc. and uses InternalAlloc/InternalFree. The problem is that cp-demangle.c > uses only realloc and free, and doesn't provide any hint on how large the > previously allocated memory chunk is. So, either there is some easy way > how to query the size of InternalAlloc returned allocation, or we would need > to allocate uptr extra and store there number of bytes allocated > and emulate realloc/free that way.
There was a recent buggy patch to the demangler that added calls to malloc and realloc (2013-10-25 Gary Benson <gben...@redhat.com>). That patch must be fixed or reverted before the 4.9 release. The main code in the demangler must not call malloc/realloc. When that patch is fixed, you can use the cplus_demangle_v3_callback function to get a demangler that never calls malloc. Ian