Fix the Windows build

The gdb build was broken on Windows after the patch to change
get_inferior_cwd.  This patch fixes the build.
This commit is contained in:
Tom Tromey
2021-07-26 07:34:37 -06:00
parent c9bd98593b
commit 0b73bf7fa3
2 changed files with 14 additions and 12 deletions

View File

@ -2553,14 +2553,16 @@ windows_nat_target::create_inferior (const char *exec_file,
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
BOOL ret; BOOL ret;
DWORD flags = 0; DWORD flags = 0;
const char *inferior_tty = current_inferior ()->tty (); const std::string &inferior_tty = current_inferior ()->tty ();
if (!exec_file) if (!exec_file)
error (_("No executable specified, use `target exec'.")); error (_("No executable specified, use `target exec'."));
const char *inferior_cwd = current_inferior ()->cwd (); const char *inferior_cwd = current_inferior ()->cwd ().c_str ();
std::string expanded_infcwd; std::string expanded_infcwd;
if (inferior_cwd != NULL) if (*inferior_cwd == '\0')
inferior_cwd = nullptr;
else
{ {
expanded_infcwd = gdb_tilde_expand (inferior_cwd); expanded_infcwd = gdb_tilde_expand (inferior_cwd);
/* Mirror slashes on inferior's cwd. */ /* Mirror slashes on inferior's cwd. */
@ -2652,14 +2654,14 @@ windows_nat_target::create_inferior (const char *exec_file,
w32_env = NULL; w32_env = NULL;
} }
if (inferior_tty == nullptr) if (inferior_tty.empty ())
tty = ostdin = ostdout = ostderr = -1; tty = ostdin = ostdout = ostderr = -1;
else else
{ {
tty = open (inferior_tty, O_RDWR | O_NOCTTY); tty = open (inferior_tty.c_str (), O_RDWR | O_NOCTTY);
if (tty < 0) if (tty < 0)
{ {
print_sys_errmsg (inferior_tty, errno); print_sys_errmsg (inferior_tty.c_str (), errno);
ostdin = ostdout = ostderr = -1; ostdin = ostdout = ostderr = -1;
} }
else else
@ -2725,18 +2727,18 @@ windows_nat_target::create_inferior (const char *exec_file,
} }
/* If not all the standard streams are redirected by the command /* If not all the standard streams are redirected by the command
line, use INFERIOR_TTY for those which aren't. */ line, use INFERIOR_TTY for those which aren't. */
if (inferior_tty != nullptr if (!inferior_tty.empty ()
&& !(fd_inp >= 0 && fd_out >= 0 && fd_err >= 0)) && !(fd_inp >= 0 && fd_out >= 0 && fd_err >= 0))
{ {
SECURITY_ATTRIBUTES sa; SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa); sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = 0; sa.lpSecurityDescriptor = 0;
sa.bInheritHandle = TRUE; sa.bInheritHandle = TRUE;
tty = CreateFileA (inferior_tty, GENERIC_READ | GENERIC_WRITE, tty = CreateFileA (inferior_tty.c_str (), GENERIC_READ | GENERIC_WRITE,
0, &sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 0, &sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (tty == INVALID_HANDLE_VALUE) if (tty == INVALID_HANDLE_VALUE)
warning (_("Warning: Failed to open TTY %s, error %#x."), warning (_("Warning: Failed to open TTY %s, error %#x."),
inferior_tty, (unsigned) GetLastError ()); inferior_tty.c_str (), (unsigned) GetLastError ());
} }
if (redirected || tty != INVALID_HANDLE_VALUE) if (redirected || tty != INVALID_HANDLE_VALUE)
{ {

View File

@ -559,7 +559,7 @@ static BOOL
create_process (const char *program, char *args, create_process (const char *program, char *args,
DWORD flags, PROCESS_INFORMATION *pi) DWORD flags, PROCESS_INFORMATION *pi)
{ {
const char *inferior_cwd = get_inferior_cwd (); const std::string &inferior_cwd = get_inferior_cwd ();
BOOL ret; BOOL ret;
size_t argslen, proglen; size_t argslen, proglen;
@ -580,9 +580,9 @@ create_process (const char *program, char *args,
flags, /* start flags */ flags, /* start flags */
NULL, /* environment */ NULL, /* environment */
/* current directory */ /* current directory */
(inferior_cwd == NULL (inferior_cwd.empty ()
? NULL ? NULL
: gdb_tilde_expand (inferior_cwd).c_str()), : gdb_tilde_expand (inferior_cwd.c_str ()).c_str()),
&si, /* start info */ &si, /* start info */
pi); /* proc info */ pi); /* proc info */