From d3e8500506c29c035b8f35c09019b6736f556acd Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Wed, 13 Sep 2000 22:59:40 +0000 Subject: * testsuite/demangle-expected: Add two tests for anonymous namespaces. * cplus-dem.c (gnu_special): Handle anonymous namespaces. --- libiberty/cplus-dem.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libiberty/cplus-dem.c') diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index da95133..8a672c6 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -2812,6 +2812,25 @@ gnu_special (work, mangled, declp) success = 0; break; } + + if (n > 10 && strncmp (*mangled, "_GLOBAL_", 8) == 0 + && (*mangled)[9] == 'N' + && (*mangled)[8] == (*mangled)[10] + && strchr (cplus_markers, (*mangled)[8])) + { + /* A member of the anonymous namespace. There's information + about what identifier or filename it was keyed to, but + it's just there to make the mangled name unique; we just + step over it. */ + string_append (declp, "{anonymous}"); + (*mangled) += n; + + /* Now p points to the marker before the N, so we need to + update it to the first marker after what we consumed. */ + p = strpbrk (*mangled, cplus_markers); + break; + } + string_appendn (declp, *mangled, n); (*mangled) += n; } -- cgit v1.1