/memcheck/tests/bug155125
/memcheck/tests/bug287260
/memcheck/tests/bug340392
+/memcheck/tests/bug464969_d_demangle
/memcheck/tests/calloc-overflow
/memcheck/tests/cdebug_zlib
/memcheck/tests/cdebug_zlib_gnu
463027 broken check for MPX instruction support in assembler
464476 Firefox fails to start under Valgrind
464859 Build failures with GCC-13 (drd tsan_unittest)
+464969 D language demangling
To see details of a given bug, visit
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
// - C++ mangled symbols start with "_Z" (possibly with exceptions?)
// - Rust "legacy" mangled symbols start with "_Z".
// - Rust "v0" mangled symbols start with "_R".
+ // - D programming language mangled symbols start with "_D".
// XXX: the Java/Rust/Ada demangling here probably doesn't work. See
// https://bugs.kde.org/show_bug.cgi?id=445235 for details.
if (do_cxx_demangling && VG_(clo_demangle)
- && orig != NULL && orig[0] == '_' && (orig[1] == 'Z' || orig[1] == 'R')) {
+ && orig != NULL && orig[0] == '_'
+ && (orig[1] == 'Z' || orig[1] == 'R' || orig[1] == 'D')) {
/* !!! vvv STATIC vvv !!! */
static HChar* demangled = NULL;
/* !!! ^^^ STATIC ^^^ !!! */
VG_(arena_free) (VG_AR_DEMANGLE, demangled);
demangled = NULL;
}
- demangled = ML_(cplus_demangle) ( orig, DMGL_ANSI | DMGL_PARAMS );
+ if (orig[1] == 'D') {
+ demangled = dlang_demangle ( orig, DMGL_ANSI | DMGL_PARAMS );
+ } else {
+ demangled = ML_(cplus_demangle) ( orig, DMGL_ANSI | DMGL_PARAMS );
+ }
*result = (demangled == NULL) ? orig : demangled;
} else {
bug155125.stderr.exp bug155125.vgtest \
bug287260.stderr.exp bug287260.vgtest \
bug340392.stderr.exp bug340392.vgtest \
+ bug464969_d_demangle.stderr.exp bug464969_d_demangle.vgtest \
+ bug464969_d_demangle.stdout.exp \
calloc-overflow.stderr.exp calloc-overflow.vgtest\
cdebug_zlib.stderr.exp cdebug_zlib.vgtest \
cdebug_zlib_gnu.stderr.exp cdebug_zlib_gnu.vgtest \
bug155125 \
bug287260 \
bug340392 \
+ bug464969_d_demangle \
calloc-overflow \
client-msg \
clientperm \
check_PROGRAMS += dw4
endif
+bug464969_d_demangle_SOURCES = bug464969_d_demangle.cpp
+
if GZ_ZLIB
check_PROGRAMS += cdebug_zlib
cdebug_zlib_SOURCES = cdebug.c
--- /dev/null
+#include <iostream>
+
+extern "C" void _D4test4findFiPxaZPxa()
+{
+ int a;
+ if (a)
+ std::cout << "a\n";
+ else
+ std::cout << "!a\n";
+}
+
+int main()
+{
+ _D4test4findFiPxaZPxa();
+}
+
+
--- /dev/null
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: test.find(int, const(char)*) (bug464969_d_demangle.cpp:6)
+ by 0x........: main (bug464969_d_demangle.cpp:14)
+
--- /dev/null
+prog: bug464969_d_demangle
+vgopts: -q