Date: Tue, 15 Jul 2014 17:11:15 +0400 From: "Ivan A. Kosarev" <ivan@ivan-labs.com> To: freebsd-current@freebsd.org Subject: Demangling issues with libcxxrt.so.1 on v9.2 Message-ID: <53C52873.5050309@ivan-labs.com>
next in thread | raw e-mail | index | archive | help
Hello everybody, It seems there are problems with demandling some kinds of names with libcxxrt.so.1 on FreeBSD 9.2 (I didn't test other versions yet). This program: --- #include <stdio.h> #include <stdlib.h> extern "C" char* __cxa_demangle(const char* mangled_name, char* buf, size_t* n, int* status); void test(const char *mangled) { int status = 0; char *DemangledName = __cxa_demangle(mangled, NULL, NULL, &status); printf("%s: status %d", mangled, status); if(status == 0) printf("; demangled: '%s'", DemangledName); free(DemangledName); printf("\n"); } int main(void) { test("_Z9NullDerefPi"); test("_ZL9NullDerefPi"); test("_ZN8DeepFreeILi0EE4freeEPc"); test("_ZN8DeepFreeILi13EE4freeEPc"); test("_ZN8DeepFreeILi36EE4freeEPc"); return 0; } --- outputs: --- _Z9NullDerefPi: status 0; demangled: 'NullDeref(int*)' _ZL9NullDerefPi: status -2 _ZN8DeepFreeILi0EE4freeEPc: status 0; demangled: 'DeepFree<0E>::free(char*)' _ZN8DeepFreeILi13EE4freeEPc: status 0; demangled: 'DeepFree<13E>::free(char*)' _ZN8DeepFreeILi36EE4freeEPc: status 0; demangled: 'DeepFree<36E>::free(char*)' --- Note that it fails to demangle the local name in the 2nd line and adds extra 'E' character in DeepFree<...E>s. The case with the local name is not critical, but the case with DeepFree<...E> prevents LLVM's address sanitizer tests from passing on FreeBSD so the question is: is there a chance the defect will be resolved any time soon or should I try to prepare a fix to speed up the process? Thanks a lot. --
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53C52873.5050309>