From 4ae80ffc55cd44fe9a5527403f07fee70307b2d7 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 7 Jan 2019 18:05:36 -0500 Subject: Revert "Sync libiberty sources with master version in gcc repository. Updated stabs demangling and cxxfilt tests to match." The previous commit breaks the GDB build, which is still using functions cplus_demangle_opname & co. Since removing these usages is not an obvious fix, let's revert this patch until we get rid of them. --- binutils/ChangeLog | 8 ------- binutils/stabs.c | 26 ++++++++++++++++------ binutils/testsuite/binutils-all/cxxfilt.exp | 34 +++++------------------------ 3 files changed, 24 insertions(+), 44 deletions(-) (limited to 'binutils') diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 35fca3b..d7f1685 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,11 +1,3 @@ -2019-01-07 Nick Clifton - - PR 24044 - * stabs.c (parse_stab_argtypes): Remove call to - cplus_mangle_opcode. - * testsuite/binutils-all/cxxfilt.exp: Replace tests of v2 encoding - with v3 encoding. Add escape for known failures. - 2018-12-25 Yoshinori Sato * readelf.c (get_machine_flags): Add RXv3 output. diff --git a/binutils/stabs.c b/binutils/stabs.c index e84aa6f..18788b9 100644 --- a/binutils/stabs.c +++ b/binutils/stabs.c @@ -3037,15 +3037,27 @@ parse_stab_argtypes (void *dhandle, struct stab_handle *info, && fieldname[1] == 'p' && (fieldname[2] == '$' || fieldname[2] == '.')) { - /* Opname selection is no longer supported by libiberty's demangler. */ - return DEBUG_TYPE_NULL; - } + const char *opname; - physname = (char *) xmalloc (mangled_name_len); - if (is_constructor) - physname[0] = '\0'; + opname = cplus_mangle_opname (fieldname + 3, 0); + if (opname == NULL) + { + fprintf (stderr, _("No mangling for \"%s\"\n"), fieldname); + return DEBUG_TYPE_NULL; + } + mangled_name_len += strlen (opname); + physname = (char *) xmalloc (mangled_name_len); + strncpy (physname, fieldname, 3); + strcpy (physname + 3, opname); + } else - strcpy (physname, fieldname); + { + physname = (char *) xmalloc (mangled_name_len); + if (is_constructor) + physname[0] = '\0'; + else + strcpy (physname, fieldname); + } physname_len = strlen (physname); strcat (physname, buf); diff --git a/binutils/testsuite/binutils-all/cxxfilt.exp b/binutils/testsuite/binutils-all/cxxfilt.exp index 203a703..116caeb 100644 --- a/binutils/testsuite/binutils-all/cxxfilt.exp +++ b/binutils/testsuite/binutils-all/cxxfilt.exp @@ -14,30 +14,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. -# For some reason cxxfilt is not working on the following targets. -# FIXME: Investigate why. -if { [istarget "cris*-*-*"] || \ - [istarget "cr16-*-*"] || \ - [istarget "crx*-*-*"] || \ - [istarget "epiphany-*-*"] || \ - [istarget "ip2k-*-*"] || \ - [istarget "metag-*-*"] || \ - [istarget "mn10200-*-*"] || \ - [istarget "mn10300-*-*"] || \ - [istarget "ns32k-*-*"] || \ - [istarget "pdp11-*-*"] || \ - [istarget "rl78-*-*"] || \ - [istarget "rx-*-*"] || \ - [istarget "sh-*-*"] || \ - [istarget "tic4*-*-*"] || \ - [istarget "tic54*-*-*"] || \ - [istarget "v850-*-*"] || \ - [istarget "z8k-*-*"] || \ - [istarget "*-*-cygwin"] || \ - [istarget "*-*-mingw32"] } then { - return -} - proc test_cxxfilt {options mangled_string demangled_string} { global CXXFILT global CXXFILTFLAGS @@ -56,12 +32,12 @@ proc test_cxxfilt {options mangled_string demangled_string} { # Mangled and demangled strings stolen from libiberty/testsuite/demangle-expected. test_cxxfilt {} \ - "_Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E" \ - "void f.void, int, false.(void (.)(int) noexcept(false))*" + "AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue" \ + "ivTSolver::AddAlignment(unsigned int, ivInteractor ., ivTGlue .)*" -test_cxxfilt {--format=gnu-v3} \ - "_Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE" \ - "int& int_if_addable.Y.(A.sizeof ((.((Y.)(0))).(.((Y.)(0))))..)*" +test_cxxfilt {--format=lucid} \ + "__ct__12strstreambufFPFl_PvPFPv_v" \ + "strstreambuf..(strstreambuf|_ct)(void .(.)(long), void (.)(void .))*" test_cxxfilt {--no-recurse-limit} \ "Z3fooiPiPS_PS0_PS1_PS2_PS3_PS4_PS5_PS6_PS7_PS8_PS9_PSA_PSB_PSC_" \ -- cgit v1.1