From: Mark Wielaard Date: Mon, 7 Nov 2016 14:24:26 +0000 (+0000) Subject: Bug #372120 - c++ demangler demangles symbols which are not c++. X-Git-Tag: svn/VALGRIND_3_13_0~303 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=696a45f8c9c4f8f069fa755fee0eeeecc6cc8c3e;p=thirdparty%2Fvalgrind.git Bug #372120 - c++ demangler demangles symbols which are not c++. Explicitly check that the symbol starts with "_Z" to only demangle modern style (gnu_v3) mangled C++ (and Rust) symbols. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16118 --- diff --git a/NEWS b/NEWS index 2d3a4ceecd..1ce9e75c00 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ where XXXXXX is the bug number as listed below. 371412 Rename wrap_sys_shmat to sys_shmat like other wrappers 371869 support '%' in symbol Z-encoding +372120 c++ demangler demangles symbols which are not c++ diff --git a/coregrind/m_demangle/demangle.c b/coregrind/m_demangle/demangle.c index 23c4a0221f..c8a9ca5d05 100644 --- a/coregrind/m_demangle/demangle.c +++ b/coregrind/m_demangle/demangle.c @@ -141,7 +141,8 @@ void VG_(demangle) ( Bool do_cxx_demangling, Bool do_z_demangling, } /* Possibly undo (1) */ - if (do_cxx_demangling && VG_(clo_demangle)) { + if (do_cxx_demangling && VG_(clo_demangle) + && orig != NULL && orig[0] == '_' && orig[1] == 'Z') { /* !!! vvv STATIC vvv !!! */ static HChar* demangled = NULL; /* !!! ^^^ STATIC ^^^ !!! */