From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24394 invoked by alias); 3 Dec 2003 17:08:31 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 24351 invoked from network); 3 Dec 2003 17:08:28 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 3 Dec 2003 17:08:28 -0000 Received: from drow by nevyn.them.org with local (Exim 4.24 #1 (Debian)) id 1ARaUC-0003Li-6U; Wed, 03 Dec 2003 12:08:24 -0500 Date: Wed, 03 Dec 2003 17:08:00 -0000 From: Daniel Jacobowitz To: Ian Lance Taylor Cc: Michael Elizabeth Chastain , ac131313@redhat.com, gdb@sources.redhat.com, wcohen@redhat.com Subject: Re: Slow handling of C++ symbol names Message-ID: <20031203170823.GA9475@nevyn.them.org> Mail-Followup-To: Ian Lance Taylor , Michael Elizabeth Chastain , ac131313@redhat.com, gdb@sources.redhat.com, wcohen@redhat.com References: <20031203164734.201124B35B@berman.michael-chastain.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.1i X-SW-Source: 2003-12/txt/msg00044.txt.bz2 On Wed, Dec 03, 2003 at 11:57:56AM -0500, Ian Lance Taylor wrote: > mec.gnu@mindspring.com (Michael Elizabeth Chastain) writes: > > > So far I've found one type of difference that looks like a bug in the > > new demangler. > > > > _ZStltI9file_pathSsEbRKSt4pairIT_T0_ES6_ > > OLD: bool std::operator< , std::allocator > >(std::pair, std::allocator > > const&, std::pair std::char_traits, std::allocator > > const&) > > NEW: bool std::operator<(std::pair const&, std::pair const&) > > > > The old demangler produces "operator< <", and the new demangler produces > > "operator <<". I'm not a name mangling expert but I think that > > "operator <" is correct here and the new demangler suffers from > > shift-operator-versus-template-syntax gotcha. > > Whoops. Quite right. > > The old name you list above was generated using DMGL_VERBOSE. I can > tell by use of std::basic_string, > std::allocator > where the new demangler just uses std::string. > The old demangler generates the former with DMGL_VERBOSE, or > std::string without DMGL_VERBOSE. > > If the old demangler is being run with DMGL_VERBOSE, then I'm not > surprised that the resulting strings are much larger. That was the > main thing which concerned me, since I didn't see anything in gdb > which passed DMGL_VERBOSE to the demangler. GDB never does set DMGL_VERBOSE. Are you sure the old demangler wouldn't produce that without DMGL_VERBOSE? Maybe the old demangler had a test reversed. ISTR that c++filt passes DMGL_VERBOSE, and that generates std::string rather than std::basic_string for the above. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer