forked from Imagelibrary/binutils-gdb
* 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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user