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:
@@ -134,6 +134,7 @@ lookup_partial_symtab (struct objfile *objfile, const char *name,
|
||||
const char *full_path, const char *real_path)
|
||||
{
|
||||
struct partial_symtab *pst;
|
||||
const char *name_basename = lbasename (name);
|
||||
|
||||
ALL_OBJFILE_PSYMTABS_REQUIRED (objfile, pst)
|
||||
{
|
||||
@@ -142,6 +143,12 @@ lookup_partial_symtab (struct objfile *objfile, const char *name,
|
||||
return (pst);
|
||||
}
|
||||
|
||||
/* 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 (name_basename, lbasename (pst->filename)) != 0)
|
||||
continue;
|
||||
|
||||
/* If the user gave us an absolute path, try to find the file in
|
||||
this symtab and use its absolute path. */
|
||||
if (full_path != NULL)
|
||||
@@ -172,7 +179,7 @@ lookup_partial_symtab (struct objfile *objfile, const char *name,
|
||||
|
||||
/* Now, search for a matching tail (only if name doesn't have any dirs). */
|
||||
|
||||
if (lbasename (name) == name)
|
||||
if (name_basename == name)
|
||||
ALL_OBJFILE_PSYMTABS_REQUIRED (objfile, pst)
|
||||
{
|
||||
if (FILENAME_CMP (lbasename (pst->filename), name) == 0)
|
||||
|
||||
Reference in New Issue
Block a user