From patchwork Wed Jan 9 04:50:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 31011 Received: (qmail 108537 invoked by alias); 9 Jan 2019 04:50:49 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 108511 invoked by uid 89); 9 Jan 2019 04:50:48 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.2 required=5.0 tests=BAYES_00, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_SOFTFAIL, TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=chose, editor, bell, sc X-HELO: barracuda.ebox.ca Received: from barracuda.ebox.ca (HELO barracuda.ebox.ca) (96.127.255.19) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 09 Jan 2019 04:50:37 +0000 Received: from smtp.ebox.ca (smtp.electronicbox.net [96.127.255.82]) by barracuda.ebox.ca with ESMTP id mEuR5RpqOkCtREsk (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 08 Jan 2019 23:50:33 -0500 (EST) Received: from simark.lan (unknown [192.222.164.54]) by smtp.ebox.ca (Postfix) with ESMTP id D4A1D441D64; Tue, 8 Jan 2019 23:50:32 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2] gdb: Remove support for old mangling schemes Date: Tue, 8 Jan 2019 23:50:32 -0500 Message-Id: <20190109045032.2146-1-simon.marchi@polymtl.ca> In-Reply-To: <20190108232208.17487-1-simon.marchi@ericsson.com> References: <20190108232208.17487-1-simon.marchi@ericsson.com> MIME-Version: 1.0 X-IsSubscribed: yes From: Simon Marchi New in v2: - Update doc - Add NEWS entry An upcoming sync with gcc's libiberty [1] will remove support for old mangling schemes (GNU v2, Lucid, ARM, HP and EDG). It will remove the cplus_demangle_opname function, so we need to get rid of its usages in GDB (it's a GNU v2 specific function). I think the changes are mostly relatively obvious, some hacks that were necessary to support overloaded operators with GNU v2 mangling are not needed anymore. The change in stabsread.c is perhaps less obvious. I think we could get rid of more code in that region that is specific to old mangling schemes, but I chose to do only the minimal changes required to remove the cplus_demangle_opname uses. There is also a detailed comment just above that explaining how GNU v2 and v3 mangled symbols are handled, I decided to leave it as-is, since I wasn't sure which part to remove, change or leave there. [1] The commit "Remove support for demangling GCC 2.x era mangling schemes.", specifically. gdb/ChangeLog: * gdbtypes.c (check_stub_method_group): Remove handling of old mangling schemes. * linespec.c (find_methods): Likewise. * stabsread.c (read_member_functions): Likewise. * valops.c (search_struct_method): Likewise. (value_struct_elt_for_reference): Likewise. * NEWS: Mention this change. gdb/testsuite/ChangeLog: * gdb.cp/demangle.exp (test_gnu_style_demangling): Rename to... (test_gnuv3_style_demangling): ... this. (test_lucid_style_demangling): Remove. (test_arm_style_demangling): Remove. (test_hp_style_demangling): Remove. (do_tests): Remove calls to the above. gdb/doc/ChangeLog: * gdb.texinfo (Print Settings): Remove mention of specific demangle-style values, just refer to the in-process help. --- gdb/NEWS | 3 + gdb/doc/gdb.texinfo | 28 +- gdb/gdbtypes.c | 32 +- gdb/linespec.c | 11 - gdb/stabsread.c | 20 - gdb/testsuite/gdb.cp/demangle.exp | 1419 +---------------------------- gdb/valops.c | 23 - 7 files changed, 12 insertions(+), 1524 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index c9e801c33efe..14c859f8f6af 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -58,6 +58,9 @@ source code snippets. See the "set style" commands, below, for more information. +* Removed support for old demangling styles arm, edg, gnu, hp and + lucid. + * New targets NXP S12Z s12z-*-elf diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 4bca933195c9..ffc702937b7a 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -10703,31 +10703,9 @@ or demangled form. @cindex symbol decoding style, C@t{++} @kindex set demangle-style @item set demangle-style @var{style} -Choose among several encoding schemes used by different compilers to -represent C@t{++} names. The choices for @var{style} are currently: - -@table @code -@item auto -Allow @value{GDBN} to choose a decoding style by inspecting your program. -This is the default. - -@item gnu -Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm. - -@item hp -Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm. - -@item lucid -Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm. - -@item arm -Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}. -@strong{Warning:} this setting alone is not sufficient to allow -debugging @code{cfront}-generated executables. @value{GDBN} would -require further enhancement to permit that. - -@end table -If you omit @var{style}, you will see a list of possible formats. +Choose among several encoding schemes used by different compilers to represent +C@t{++} names. If you omit @var{style}, you will see a list of possible +formats. @item show demangle-style Display the encoding style currently in use for decoding C@t{++} symbols. diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 6fb32885c995..d1ca304a9245 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -2736,37 +2736,11 @@ check_stub_method_group (struct type *type, int method_id) { int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id); struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id); - int j, found_stub = 0; - for (j = 0; j < len; j++) - if (TYPE_FN_FIELD_STUB (f, j)) - { - found_stub = 1; + for (int j = 0; j < len; j++) + { + if (TYPE_FN_FIELD_STUB (f, j)) check_stub_method (type, method_id, j); - } - - /* GNU v3 methods with incorrect names were corrected when we read - in type information, because it was cheaper to do it then. The - only GNU v2 methods with incorrect method names are operators and - destructors; destructors were also corrected when we read in type - information. - - Therefore the only thing we need to handle here are v2 operator - names. */ - if (found_stub && !startswith (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z")) - { - int ret; - char dem_opname[256]; - - ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, - method_id), - dem_opname, DMGL_ANSI); - if (!ret) - ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, - method_id), - dem_opname, 0); - if (ret) - TYPE_FN_FIELDLIST_NAME (type, method_id) = xstrdup (dem_opname); } } diff --git a/gdb/linespec.c b/gdb/linespec.c index b1ab462e6637..cfa8a53640e1 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1251,17 +1251,6 @@ find_methods (struct type *t, enum language t_lang, const char *name, --method_counter) { const char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter); - char dem_opname[64]; - - if (startswith (method_name, "__") || - startswith (method_name, "op") || - startswith (method_name, "type")) - { - if (cplus_demangle_opname (method_name, dem_opname, DMGL_ANSI)) - method_name = dem_opname; - else if (cplus_demangle_opname (method_name, dem_opname, 0)) - method_name = dem_opname; - } if (symbol_name_compare (method_name, lookup_name, NULL)) { diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 55c7623aaab3..8d2599f56b28 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -2552,7 +2552,6 @@ read_member_functions (struct field_info *fip, const char **pp, } else { - int has_stub = 0; int has_destructor = 0, has_other = 0; int is_v3 = 0; struct next_fnfield *tmp_sublist; @@ -2616,8 +2615,6 @@ read_member_functions (struct field_info *fip, const char **pp, tmp_sublist = sublist; while (tmp_sublist != NULL) { - if (tmp_sublist->fn_field.is_stub) - has_stub = 1; if (tmp_sublist->fn_field.physname[0] == '_' && tmp_sublist->fn_field.physname[1] == 'Z') is_v3 = 1; @@ -2704,23 +2701,6 @@ read_member_functions (struct field_info *fip, const char **pp, "~", main_fn_name, (char *)NULL); xfree (main_fn_name); } - else if (!has_stub) - { - char dem_opname[256]; - int ret; - - ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name, - dem_opname, DMGL_ANSI); - if (!ret) - ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name, - dem_opname, 0); - if (ret) - new_fnlist->fn_fieldlist.name - = ((const char *) - obstack_copy0 (&objfile->objfile_obstack, dem_opname, - strlen (dem_opname))); - xfree (main_fn_name); - } new_fnlist->fn_fieldlist.fn_fields = OBSTACK_CALLOC (&objfile->objfile_obstack, length, fn_field); diff --git a/gdb/testsuite/gdb.cp/demangle.exp b/gdb/testsuite/gdb.cp/demangle.exp index 698231b82b43..9231b54f787d 100644 --- a/gdb/testsuite/gdb.cp/demangle.exp +++ b/gdb/testsuite/gdb.cp/demangle.exp @@ -110,419 +110,13 @@ proc test_demangling_exact {test result} { test_demangling_core gdb_test_exact $test $result } - - # -# Test gnu style name demangling +# Test gnu-v3 style name demangling # -proc test_gnu_style_demangling {} { +proc test_gnuv3_style_demangling {} { global gdb_prompt - test_demangling "gnu: Abort__FP6EditoriPCc" \ - "Abort\[(\]+Editor \[*\]+, int, (const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue" "ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *)" - test_demangling "gnu: Append__15NameChooserViewPCc" \ - "NameChooserView::Append\[(\]+(const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic" "ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *)" - test_demangling_exact "gnu: AtEnd__13ivRubberGroup" "ivRubberGroup::AtEnd(void)" - test_demangling_exact "gnu: BgFilter__9ivTSolverP12ivInteractor" "ivTSolver::BgFilter(ivInteractor *)" - test_demangling "gnu: BitPatterntoa__FRC10BitPatternccc" \ - "BitPatterntoa\[(\]+(const BitPattern|BitPattern const) &, char, char, char\[)\]+" - test_demangling_exact "gnu: Check__6UArrayi" "UArray::Check(int)" - test_demangling_exact "gnu: CoreConstDecls__8TextCodeR7ostream" "TextCode::CoreConstDecls(ostream &)" - test_demangling_exact "gnu: Detach__8StateVarP12StateVarView" "StateVar::Detach(StateVarView *)" - test_demangling_exact "gnu: Done__9ComponentG8Iterator" "Component::Done(Iterator)" - test_demangling "gnu: DrawDestinationTransformedImage__FP7_XImageiiT0iiUlUiiiUiUlUlP4_XGCRC13ivTransformeriiii" \ - "DrawDestinationTransformedImage\[(\]+_XImage \[*\]+, int, int, _XImage \[*\]+, int, int, unsigned long, unsigned int, int, int, unsigned int, unsigned long, unsigned long, _XGC \[*\]+, (const ivTransformer|ivTransformer const) &, int, int, int, int\[)\]+" - - test_demangling "gnu: Edit__12StringEditorPCcii" \ - "StringEditor::Edit\[(\]+(const char|char const) \[*\]+, int, int\[)\]+" - test_demangling_exact "gnu: Effect__11RelateManipR7ivEvent" "RelateManip::Effect(ivEvent &)" - test_demangling "gnu: FilterName__FPCc" \ - "FilterName\[(\]+(const char|char const) \[*\]+\[)\]+" - test_demangling "gnu: Filter__6PSTextPCci" \ - "PSText::Filter\[(\]+(const char|char const) \[*\]+, int\[)\]+" - test_demangling "gnu: FindColor__7CatalogPCciii" \ - "Catalog::FindColor\[(\]+(const char|char const) \[*\]+, int, int, int\[)\]+" - test_demangling_exact "gnu: FindFixed__FRP4CNetP4CNet" "FindFixed(CNet *&, CNet *)" - test_demangling "gnu: FindFont__7CatalogPCcN21" \ - "Catalog::FindFont\[(\]+(const char|char const) \[*\]+, (const char|char const) \[*\]+, (const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: Fix48_abort__FR8twolongs" "Fix48_abort(twolongs &)" - test_demangling_exact "gnu: GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2" "iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &)" - test_demangling_exact "gnu: GetBgColor__C9ivPainter" "ivPainter::GetBgColor(void) const" - - test_demangling "gnu: Iisdouble__FPC6IntRep" \ - "Iisdouble\[(\]+(const IntRep|IntRep const) \[*\]+\[)\]+" - test_demangling_exact "gnu: InsertBody__15H_PullrightMenuii" "H_PullrightMenu::InsertBody(int, int)" - test_demangling_exact "gnu: InsertCharacter__9TextManipc" "TextManip::InsertCharacter(char)" - - test_demangling_exact "gnu: InsertToplevel__7ivWorldP12ivInteractorT1" "ivWorld::InsertToplevel(ivInteractor *, ivInteractor *)" - test_demangling_exact "gnu: InsertToplevel__7ivWorldP12ivInteractorT1iiUi" "ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int)" - test_demangling "gnu: IsADirectory__FPCcR4stat" \ - "IsADirectory\[(\]+(const char|char const) \[*\]+, stat &\[)\]+" - test_demangling_exact "gnu: IsAGroup__FP11GraphicViewP11GraphicComp" "IsAGroup(GraphicView *, GraphicComp *)" - test_demangling_exact "gnu: IsA__10ButtonCodeUl" "ButtonCode::IsA(unsigned long)" - - test_demangling_exact "gnu: ReadName__FR7istreamPc" "ReadName(istream &, char *)" - test_demangling_exact "gnu: Redraw__13StringBrowseriiii" "StringBrowser::Redraw(int, int, int, int)" - test_demangling_exact "gnu: Rotate__13ivTransformerf" "ivTransformer::Rotate(float)" - test_demangling_exact "gnu: Rotated__C13ivTransformerf" "ivTransformer::Rotated(float) const" - test_demangling_exact "gnu: Round__Ff" "Round(float)" - - test_demangling_exact "gnu: SetExport__16MemberSharedNameUi" "MemberSharedName::SetExport(unsigned int)" - test_demangling_exact "gnu: Set__14ivControlState13ControlStatusUi" "ivControlState::Set(ControlStatus, unsigned int)" - test_demangling_exact "gnu: Set__5DFacePcii" "DFace::Set(char *, int, int)" - - test_demangling_exact "gnu: VConvert__9ivTSolverP12ivInteractorRP8TElementT2" "ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&)" - test_demangling_exact "gnu: VConvert__9ivTSolverP7ivTGlueRP8TElement" "ivTSolver::VConvert(ivTGlue *, TElement *&)" - test_demangling_exact "gnu: VOrder__9ivTSolverUiRP12ivInteractorT2" "ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&)" - test_demangling "gnu: Valid__7CatalogPCcRP4Tool" \ - "Catalog::Valid\[(\]+(const char|char const) \[*\]+, Tool \[*\]+&\[)\]+" - test_demangling_exact "gnu: _10PageButton\$__both" "PageButton::__both" - test_demangling_exact "gnu: _3RNG\$singleMantissa" "RNG::singleMantissa" - test_demangling_exact "gnu: _5IComp\$_release" "IComp::_release" - test_demangling_exact "gnu: _\$_10BitmapComp" "BitmapComp::~BitmapComp(void)" - - test_demangling_exact "gnu: _\$_9__io_defs" "__io_defs::~__io_defs(void)" - test_demangling_exact "gnu: _\$_Q23foo3bar" "foo::bar::~bar(void)" - test_demangling_exact "gnu: _\$_Q33foo3bar4bell" "foo::bar::bell::~bell(void)" - test_demangling_exact "gnu: __10ivTelltaleiP7ivGlyph" "ivTelltale::ivTelltale(int, ivGlyph *)" - test_demangling_exact "gnu: __10ivViewportiP12ivInteractorUi" "ivViewport::ivViewport(int, ivInteractor *, unsigned int)" - test_demangling_exact "gnu: __10ostrstream" "ostrstream::ostrstream(void)" - test_demangling_exact "gnu: __10ostrstreamPcii" "ostrstream::ostrstream(char *, int, int)" - test_demangling "gnu: __11BasicDialogiPCcP13ivButtonStateN22Ui" \ - "BasicDialog::BasicDialog\[(\]+int, (const char|char const) \[*\]+, ivButtonState \[*\]+, (const char|char const) \[*\]+, (const char|char const) \[*\]+, unsigned int\[)\]+" - test_demangling_exact "gnu: __11BitmapTablei" "BitmapTable::BitmapTable(int)" - test_demangling_exact "gnu: __12ViewportCodeP12ViewportComp" "ViewportCode::ViewportCode(ViewportComp *)" - test_demangling "gnu: __12iv2_6_BorderiPCci" \ - "iv2_6_Border::iv2_6_Border\[(\]+int, (const char|char const) \[*\]+, int\[)\]+" - test_demangling_exact "gnu: __12iv2_6_Borderii" "iv2_6_Border::iv2_6_Border(int, int)" - test_demangling "gnu: __12ivBackgroundiP7ivGlyphPC7ivColor" \ - "ivBackground::ivBackground\[(\]+int, ivGlyph \[*\]+, (const ivColor|ivColor const) \[*\]+\[)\]+" - test_demangling_exact "gnu: __12ivBreak_Listl" "ivBreak_List::ivBreak_List(long)" - test_demangling "gnu: __14TextInteractoriPCcUi" \ - "TextInteractor::TextInteractor\[(\]+int, (const char|char const) \[*\]+, unsigned int\[)\]+" - test_demangling_exact "gnu: __14iv2_6_MenuItemiP12ivInteractor" "iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *)" - test_demangling "gnu: __14iv2_6_MenuItemiPCcP12ivInteractor" \ - "iv2_6_MenuItem::iv2_6_MenuItem\[(\]+int, (const char|char const) \[*\]+, ivInteractor \[*\]+\[)\]+" - - test_demangling_exact "gnu: __20DisplayList_IteratorR11DisplayList" "DisplayList_Iterator::DisplayList_Iterator(DisplayList &)" - test_demangling_exact "gnu: __3fooRT0" "foo::foo(foo &)" - test_demangling_exact "gnu: __3fooiN31" "foo::foo(int, int, int, int)" - test_demangling "gnu: __3fooiPCc" \ - "foo::foo\[(\]+int, (const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: __3fooiRT0iT2iT2" "foo::foo(int, foo &, int, foo &, int, foo &)" - test_demangling "gnu: __6GetOptiPPcPCc" \ - "GetOpt::GetOpt\[(\]+int, char \[*\]+\[*\]+, (const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: __6KeyMapPT0" "KeyMap::KeyMap(KeyMap *)" - test_demangling "gnu: __7ivWorldPCcRiPPcPC12ivOptionDescPC14ivPropertyData" \ - "ivWorld::ivWorld\[(\]+(const char|char const) \[*\]+, int &, char \[*\]+\[*\]+, (const ivOptionDesc|ivOptionDesc const) \[*\]+, (const ivPropertyData|ivPropertyData const) \[*\]+\[)\]+" - test_demangling "gnu: __7procbufPCci" \ - "procbuf::procbuf\[(\]+(const char|char const) \[*\]+, int\[)\]+" - test_demangling_exact "gnu: __8ArrowCmdP6EditorUiUi" "ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int)" - - test_demangling_exact "gnu: __9F_EllipseiiiiP7Graphic" "F_Ellipse::F_Ellipse(int, int, int, int, Graphic *)" - test_demangling_exact "gnu: __9FrameDataP9FrameCompi" "FrameData::FrameData(FrameComp *, int)" - test_demangling_exact "gnu: __9HVGraphicP9CanvasVarP7Graphic" "HVGraphic::HVGraphic(CanvasVar *, Graphic *)" - test_demangling_exact "gnu: __Q23foo3bar" "foo::bar::bar(void)" - test_demangling_exact "gnu: __Q33foo3bar4bell" "foo::bar::bell::bell(void)" - test_demangling_exact "gnu: __aa__3fooRT0" "foo::operator&&(foo &)" - test_demangling_exact "gnu: __aad__3fooRT0" "foo::operator&=(foo &)" - test_demangling_exact "gnu: __ad__3fooRT0" "foo::operator&(foo &)" - test_demangling_exact "gnu: __adv__3fooRT0" "foo::operator/=(foo &)" - test_demangling_exact "gnu: __aer__3fooRT0" "foo::operator^=(foo &)" - test_demangling_exact "gnu: __als__3fooRT0" "foo::operator<<=(foo &)" - test_demangling_exact "gnu: __amd__3fooRT0" "foo::operator%=(foo &)" - test_demangling_exact "gnu: __ami__3fooRT0" "foo::operator-=(foo &)" - test_demangling_exact "gnu: __aml__3FixRT0" "Fix::operator*=(Fix &)" - test_demangling_exact "gnu: __aml__5Fix16i" "Fix16::operator*=(int)" - test_demangling_exact "gnu: __aml__5Fix32RT0" "Fix32::operator*=(Fix32 &)" - test_demangling_exact "gnu: __aor__3fooRT0" "foo::operator|=(foo &)" - test_demangling_exact "gnu: __apl__3fooRT0" "foo::operator+=(foo &)" - test_demangling_exact "gnu: __ars__3fooRT0" "foo::operator>>=(foo &)" - - test_demangling_exact "gnu: __as__3fooRT0" "foo::operator=(foo &)" - test_demangling_exact "gnu: __cl__3fooRT0" "foo::operator()(foo &)" - test_demangling_exact "gnu: __cl__6Normal" "Normal::operator()(void)" - test_demangling_exact "gnu: __cl__6Stringii" "String::operator()(int, int)" - test_demangling_exact "gnu: __cm__3fooRT0" "foo::operator, (foo &)" - test_demangling_exact "gnu: __co__3foo" "foo::operator~(void)" - test_demangling_exact "gnu: __dl__3fooPv" "foo::operator delete(void *)" - test_demangling_exact "gnu: __dv__3fooRT0" "foo::operator/(foo &)" - test_demangling_exact "gnu: __eq__3fooRT0" "foo::operator==(foo &)" - test_demangling_exact "gnu: __er__3fooRT0" "foo::operator^(foo &)" - test_demangling_exact "gnu: __ge__3fooRT0" "foo::operator>=(foo &)" - test_demangling_exact "gnu: __gt__3fooRT0" "foo::operator>(foo &)" - test_demangling_exact "gnu: __le__3fooRT0" "foo::operator<=(foo &)" - test_demangling_exact "gnu: __ls__3fooRT0" "foo::operator<<(foo &)" - test_demangling_exact "gnu: __ls__FR7ostreamPFR3ios_R3ios" "operator<<(ostream &, ios &(*)(ios &))" - test_demangling_exact "gnu: __ls__FR7ostreamR3Fix" "operator<<(ostream &, Fix &)" - test_demangling_exact "gnu: __lt__3fooRT0" "foo::operator<(foo &)" - test_demangling_exact "gnu: __md__3fooRT0" "foo::operator%(foo &)" - test_demangling_exact "gnu: __mi__3fooRT0" "foo::operator-(foo &)" - test_demangling_exact "gnu: __ml__3fooRT0" "foo::operator*(foo &)" - test_demangling_exact "gnu: __mm__3fooi" "foo::operator--(int)" - - test_demangling_exact "gnu: __ne__3fooRT0" "foo::operator!=(foo &)" - test_demangling "gnu: __ne__FRC7ComplexT0" \ - "operator!=\[(\]+(const Complex|Complex const) &, (const Complex|Complex const) &\[)\]+" - test_demangling "gnu: __ne__FRC7Complexd" \ - "operator!=\[(\]+(const Complex|Complex const) &, double\[)\]+" - test_demangling "gnu: __ne__FRC9SubStringRC6String" \ - "operator!=\[(\]+(const SubString|SubString const) &, (const String|String const) &\[)\]+" - test_demangling_exact "gnu: __nt__3foo" "foo::operator!(void)" - test_demangling_exact "gnu: __nw__3fooi" "foo::operator new(int)" - test_demangling_exact "gnu: __oo__3fooRT0" "foo::operator||(foo &)" - test_demangling_exact "gnu: __opPc__3foo" "foo::operator char *(void)" - test_demangling_exact "gnu: __opi__3foo" "foo::operator int(void)" - test_demangling_exact "gnu: __or__3fooRT0" "foo::operator|(foo &)" - test_demangling_exact "gnu: __pl__3fooRT0" "foo::operator+(foo &)" - test_demangling_exact "gnu: __pp__3fooi" "foo::operator++(int)" - test_demangling_exact "gnu: __rf__3foo" "foo::operator->(void)" - test_demangling_exact "gnu: __rm__3fooRT0" "foo::operator->*(foo &)" - test_demangling_exact "gnu: __rs__3fooRT0" "foo::operator>>(foo &)" - test_demangling "gnu: __vc__3fooRT0" "foo::operator\\\[\\\]\\(foo &\\)" - test_demangling "gnu: _gsub__6StringRC5RegexPCci" \ - "String::_gsub\[(\]+(const Regex|Regex const) &, (const char|char const) \[*\]+, int\[)\]+" - test_demangling_exact "gnu: _new_Fix__FUs" "_new_Fix(unsigned short)" - - # gcc 2.4.5 (and earlier) style virtual tables. We want to continue to - # correctly demangle these even if newer compilers use a different form. - test_demangling_exact "gnu: _vt.foo" "foo virtual table" - test_demangling_exact "gnu: _vt.foo.bar" "foo::bar virtual table" - test_demangling_exact "gnu: _vt\$foo" "foo virtual table" - test_demangling_exact "gnu: _vt\$foo\$bar" "foo::bar virtual table" - - test_demangling_exact "gnu: append__7ivGlyphPT0" "ivGlyph::append(ivGlyph *)" - test_demangling "gnu: arg__FRC7Complex" \ - "arg\[(\]+(const Complex|Complex const) &\[)\]+" - test_demangling_exact "gnu: clearok__FP7_win_sti" "clearok(_win_st *, int)" - - test_demangling_exact "gnu: complexfunc2__FPFPc_i" "complexfunc2(int (*)(char *))" - test_demangling_exact "gnu: complexfunc3__FPFPFPl_s_i" "complexfunc3(int (*)(short (*)(long *)))" - test_demangling_exact "gnu: complexfunc4__FPFPFPc_s_i" "complexfunc4(int (*)(short (*)(char *)))" - test_demangling_exact "gnu: complexfunc5__FPFPc_PFl_i" "complexfunc5(int (*(*)(char *))(long))" - test_demangling_exact "gnu: complexfunc6__FPFPi_PFl_i" "complexfunc6(int (*(*)(int *))(long))" - test_demangling_exact "gnu: complexfunc7__FPFPFPc_i_PFl_i" "complexfunc7(int (*(*)(int (*)(char *)))(long))" - test_demangling "gnu: contains__C9BitStringRC10BitPattern" \ - "BitString::contains\[(\]+(const BitPattern|BitPattern const) &\[)\]+ const" - test_demangling "gnu: contains__C9BitStringRC12BitSubStringi" \ - "BitString::contains\[(\]+(const BitSubString|BitSubString const) &, int\[)\]+ const" - test_demangling "gnu: contains__C9BitStringRT0" \ - "BitString::contains\[(\]+(const BitString|BitString const) &\[)\]+ const" - test_demangling "gnu: div__FPC6IntRepT0P6IntRep" \ - "div\[(\]+(const IntRep|IntRep const) \[*\]+, (const IntRep|IntRep const) \[*\]+, IntRep \[*\]+\[)\]+" - test_demangling "gnu: div__FPC6IntReplP6IntRep" \ - "div\[(\]+(const IntRep|IntRep const) \[*\]+, long, IntRep \[*\]+\[)\]+" - test_demangling "gnu: div__FRC8RationalT0R8Rational" \ - "div\[(\]+(const Rational|Rational const) &, (const Rational|Rational const) &, Rational &\[)\]+" - test_demangling "gnu: divide__FRC7IntegerT0R7IntegerT2" \ - "divide\[(\]+(const Integer|Integer const) &, (const Integer|Integer const) &, Integer &, Integer &\[)\]+" - test_demangling "gnu: divide__FRC7IntegerlR7IntegerRl" \ - "divide\[(\]+(const Integer|Integer const) &, long, Integer &, long &\[)\]+" - test_demangling "gnu: enable__14DocumentViewerPCcUi" \ - "DocumentViewer::enable\[(\]+(const char|char const) \[*\]+, unsigned int\[)\]+" - - test_demangling_exact "gnu: foo__FiN30" "foo(int, int, int, int)" - test_demangling_exact "gnu: foo__FiR3fooiT1iT1" "foo(int, foo &, int, foo &, int, foo &)" - test_demangling_exact "gnu: foo___3barl" "bar::foo_(long)" - test_demangling_exact "gnu: insert__15ivClippingStacklRP8_XRegion" "ivClippingStack::insert(long, _XRegion *&)" - test_demangling_exact "gnu: insert__16ChooserInfo_ListlR11ChooserInfo" "ChooserInfo_List::insert(long, ChooserInfo &)" - test_demangling_exact "gnu: insert__17FontFamilyRepListlRP15ivFontFamilyRep" "FontFamilyRepList::insert(long, ivFontFamilyRep *&)" - test_demangling_exact "gnu: leaveok__FP7_win_stc" "leaveok(_win_st *, char)" - test_demangling_exact "gnu: left_mover__C7ivMFKitP12ivAdjustableP7ivStyle" "ivMFKit::left_mover(ivAdjustable *, ivStyle *) const" - test_demangling "gnu: matches__C9BitStringRC10BitPatterni" \ - "BitString::matches\[(\]+(const BitPattern|BitPattern const) &, int\[)\]+ const" - test_demangling "gnu: matches__C9SubStringRC5Regex" \ - "SubString::matches\[(\]+(const Regex|Regex const) &\[)\]+ const" - - test_demangling_exact "gnu: overload1arg__FSc" "overload1arg(signed char)" - test_demangling_exact "gnu: overload1arg__FUc" "overload1arg(unsigned char)" - test_demangling_exact "gnu: overload1arg__FUi" "overload1arg(unsigned int)" - test_demangling_exact "gnu: overload1arg__FUl" "overload1arg(unsigned long)" - test_demangling_exact "gnu: overload1arg__FUs" "overload1arg(unsigned short)" - test_demangling_exact "gnu: overload1arg__Fc" "overload1arg(char)" - test_demangling_exact "gnu: overload1arg__Fd" "overload1arg(double)" - test_demangling_exact "gnu: overload1arg__Ff" "overload1arg(float)" - test_demangling_exact "gnu: overload1arg__Fi" "overload1arg(int)" - test_demangling_exact "gnu: overload1arg__Fl" "overload1arg(long)" - test_demangling_exact "gnu: overload1arg__Fs" "overload1arg(short)" - test_demangling_exact "gnu: overload1arg__Fv" "overload1arg(void)" - test_demangling_exact "gnu: overloadargs__Fi" "overloadargs(int)" - test_demangling_exact "gnu: overloadargs__Fii" "overloadargs(int, int)" - test_demangling_exact "gnu: overloadargs__Fiii" "overloadargs(int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiii" "overloadargs(int, int, int, int)" - - test_demangling_exact "gnu: overloadargs__Fiiiii" "overloadargs(int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiii" "overloadargs(int, int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiiii" "overloadargs(int, int, int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiiiii" "overloadargs(int, int, int, int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiiiiii" "overloadargs(int, int, int, int, int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiiiiiii" "overloadargs(int, int, int, int, int, int, int, int, int, int)" - test_demangling_exact "gnu: overloadargs__Fiiiiiiiiiii" "overloadargs(int, int, int, int, int, int, int, int, int, int, int)" - test_demangling "gnu: pick__13ivCompositionP8ivCanvasRC12ivAllocationiR5ivHit" \ - "ivComposition::pick\[(\]+ivCanvas \[*\]+, (const ivAllocation|ivAllocation const) &, int, ivHit &\[)\]+" - test_demangling "gnu: pointer__C11ivHScrollerRC7ivEventRC12ivAllocation" \ - "ivHScroller::pointer\[(\]+(const ivEvent|ivEvent const) &, (const ivAllocation|ivAllocation const) &\[)\]+ const" - test_demangling_exact "gnu: poke__8ivRasterUlUlffff" "ivRaster::poke(unsigned long, unsigned long, float, float, float, float)" - test_demangling_exact "gnu: polar__Fdd" "polar(double, double)" - test_demangling "gnu: read__10osStdInputRPCc" \ - "osStdInput::read\[(\]+(const char|char const) \[*\]+&\[)\]+" - - test_demangling_exact "gnu: scale__13ivTransformerff" "ivTransformer::scale(float, float)" - test_demangling "gnu: scanw__12CursesWindowPCce" \ - "CursesWindow::scanw\[(\]+(const char|char const) \[*\]+,...\[)\]+" - test_demangling "gnu: scmp__FPCcT0" \ - "scmp\[(\]+(const char|char const) \[*\]+, (const char|char const) \[*\]+\[)\]+" - test_demangling_exact "gnu: sgetn__7filebufPci" "filebuf::sgetn(char *, int)" - test_demangling_exact "gnu: shift__FP5_FrepiT0" "shift(_Frep *, int, _Frep *)" - test_demangling_exact "gnu: test__C6BitSeti" "BitSet::test(int) const" - test_demangling_exact "gnu: test__C6BitSetii" "BitSet::test(int, int) const" - test_demangling "gnu: testbit__FRC7Integerl" \ - "testbit\[(\]+(const Integer|Integer const) &, long\[)\]+" - test_demangling_exact "gnu: text_source__8Documentl" "Document::text_source(long)" - test_demangling_exact "gnu: variance__6Erlangd" "Erlang::variance(double)" - test_demangling "gnu: vform__8iostreamPCcPc" \ - "iostream::vform\[(\]+(const char|char const) \[*\]+, char \[*\]+\[)\]+" - test_demangling_exact "gnu: view__14DocumentViewerP8ItemViewP11TabularItem" "DocumentViewer::view(ItemView *, TabularItem *)" - test_demangling_exact "gnu: xy_extents__11ivExtensionffff" "ivExtension::xy_extents(float, float, float, float)" - test_demangling_exact "gnu: zero__8osMemoryPvUi" "osMemory::zero(void *, unsigned int)" - test_demangling_exact "gnu: _2T4\$N" "T4::N" - test_demangling_exact "gnu: _Q22T42t1\$N" "T4::t1::N" - test_demangling_exact "gnu: get__2T1" "T1::get(void)" - test_demangling_exact "gnu: get__Q22T11a" "T1::a::get(void)" - test_demangling_exact "gnu: get__Q32T11a1b" "T1::a::b::get(void)" - test_demangling_exact "gnu: get__Q42T11a1b1c" "T1::a::b::c::get(void)" - test_demangling_exact "gnu: get__Q52T11a1b1c1d" "T1::a::b::c::d::get(void)" - test_demangling_exact "gnu: put__2T1i" "T1::put(int)" - test_demangling_exact "gnu: put__Q22T11ai" "T1::a::put(int)" - test_demangling_exact "gnu: put__Q32T11a1bi" "T1::a::b::put(int)" - test_demangling_exact "gnu: put__Q42T11a1b1ci" "T1::a::b::c::put(int)" - test_demangling_exact "gnu: put__Q52T11a1b1c1di" "T1::a::b::c::d::put(int)" - - test_demangling_exact "gnu: bar__3fooPv" "foo::bar(void *)" - test_demangling "gnu: bar__3fooPCv" \ - "foo::bar\[(\]+(const void|void const) *\[*\]+\[)\]+" - test_demangling_exact "gnu: bar__C3fooPv" "foo::bar(void *) const" - test_demangling "gnu: bar__C3fooPCv" \ - "foo::bar\[(\]+(const void|void const) *\[*\]+\[)\]+ const" - test_demangling_exact "gnu: __eq__3fooRT0" "foo::operator==(foo &)" - test_demangling "gnu: __eq__3fooRC3foo" \ - "foo::operator==\[(\]+(const foo|foo const) &\[)\]+" - test_demangling_exact "gnu: __eq__C3fooR3foo" "foo::operator==(foo &) const" - test_demangling "gnu: __eq__C3fooRT0" \ - "foo::operator==\[(\]+(const foo|foo const) &\[)\]+ const" - - test_demangling_exact "gnu: elem__t6vector1Zdi" "vector::elem(int)" - test_demangling_exact "gnu: elem__t6vector1Zii" "vector::elem(int)" - test_demangling_exact "gnu: __t6vector1Zdi" "vector::vector(int)" - test_demangling_exact "gnu: __t6vector1Zii" "vector::vector(int)" - test_demangling_exact "gnu: _\$_t6vector1Zdi" "vector::~vector(int)" - test_demangling_exact "gnu: _\$_t6vector1Zii" "vector::~vector(int)" - - test_demangling_exact "gnu: __nw__t2T11ZcUi" "T1::operator new(unsigned int)" - test_demangling_exact "gnu: __nw__t2T11Z1tUi" "T1::operator new(unsigned int)" - test_demangling_exact "gnu: __dl__t2T11ZcPv" "T1::operator delete(void *)" - test_demangling_exact "gnu: __dl__t2T11Z1tPv" "T1::operator delete(void *)" - test_demangling_exact "gnu: __t2T11Zci" "T1::T1(int)" - test_demangling_exact "gnu: __t2T11Zc" "T1::T1(void)" - test_demangling_exact "gnu: __t2T11Z1ti" "T1::T1(int)" - test_demangling_exact "gnu: __t2T11Z1t" "T1::T1(void)" - - test_demangling_exact "gnu: __Q2t4List1Z10VHDLEntity3Pix" \ - "List::Pix::Pix(void)" - - test_demangling_exact "gnu: __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element" \ - "List::Pix::Pix(List::element *)" - - test_demangling_exact "gnu: __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix" \ - "List::Pix::Pix(List::Pix const &)" - - test_demangling_exact "gnu: __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0" \ - "List::element::element(VHDLEntity const &, List::element *)" - - test_demangling_exact "gnu: __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element" \ - "List::element::element(List::element const &)" - - test_demangling_exact "gnu: __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity" \ - "VHDLLibrary::operator()(PixX >) const" - - test_demangling_exact "gnu: __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix" \ - "List::operator()(List::Pix const &) const" - - test_demangling_exact "gnu: __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix" \ - "operator!=(void *, List::Pix const &)" - - test_demangling_exact "gnu: __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity" \ - "operator!=(void *, PixX > const &)" - - test_demangling_exact "gnu: __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity" \ - "List::List(List const &)" - - test_demangling_exact "gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity" \ - "PixX >::PixX(void)" - - test_demangling_exact "gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix" \ - "PixX >::PixX(VHDLLibraryRep *, List::Pix)" - - test_demangling_exact "gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity" \ - "PixX >::PixX(PixX > const &)" - - test_demangling_exact "gnu: nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity" \ - "VHDLLibrary::nextE(PixX > &) const" - - test_demangling_exact "gnu: next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix" \ - "List::next(List::Pix &) const" - - test_demangling_exact "gnu: _GLOBAL_\$D\$set" "global destructors keyed to set" - - test_demangling_exact "gnu: _GLOBAL_\$I\$set" "global constructors keyed to set" - - test_demangling_exact "gnu: __as__t5ListS1ZUiRCt5ListS1ZUi" \ - "ListS::operator=(ListS const &)" - - test_demangling_exact "gnu: __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix" \ - "ListS::operator()(ListS::Vix const &) const" - - test_demangling_exact "gnu: __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix" \ - "SetLS::operator()(SetLS::Vix const &) const" - - test_demangling_exact "gnu: __t10ListS_link1ZUiRCUiPT0" \ - "ListS_link::ListS_link(unsigned int const &, ListS_link *)" - - test_demangling_exact "gnu: __t10ListS_link1ZUiRCt10ListS_link1ZUi" \ - "ListS_link::ListS_link(ListS_link const &)" - - test_demangling_exact "gnu: __t5ListS1ZUiRCt5ListS1ZUi" \ - "ListS::ListS(ListS const &)" - - test_demangling_exact "gnu: next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix" \ - "ListS::next(ListS::Vix &) const" - - test_demangling_exact "gnu: __ne__FPvRCQ2t5SetLS1ZUi3Vix" \ - "operator!=(void *, SetLS::Vix const &)" - test_demangling_exact "gnu: __t8ListElem1Z5LabelRt4List1Z5Label" \ - "ListElem