summaryrefslogtreecommitdiff
path: root/libiberty/cp-demangle.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-20 15:53:06 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-20 15:53:06 +0000
commitabe6933af0078a21a7425fb036d9ca6fcf254ba3 (patch)
treee970f35297e4cc02bc84b48420d39d67eaedf34c /libiberty/cp-demangle.c
parent53366bcba3748c5db5000450372bfdff8d9b0899 (diff)
downloadgcc-abe6933af0078a21a7425fb036d9ca6fcf254ba3.tar.gz
* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
after the identifier. * testsuite/demangle-expected: Add test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74885 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty/cp-demangle.c')
-rw-r--r--libiberty/cp-demangle.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 27e09df7288..1e5684c1520 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1341,6 +1341,13 @@ d_identifier (di, len)
name = d_str (di);
d_advance (di, len);
+ /* A Java mangled name may have a trailing '$' if it is a C++
+ keyword. This '$' is not included in the length count. We just
+ ignore the '$'. */
+ if ((di->options & DMGL_JAVA) != 0
+ && d_peek_char (di) == '$')
+ d_advance (di, 1);
+
/* Look for something which looks like a gcc encoding of an
anonymous namespace, and replace it with a more user friendly
name. */