Use rust_demangle to fix a crash
authorTom Tromey <tom@tromey.com>
Sun, 19 Mar 2023 15:13:10 +0000 (09:13 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 20 Mar 2023 13:47:15 +0000 (07:47 -0600)
commit6e7eef72164c00d6a5a7b0bce9fa01f5481f33cb
treee07c0c6a3e13a4d367fec7b44f025195a6368ff7
parent0fea10f327466dbe949aef39cef5a6bdea91163f
Use rust_demangle to fix a crash

PR rust/30211 points out a crash caused by a particular completion.
This turns out to happen because a Rust minsym winds up in a
C++-specific path in strncmp_iw_with_mode, which ultimately causes the
completer to pass invalid arguments to string::append.

This patch fixes the bug by reordering the language constants so that
Rust comes before C++, and then using rust_demangle.  This ensures
that minsyms are correctly marked as "Rust", avoiding this code and
thus the crash.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=20367
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30211
Reviewed-By: Andrew Burgess <aburgess@redhat.com>
gdb/defs.h
gdb/rust-lang.h
gdb/testsuite/gdb.rust/methods.exp