mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 01:51:29 +00:00
Bug 464969 - D language demangling
Patch from witold.baryluk@gmail.com (also added a testcase)
This commit is contained in:
parent
2e873534bb
commit
82282a6676
1
.gitignore
vendored
1
.gitignore
vendored
@ -839,6 +839,7 @@
|
||||
/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
|
||||
|
||||
1
NEWS
1
NEWS
@ -93,6 +93,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
|
||||
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
|
||||
|
||||
@ -121,10 +121,12 @@ void VG_(demangle) ( Bool do_cxx_demangling, Bool do_z_demangling,
|
||||
// - 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 ^^^ !!! */
|
||||
@ -134,7 +136,11 @@ void VG_(demangle) ( Bool do_cxx_demangling, Bool do_z_demangling,
|
||||
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 {
|
||||
|
||||
@ -114,6 +114,8 @@ EXTRA_DIST = \
|
||||
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 \
|
||||
@ -381,6 +383,7 @@ check_PROGRAMS = \
|
||||
bug155125 \
|
||||
bug287260 \
|
||||
bug340392 \
|
||||
bug464969_d_demangle \
|
||||
calloc-overflow \
|
||||
client-msg \
|
||||
clientperm \
|
||||
@ -462,6 +465,8 @@ if DWARF4
|
||||
check_PROGRAMS += dw4
|
||||
endif
|
||||
|
||||
bug464969_d_demangle_SOURCES = bug464969_d_demangle.cpp
|
||||
|
||||
if GZ_ZLIB
|
||||
check_PROGRAMS += cdebug_zlib
|
||||
cdebug_zlib_SOURCES = cdebug.c
|
||||
|
||||
17
memcheck/tests/bug464969_d_demangle.cpp
Normal file
17
memcheck/tests/bug464969_d_demangle.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include <iostream>
|
||||
|
||||
extern "C" void _D4test4findFiPxaZPxa()
|
||||
{
|
||||
int a;
|
||||
if (a)
|
||||
std::cout << "a\n";
|
||||
else
|
||||
std::cout << "!a\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
_D4test4findFiPxaZPxa();
|
||||
}
|
||||
|
||||
|
||||
4
memcheck/tests/bug464969_d_demangle.stderr.exp
Normal file
4
memcheck/tests/bug464969_d_demangle.stderr.exp
Normal file
@ -0,0 +1,4 @@
|
||||
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)
|
||||
|
||||
1
memcheck/tests/bug464969_d_demangle.stdout.exp
Normal file
1
memcheck/tests/bug464969_d_demangle.stdout.exp
Normal file
@ -0,0 +1 @@
|
||||
!a
|
||||
2
memcheck/tests/bug464969_d_demangle.vgtest
Normal file
2
memcheck/tests/bug464969_d_demangle.vgtest
Normal file
@ -0,0 +1,2 @@
|
||||
prog: bug464969_d_demangle
|
||||
vgopts: -q
|
||||
Loading…
x
Reference in New Issue
Block a user