forked from Imagelibrary/binutils-gdb
Introduce throw_winerror_with_name
This introduces throw_winerror_with_name, a Windows analog of perror_with_name, and changes various places in gdb to call it. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30770
This commit is contained in:
@@ -206,8 +206,7 @@ windows_process_info::get_exec_module_filename (char *exe_name_ret,
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
{
|
{
|
||||||
unsigned err = (unsigned) GetLastError ();
|
unsigned err = (unsigned) GetLastError ();
|
||||||
error (_("Error getting executable filename (error %u): %s"),
|
throw_winerror_with_name (_("Error getting executable filename"), err);
|
||||||
err, strwinerror (err));
|
|
||||||
}
|
}
|
||||||
if (cygwin_conv_path (CCP_WIN_W_TO_POSIX, pathbuf, exe_name_ret,
|
if (cygwin_conv_path (CCP_WIN_W_TO_POSIX, pathbuf, exe_name_ret,
|
||||||
exe_name_max_len) < 0)
|
exe_name_max_len) < 0)
|
||||||
@@ -219,8 +218,7 @@ windows_process_info::get_exec_module_filename (char *exe_name_ret,
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
{
|
{
|
||||||
unsigned err = (unsigned) GetLastError ();
|
unsigned err = (unsigned) GetLastError ();
|
||||||
error (_("Error getting executable filename (error %u): %s"),
|
throw_winerror_with_name (_("Error getting executable filename"), err);
|
||||||
err, strwinerror (err));
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1346,9 +1346,9 @@ windows_nat_target::windows_continue (DWORD continue_status, int id,
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (err.has_value ())
|
if (err.has_value ())
|
||||||
error (_("Failed to resume program execution"
|
throw_winerror_with_name (_("Failed to resume program execution"
|
||||||
" (ContinueDebugEvent failed, error %u: %s)"),
|
" - ContinueDebugEvent failed"),
|
||||||
*err, strwinerror (*err));
|
*err);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -1366,8 +1366,7 @@ windows_nat_target::fake_create_process ()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned err = (unsigned) GetLastError ();
|
unsigned err = (unsigned) GetLastError ();
|
||||||
error (_("OpenProcess call failed, GetLastError = %u: %s"),
|
throw_winerror_with_name (_("OpenProcess call failed"), err);
|
||||||
err, strwinerror (err));
|
|
||||||
/* We can not debug anything in that case. */
|
/* We can not debug anything in that case. */
|
||||||
}
|
}
|
||||||
add_thread (ptid_t (windows_process.current_event.dwProcessId, 0,
|
add_thread (ptid_t (windows_process.current_event.dwProcessId, 0,
|
||||||
@@ -2047,8 +2046,11 @@ windows_nat_target::attach (const char *args, int from_tty)
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (err.has_value ())
|
if (err.has_value ())
|
||||||
error (_("Can't attach to process %u (error %u: %s)"),
|
{
|
||||||
(unsigned) pid, *err, strwinerror (*err));
|
std::string msg = string_printf (_("Can't attach to process %u"),
|
||||||
|
(unsigned) pid);
|
||||||
|
throw_winerror_with_name (msg.c_str (), *err);
|
||||||
|
}
|
||||||
|
|
||||||
DebugSetProcessKillOnExit (FALSE);
|
DebugSetProcessKillOnExit (FALSE);
|
||||||
|
|
||||||
@@ -2085,9 +2087,12 @@ windows_nat_target::detach (inferior *inf, int from_tty)
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (err.has_value ())
|
if (err.has_value ())
|
||||||
error (_("Can't detach process %u (error %u: %s)"),
|
{
|
||||||
(unsigned) windows_process.current_event.dwProcessId,
|
std::string msg
|
||||||
*err, strwinerror (*err));
|
= string_printf (_("Can't detach process %u"),
|
||||||
|
(unsigned) windows_process.current_event.dwProcessId);
|
||||||
|
throw_winerror_with_name (msg.c_str (), *err);
|
||||||
|
}
|
||||||
|
|
||||||
target_announce_detach (from_tty);
|
target_announce_detach (from_tty);
|
||||||
|
|
||||||
@@ -2790,8 +2795,10 @@ windows_nat_target::create_inferior (const char *exec_file,
|
|||||||
#endif /* !__CYGWIN__ */
|
#endif /* !__CYGWIN__ */
|
||||||
|
|
||||||
if (ret.has_value ())
|
if (ret.has_value ())
|
||||||
error (_("Error creating process %s, (error %u: %s)"),
|
{
|
||||||
exec_file, *ret, strwinerror (*ret));
|
std::string msg = _("Error creating process ") + std::string (exec_file);
|
||||||
|
throw_winerror_with_name (msg.c_str (), *ret);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
|
|||||||
@@ -324,8 +324,7 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int attached)
|
|||||||
if (!IsWow64Process (proch, &wow64))
|
if (!IsWow64Process (proch, &wow64))
|
||||||
{
|
{
|
||||||
DWORD err = GetLastError ();
|
DWORD err = GetLastError ();
|
||||||
error ("Check if WOW64 process failed (error %d): %s\n",
|
throw_winerror_with_name ("Check if WOW64 process failed", err);
|
||||||
(int) err, strwinerror (err));
|
|
||||||
}
|
}
|
||||||
windows_process.wow64_process = wow64;
|
windows_process.wow64_process = wow64;
|
||||||
|
|
||||||
@@ -579,8 +578,9 @@ win32_process_target::create_inferior (const char *program,
|
|||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
error ("Error creating process \"%s %s\", (error %d): %s\n",
|
std::string msg = string_printf (_("Error creating process \"%s %s\""),
|
||||||
program, args, (int) err, strwinerror (err));
|
program, args);
|
||||||
|
throw_winerror_with_name (msg.c_str (), err);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -627,8 +627,7 @@ win32_process_target::attach (unsigned long pid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = GetLastError ();
|
err = GetLastError ();
|
||||||
error ("Attach to process failed (error %d): %s\n",
|
throw_winerror_with_name ("Attach to process failed", err);
|
||||||
(int) err, strwinerror (err));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See nat/windows-nat.h. */
|
/* See nat/windows-nat.h. */
|
||||||
|
|||||||
@@ -144,4 +144,12 @@ strwinerror (ULONGEST error)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* See errors.h. */
|
||||||
|
|
||||||
|
void
|
||||||
|
throw_winerror_with_name (const char *string, ULONGEST err)
|
||||||
|
{
|
||||||
|
error (_("%s (error %d): %s"), string, err, strwinerror (err));
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* USE_WIN32API */
|
#endif /* USE_WIN32API */
|
||||||
|
|||||||
@@ -120,6 +120,13 @@ extern void flush_streams ();
|
|||||||
|
|
||||||
extern const char *strwinerror (ULONGEST error);
|
extern const char *strwinerror (ULONGEST error);
|
||||||
|
|
||||||
|
/* Like perror_with_name, but for Windows errors. Throw an exception
|
||||||
|
including STRING and the system text for the given error
|
||||||
|
number. */
|
||||||
|
|
||||||
|
extern void throw_winerror_with_name (const char *string, ULONGEST err)
|
||||||
|
ATTRIBUTE_NORETURN;
|
||||||
|
|
||||||
#endif /* USE_WIN32API */
|
#endif /* USE_WIN32API */
|
||||||
|
|
||||||
#endif /* COMMON_ERRORS_H */
|
#endif /* COMMON_ERRORS_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user