[Bug symtab/8367] [RFA] performance improvement of lookup_partial_symtab

Jerome Guitton guitton@adacore.com
Wed Jan 14 17:46:00 GMT 2009


The move to bugzilla has "resurrected" this patch; I suggested it
several years ago, but it's still relevant.

The problem is explained in details in the comment (very useful when I
had to double-check that the patch was not obsolete, actually). To
summarize it: lookup_partial_symtab is particularly slow when it has
been given an absolute path. The reason is that it needs to build the
full filename for every psymtab; when building this full filename, the
corresponding file is opened/closed by find_and_open_source. As a
consequence, in the worst case, the loop ends up opening/closing
every source file of the application. Pretty bad for a big application,
in particular if the sources are located on a slow file system.

The idea of the patch is to avoid building the psymtab full filename
if the basenames are different.

Tested on linux, no regression.

OK to apply?


2009-01-14  Jerome Guitton  <guitton@adacore.com>

	* symtab.c (lookup_partial_symtab): When looking up an absolute path
	in the partial symtabs, compare the base names before checking the
	full names.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: lookup_partial_symtab.dif
Type: video/dv
Size: 2388 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20090114/35d7ce74/attachment.bin>


More information about the Gdb-patches mailing list