* NEWS: Mention new parameter basenames-may-differ.

* dwarf2read.c (dw2_lookup_symtab): Avoid calling gdb_realpath if
	! basenames_may_differ.
	* psymtab.c (lookup_partial_symtab): Ditto.
	* symtab.c (lookup_symtab): Ditto.
	(basenames_may_differ): New global.
	(_initialize_symtab): New parameter basenames-may-differ.
	* symtab.h (basenames_may_differ): Declare.

	doc/
	* gdb.texinfo (Files): Document basenames-may-differ.
This commit is contained in:
Doug Evans
2011-11-15 17:40:02 +00:00
parent 865ecab4b2
commit c011a4f469
8 changed files with 97 additions and 2 deletions

View File

@@ -2445,7 +2445,8 @@ dw2_lookup_symtab (struct objfile *objfile, const char *name,
struct symtab **result)
{
int i;
int check_basename = lbasename (name) == name;
const char *name_basename = lbasename (name);
int check_basename = name_basename == name;
struct dwarf2_per_cu_data *base_cu = NULL;
dw2_setup (objfile);
@@ -2478,6 +2479,12 @@ dw2_lookup_symtab (struct objfile *objfile, const char *name,
&& FILENAME_CMP (lbasename (this_name), name) == 0)
base_cu = per_cu;
/* Before we invoke realpath, which can get expensive when many
files are involved, do a quick comparison of the basenames. */
if (! basenames_may_differ
&& FILENAME_CMP (lbasename (this_name), name_basename) != 0)
continue;
if (full_path != NULL)
{
const char *this_real_name = dw2_get_real_path (objfile,