diff options
Diffstat (limited to 'gdb/source.c')
-rw-r--r-- | gdb/source.c | 39 |
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); } } |