aboutsummaryrefslogtreecommitdiff
path: root/gdb/source.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/source.c')
-rw-r--r--gdb/source.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/gdb/source.c b/gdb/source.c
index 68fbcdf..45140fc 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1167,7 +1167,7 @@ find_source_lines (struct symtab *s, int desc)
gdb_assert (s);
line_charpos = (int *) xmalloc (lines_allocated * sizeof (int));
if (fstat (desc, &st) < 0)
- perror_with_name (s->filename);
+ perror_with_name (symtab_to_filename_for_display (s));
if (s->objfile && s->objfile->obfd)
mtime = s->objfile->mtime;
@@ -1192,7 +1192,7 @@ find_source_lines (struct symtab *s, int desc)
/* Reassign `size' to result of read for systems where \r\n -> \n. */
size = myread (desc, data, size);
if (size < 0)
- perror_with_name (s->filename);
+ perror_with_name (symtab_to_filename_for_display (s));
end = data + size;
p = data;
line_charpos[0] = 0;
@@ -1333,17 +1333,19 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
if (!(flags & PRINT_SOURCE_LINES_NOERROR))
{
- int len = strlen (s->filename) + 100;
+ const char *filename = symtab_to_filename_for_display (s);
+ int len = strlen (filename) + 100;
char *name = alloca (len);
- xsnprintf (name, len, "%d\t%s", line, s->filename);
+ xsnprintf (name, len, "%d\t%s", line, filename);
print_sys_errmsg (name, errno);
}
else
{
ui_out_field_int (uiout, "line", line);
ui_out_text (uiout, "\tin ");
- ui_out_field_string (uiout, "file", s->filename);
+ ui_out_field_string (uiout, "file",
+ symtab_to_filename_for_display (s));
if (ui_out_is_mi_like_p (uiout))
{
const char *fullname = symtab_to_fullname (s);
@@ -1365,13 +1367,13 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
{
close (desc);
error (_("Line number %d out of range; %s has %d lines."),
- line, s->filename, s->nlines);
+ line, symtab_to_filename_for_display (s), s->nlines);
}
if (lseek (desc, s->line_charpos[line - 1], 0) < 0)
{
close (desc);
- perror_with_name (s->filename);
+ perror_with_name (symtab_to_filename_for_display (s));
}
stream = fdopen (desc, FDOPEN_MODE);
@@ -1388,7 +1390,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
last_line_listed = current_source_line;
if (flags & PRINT_SOURCE_LINES_FILENAME)
{
- ui_out_text (uiout, s->filename);
+ ui_out_text (uiout, symtab_to_filename_for_display (s));
ui_out_text (uiout, ":");
}
xsnprintf (buf, sizeof (buf), "%d\t", current_source_line++);
@@ -1502,7 +1504,8 @@ line_info (char *arg, int from_tty)
if (start_pc == end_pc)
{
printf_filtered ("Line %d of \"%s\"",
- sal.line, sal.symtab->filename);
+ sal.line,
+ symtab_to_filename_for_display (sal.symtab));
wrap_here (" ");
printf_filtered (" is at address ");
print_address (gdbarch, start_pc, gdb_stdout);
@@ -1512,7 +1515,8 @@ line_info (char *arg, int from_tty)
else
{
printf_filtered ("Line %d of \"%s\"",
- sal.line, sal.symtab->filename);
+ sal.line,
+ symtab_to_filename_for_display (sal.symtab));
wrap_here (" ");
printf_filtered (" starts at address ");
print_address (gdbarch, start_pc, gdb_stdout);
@@ -1538,7 +1542,7 @@ line_info (char *arg, int from_tty)
which the user would want to see? If we have debugging symbols
and no line numbers? */
printf_filtered (_("Line number %d is out of range for \"%s\".\n"),
- sal.line, sal.symtab->filename);
+ sal.line, symtab_to_filename_for_display (sal.symtab));
}
do_cleanups (cleanups);
}
@@ -1566,7 +1570,7 @@ forward_search_command (char *regex, int from_tty)
desc = open_source_file (current_source_symtab);
if (desc < 0)
- perror_with_name (current_source_symtab->filename);
+ perror_with_name (symtab_to_filename_for_display (current_source_symtab));
cleanups = make_cleanup_close (desc);
if (current_source_symtab->line_charpos == 0)
@@ -1576,7 +1580,7 @@ forward_search_command (char *regex, int from_tty)
error (_("Expression not found"));
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
- perror_with_name (current_source_symtab->filename);
+ perror_with_name (symtab_to_filename_for_display (current_source_symtab));
discard_cleanups (cleanups);
stream = fdopen (desc, FDOPEN_MODE);
@@ -1655,7 +1659,7 @@ reverse_search_command (char *regex, int from_tty)
desc = open_source_file (current_source_symtab);
if (desc < 0)
- perror_with_name (current_source_symtab->filename);
+ perror_with_name (symtab_to_filename_for_display (current_source_symtab));
cleanups = make_cleanup_close (desc);
if (current_source_symtab->line_charpos == 0)
@@ -1665,7 +1669,7 @@ reverse_search_command (char *regex, int from_tty)
error (_("Expression not found"));
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
- perror_with_name (current_source_symtab->filename);
+ perror_with_name (symtab_to_filename_for_display (current_source_symtab));
discard_cleanups (cleanups);
stream = fdopen (desc, FDOPEN_MODE);
@@ -1708,8 +1712,11 @@ reverse_search_command (char *regex, int from_tty)
line--;
if (fseek (stream, current_source_symtab->line_charpos[line - 1], 0) < 0)
{
+ const char *filename;
+
do_cleanups (cleanups);
- perror_with_name (current_source_symtab->filename);
+ filename = symtab_to_filename_for_display (current_source_symtab);
+ perror_with_name (filename);
}
}