diff --git a/gdb/inflow.c b/gdb/inflow.c index 767cfd02c48..095c5f03672 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -766,7 +766,8 @@ check_syscall (const char *msg, int result) { if (result < 0) { - print_sys_errmsg (msg, errno); + gdb_printf (gdb_stderr, "%s:%s.\n", msg, + safe_strerror (errno)); _exit (1); } } diff --git a/gdb/main.c b/gdb/main.c index 97e04f5b5d8..8a1c2690100 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -115,12 +115,7 @@ set_gdb_data_directory (const char *new_datadir) struct stat st; if (stat (new_datadir, &st) < 0) - { - int save_errno = errno; - - gdb_printf (gdb_stderr, "Warning: "); - print_sys_errmsg (new_datadir, save_errno); - } + warning_filename_and_errno (new_datadir, errno); else if (!S_ISDIR (st.st_mode)) warning (_("%ps is not a directory."), styled_string (file_name_style.style (), new_datadir)); diff --git a/gdb/procfs.c b/gdb/procfs.c index 706ccf0965c..48e9f3dd4b5 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -46,6 +46,7 @@ #include "gdbsupport/scoped_fd.h" #include "gdbsupport/pathstuff.h" #include "gdbsupport/buildargv.h" +#include "cli/cli-style.h" /* This module provides the interface between GDB and the /proc file system, which is used on many versions of Unix @@ -558,7 +559,7 @@ enum { NOKILL, KILL }; static void dead_procinfo (procinfo *pi, const char *msg, int kill_p) { - print_sys_errmsg (pi->pathname, errno); + warning_filename_and_errno (pi->pathname, errno); if (kill_p == KILL) kill (pi->pid, SIGKILL); @@ -594,18 +595,20 @@ static void proc_warn (procinfo *pi, const char *func, int line) { int saved_errno = errno; - std::string errmsg - = string_printf ("procfs: %s line %d, %s", func, line, pi->pathname); - print_sys_errmsg (errmsg.c_str (), saved_errno); + warning ("procfs: %s line %d, %ps: %s", + func, line, styled_string (file_name_style.style (), + pi->pathname), + safe_strerror (saved_errno)); } static void proc_error (procinfo *pi, const char *func, int line) { int saved_errno = errno; - std::string errmsg - = string_printf ("procfs: %s line %d, %s", func, line, pi->pathname); - perror_with_name (errmsg.c_str (), saved_errno); + error ("procfs: %s line %d, %ps: %s", + func, line, styled_string (file_name_style.style (), + pi->pathname), + safe_strerror (saved_errno)); } /* Updates the status struct in the procinfo. There is a 'valid' diff --git a/gdb/source.c b/gdb/source.c index 5bdd729be8b..f648adc4520 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -587,12 +587,7 @@ add_path (const char *dirname, char **which_path, int parse_separators) a directory/etc, then having them in the path should be harmless. */ if (stat (name, &st) < 0) - { - int save_errno = errno; - - gdb_printf (gdb_stderr, "Warning: "); - print_sys_errmsg (name, save_errno); - } + warning_filename_and_errno (name, errno); else if ((st.st_mode & S_IFMT) != S_IFDIR) warning (_("%ps is not a directory."), styled_string (file_name_style.style (), name)); @@ -1341,11 +1336,9 @@ print_source_lines_base (struct symtab *s, int line, int stopline, if (!(flags & PRINT_SOURCE_LINES_NOERROR)) { const char *filename = symtab_to_filename_for_display (s); - int len = strlen (filename) + 100; - char *name = (char *) alloca (len); - - xsnprintf (name, len, "%d\t%s", line, filename); - print_sys_errmsg (name, errcode); + warning (_("%d\t%ps: %s"), line, + styled_string (file_name_style.style (), filename), + safe_strerror (errcode)); } else { diff --git a/gdb/symfile.c b/gdb/symfile.c index ff8a3fd0bc5..30147b7c3df 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -2489,9 +2489,8 @@ reread_symbols (int from_tty) int res = stat (filename, &new_statbuf); if (res != 0) { - /* FIXME, should use print_sys_errmsg but it's not filtered. */ - gdb_printf (_("`%ps' has disappeared; keeping its symbols.\n"), - styled_string (file_name_style.style (), filename)); + warning (_("`%ps' has disappeared; keeping its symbols."), + styled_string (file_name_style.style (), filename)); continue; } time_t new_modtime = new_statbuf.st_mtime; diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp index 4a9302fb9b7..0588cb35d87 100644 --- a/gdb/testsuite/gdb.base/catch-syscall.exp +++ b/gdb/testsuite/gdb.base/catch-syscall.exp @@ -392,7 +392,7 @@ proc test_catch_syscall_fail_nodatadir {} { # Make sure GDB doesn't load the syscalls xml from the system # data directory. gdb_test "set data-directory /the/path/to/nowhere" \ - "Warning: /the/path/to/nowhere: .*" + "warning: /the/path/to/nowhere: .*" # Testing to see if we receive a warning when calling "catch # syscall" without XML support (without datadir). @@ -658,7 +658,7 @@ proc do_syscall_tests_without_xml {} { # Make sure GDB doesn't load the syscalls xml from the system data # directory. gdb_test "set data-directory /the/path/to/nowhere" \ - "Warning: /the/path/to/nowhere: .*" + "warning: /the/path/to/nowhere: .*" # Let's test if we can catch syscalls without XML support. # We should succeed, but GDB is not supposed to print syscall names. diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit.exp b/gdb/testsuite/gdb.dwarf2/imported-unit.exp index 7e28931be22..07aa6afbee7 100644 --- a/gdb/testsuite/gdb.dwarf2/imported-unit.exp +++ b/gdb/testsuite/gdb.dwarf2/imported-unit.exp @@ -167,7 +167,7 @@ if { $psymtabs_p } { } gdb_test "l imported_unit.c:1" \ - "1\timported_unit.c: No such file or directory\." + "warning: 1\timported_unit.c: No such file or directory" gdb_test "info source" "\r\nCurrent source file is imported_unit.c\r\n.*" \ "info source for imported_unit.c" diff --git a/gdb/utils.c b/gdb/utils.c index 2f545337cd4..a191d26a007 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -619,14 +619,13 @@ perror_warning_with_name (const char *string) warning (_("%s"), combined.c_str ()); } -/* Print the system error message for ERRCODE, and also mention STRING - as the file name for which the error was encountered. */ +/* See utils.h. */ void -print_sys_errmsg (const char *string, int errcode) +warning_filename_and_errno (const char *filename, int saved_errno) { - const char *err = safe_strerror (errcode); - gdb_printf (gdb_stderr, "%s: %s.\n", string, err); + warning (_("%ps: %s"), styled_string (file_name_style.style (), filename), + safe_strerror (saved_errno)); } /* Control C eventually causes this to be called, at a convenient time. */ diff --git a/gdb/utils.h b/gdb/utils.h index c5364fa4b35..f646b300530 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -275,7 +275,13 @@ extern void fprintf_symbol (struct ui_file *, const char *, extern void perror_warning_with_name (const char *string); -extern void print_sys_errmsg (const char *, int); +/* Issue a warning formatted as ': ', where + is FILENAME with filename styling applied. As such, don't + pass anything more than a filename in this string. The + is a string returned from calling safe_strerror(SAVED_ERRNO). */ + +extern void warning_filename_and_errno (const char *filename, + int saved_errno); /* Warnings and error messages. */ diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 5a897dbfe76..7a139c8d36f 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -2625,7 +2625,7 @@ windows_nat_target::create_inferior (const char *exec_file, tty = open (inferior_tty.c_str (), O_RDWR | O_NOCTTY); if (tty < 0) { - print_sys_errmsg (inferior_tty.c_str (), errno); + warning_filename_and_errno (inferior_tty.c_str (), errno); ostdin = ostdout = ostderr = -1; } else