mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 06:17:47 +08:00
[gdbserver/win32] fatal "glob could not process pattern '(null)'" error
Trying to start GDBserver on Windows currently yields the following error... $ gdbserver.exe --once :4444 simple_main.exe glob could not process pattern '(null)'. Exiting ... after which GDB terminates with a nonzero status. This is because create_process in win32-low.c calls gdb_tilde_expand with the result of a call to get_inferior_cwd without verifying that the returned directory is not NULL: | static BOOL | create_process (const char *program, char *args, | DWORD flags, PROCESS_INFORMATION *pi) | { | const char *inferior_cwd = get_inferior_cwd (); | std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd); This patch avoids this by only calling gdb_tilde_expand when INFERIOR_CWD is not NULL, which is similar to what is done on GNU/Linux for instance. gdb/gdbserver/ChangeLog: PR server/23158: * win32-low.c (create_process): Only call gdb_tilde_expand if inferior_cwd is not NULL.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2018-05-10 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
PR server/23158:
|
||||||
|
* win32-low.c (create_process): Only call gdb_tilde_expand if
|
||||||
|
inferior_cwd is not NULL.
|
||||||
|
|
||||||
2018-05-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
2018-05-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* i387-fp.c (i387_cache_to_xsave): Only write x87 control
|
* i387-fp.c (i387_cache_to_xsave): Only write x87 control
|
||||||
|
@ -556,7 +556,6 @@ 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 char *inferior_cwd = get_inferior_cwd ();
|
||||||
std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
|
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
#ifdef _WIN32_WCE
|
#ifdef _WIN32_WCE
|
||||||
@ -576,6 +575,7 @@ create_process (const char *program, char *args,
|
|||||||
|
|
||||||
if (inferior_cwd != NULL)
|
if (inferior_cwd != NULL)
|
||||||
{
|
{
|
||||||
|
std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
|
||||||
std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
|
std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
|
||||||
'/', '\\');
|
'/', '\\');
|
||||||
wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
|
wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
|
||||||
@ -607,7 +607,10 @@ Could not convert the expanded inferior cwd to wide-char."));
|
|||||||
TRUE, /* inherit handles */
|
TRUE, /* inherit handles */
|
||||||
flags, /* start flags */
|
flags, /* start flags */
|
||||||
NULL, /* environment */
|
NULL, /* environment */
|
||||||
expanded_infcwd.c_str (), /* current directory */
|
/* current directory */
|
||||||
|
(inferior_cwd == NULL
|
||||||
|
? NULL
|
||||||
|
: gdb_tilde_expand (inferior_cwd).c_str()),
|
||||||
&si, /* start info */
|
&si, /* start info */
|
||||||
pi); /* proc info */
|
pi); /* proc info */
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user