+ if (SYMTAB_DIRNAME (s) == NULL || IS_ABSOLUTE_PATH (s->filename))
+ fullname.reset (xstrdup (s->filename));
+ else
+ fullname.reset (concat (SYMTAB_DIRNAME (s), SLASH_STRING,
+ s->filename, (char *) NULL));
+
+ s->fullname = rewrite_source_path (fullname.get ()).release ();
+ if (s->fullname == NULL)
+ s->fullname = fullname.release ();
+ }
+ }
+
+ return s->fullname;
+}
+
+/* See commentary in source.h. */
+
+const char *
+symtab_to_filename_for_display (struct symtab *symtab)
+{
+ if (filename_display_string == filename_display_basename)
+ return lbasename (symtab->filename);
+ else if (filename_display_string == filename_display_absolute)
+ return symtab_to_fullname (symtab);
+ else if (filename_display_string == filename_display_relative)
+ return symtab->filename;
+ else
+ internal_error (__FILE__, __LINE__, _("invalid filename_display_string"));