Re: [GDB 7.6/GCC 4.8.0] Slowdown in GDB macro processing for cores?

Paul Smith <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <1369255926.7209.173.camel@homebase>
On Wed, 2013-05-22 at 14:12 -0600, Tom Tromey wrote:
> >>>>> "Paul" == Paul Smith <[email protected]> writes:
> 
> Paul> The interesting thing is both versions are constantly seeking and
> Paul> reading to exactly the same location, over and over again.  However GDB
> Paul> 4.6 does it many times more than GDB 7.5.1.  For example, I get this
> Paul> combo:
> 
> Paul> 14:51:34.423582 lseek(7, 26763264, SEEK_SET) = 26763264 <0.000004>
> Paul> 14:51:34.423609 read(7,
> Paul> "P\361\236\0\0\0\0\0`\361\236\0\0\0\0\0p\361\236\0\0\0\0\0\200\361\236\0\0\0\0\0"...,
> Paul> 4096) = 4096 <0.000015>
> 
> A backtrace from one of these seeks or reads might be useful.
> 
> Or, gprof.

I'll see what I can do.  Meantime, git bisect declares this commit to be
the one that introduced the slow behavior:

677b1bfabd372790dca4dad32fcb05dd77658728 is the first bad commit
commit 677b1bfabd372790dca4dad32fcb05dd77658728
Author: Keith Seitz <[email protected]>
Date:   Fri Nov 16 20:54:28 2012 +0000

        PR c++/13615
        * cp-namespace.c (cp_lookup_symbol_in_namespace): Add SEARCH
        parameter and pass it to lookup_symbol_file.
        (cp_lookup_symbol_imports): Tell cp_lookup_symbol_in_namespace
        to search base classes.
        (cp_lookup_symbol_namespace): Likewise.
        (lookup_namespace_scope): Likewise.
        (lookup_symbol_file): Add SEARCH parameter.
        If SEARCH is non-zero and no symbol is found, lookup the class
        and call cp_lookup_nested_symbol.
        (find_symbol_in_baseclass): New function.
        (cp_lookup_nested_symbol): Do not let
        cp_lookup_symbol_in_namespace search through base classes.
        Do that later when there is no global symbol match.
    
        PR c++/13615
        * gdb.cp/baseenum.cc: New file.
        * gdb.cp/baseenum.exp: New file.
        * gdb.cp/derivation.cc (A): Add copyright.
        Add a typedef.
        (B): Use A::value_type instead of int.  Change all references.
        (D): Use value_type instead of int.  Change all references.
        (E): Likewise.
        (F); Likewise.
        (Z): New class.
        (ZZ): New class.
        (N, Base, Derived): New namespace and classes.
        (main): Add instances of Z and ZZ.
        Make sure all symbols from N are kept.
        * gdb.cp/derivation.exp: Update typedef changes in tests.
        Add tests for class typedefs both before and after starting
        the inferior.
        Add tests for searching for a typedef while stopped in a
        method.

:040000 040000 f605271943211b58d6946f8f837053aac8e2b185
0afb509700f9a0d88f26fb498615c9c906bfeb1d M      gdb
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.