diff options
author | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-13 23:09:30 +0000 |
---|---|---|
committer | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-13 23:09:30 +0000 |
commit | 78631810ff0768f5d5b5fc82cf8c5f6ac260e0c5 (patch) | |
tree | 86b4407658b5168aba27a07662f1ac9c9230e16f /libiberty | |
parent | 427d827ed2add2225992cfb22a2be1d6e13c0cac (diff) | |
download | gcc-78631810ff0768f5d5b5fc82cf8c5f6ac260e0c5.tar.gz |
* testsuite/demangle-expected: Add two tests for anonymous
namespaces.
* cplus-dem.c (gnu_special): Handle anonymous namespaces.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36398 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r-- | libiberty/ChangeLog | 7 | ||||
-rw-r--r-- | libiberty/cplus-dem.c | 19 | ||||
-rw-r--r-- | libiberty/testsuite/demangle-expected | 8 |
3 files changed, 33 insertions, 1 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index ee879c4ca8b..bb91224f4af 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2000-09-14 Hans-Peter Nilsson <hp@axis.com> + + * testsuite/demangle-expected: Add two tests for anonymous + namespaces. + * cplus-dem.c (gnu_special): Handle anonymous namespaces. + 2000-09-10 Mark Mitchell <mark@codesourcery.com> * splay-tree.c (splay_tree_predecessor): New function. @@ -7,7 +13,6 @@ * testsuite/demangle-expected: Add four tests for type_info mangling. - * cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type, for a non-template non-qualified type_info function or node. diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 79b6dc5ccf7..3fe70b4030d 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -2811,6 +2811,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; } diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index fb6448cffdf..a5d72fab0fe 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -2558,3 +2558,11 @@ sockaddr * type_info node --format=gnu __tiPQ25libcwt16option_event_tct1Z12burst_app_ct libcw::option_event_tct<burst_app_ct> * type_info node +# +--format=gnu +_27_GLOBAL_.N.__12burst_app_ct.app_instance +{anonymous}::app_instance +# +--format=gnu +_26_GLOBAL_\$N\$_tmp_n.iilg4Gya\$app_instance +{anonymous}::app_instance |