Simon Marchi mentioned on IRC that, after the startup-with-shell feature has been implemented on gdbserver, it is not possible to specify a filename-only binary, like: $ gdbserver :1234 a.out /bin/bash: line 0: exec: a.out: not found During startup program exited with code 127. Exiting This happens on systems where the current directory "." is not listed in the PATH environment variable. Although including "." in the PATH variable is a possible workaround, this can be considered a regression because before startup-with-shell it was possible to use only the filename (due to reason that gdbserver used "exec*" directly).
Links to the discussions that happened upstream: v1: https://sourceware.org/ml/gdb-patches/2018-02/msg00159.html v2: https://sourceware.org/ml/gdb-patches/2018-02/msg00177.html v3: https://sourceware.org/ml/gdb-patches/2018-02/msg00439.html
This regression has been fixed by the following commits: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b4987c956dfa44ca9fd8552f63e15f5fa094b2a4 https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=25e3c82c0e927398e759e2d5e35623012b8683f7 https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=815615463b1171cbff7c5e54f62fc708cc1bbc99
Thanks a lot for looking into it.
The master branch has been updated by Sergio Durigan Junior <sergiodj@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ab818ade016bcd794980438775e15c7a74f054f9 commit ab818ade016bcd794980438775e15c7a74f054f9 Author: Sergio Durigan Junior <sergiodj@redhat.com> Date: Thu Mar 1 15:11:44 2018 -0500 Conditionally include "<windows.h>" on common/pathstuff.c (and unbreak build on mingw*) commit b4987c956dfa44ca9fd8552f63e15f5fa094b2a4 Author: Sergio Durigan Junior <sergiodj@redhat.com> Date: Fri Feb 9 18:44:59 2018 -0500 Create new common/pathstuff.[ch] Introduced a regression when compiling for mingw*: /gdb/common/pathstuff.c: In function 'gdb::unique_xmalloc_ptr<char> gdb_realpath(const char*)': /gdb/common/pathstuff.c:56:14: error: 'MAX_PATH' was not declared in this scope char buf[MAX_PATH]; ^ /gdb/common/pathstuff.c:57:5: error: 'DWORD' was not declared in this scope DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:57:11: error: expected ';' before 'len' DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:63:9: error: 'len' was not declared in this scope if (len > 0 && len < MAX_PATH) ^ /gdb/common/pathstuff.c:64:54: error: 'buf' was not declared in this scope return gdb::unique_xmalloc_ptr<char> (xstrdup (buf)); ^ make[2]: *** [pathstuff.o] Error 1 The proper fix is to conditionally include "<windows.h>". This commit does that, without introducing any regressions as per tests made by our BuildBot. gdb/ChangeLog: 2018-03-01 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/22907 * common/pathstuff.c: Conditionally include "<windows.h>".
The gdb-8.1-branch branch has been updated by Sergio Durigan Junior <sergiodj@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a74e30b243dec8b38c8c769da04635210f9ef986 commit a74e30b243dec8b38c8c769da04635210f9ef986 Author: Sergio Durigan Junior <sergiodj@redhat.com> Date: Thu Mar 1 15:11:44 2018 -0500 Conditionally include "<windows.h>" on common/pathstuff.c (and unbreak build on mingw*) commit b4987c956dfa44ca9fd8552f63e15f5fa094b2a4 Author: Sergio Durigan Junior <sergiodj@redhat.com> Date: Fri Feb 9 18:44:59 2018 -0500 Create new common/pathstuff.[ch] Introduced a regression when compiling for mingw*: /gdb/common/pathstuff.c: In function 'gdb::unique_xmalloc_ptr<char> gdb_realpath(const char*)': /gdb/common/pathstuff.c:56:14: error: 'MAX_PATH' was not declared in this scope char buf[MAX_PATH]; ^ /gdb/common/pathstuff.c:57:5: error: 'DWORD' was not declared in this scope DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:57:11: error: expected ';' before 'len' DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:63:9: error: 'len' was not declared in this scope if (len > 0 && len < MAX_PATH) ^ /gdb/common/pathstuff.c:64:54: error: 'buf' was not declared in this scope return gdb::unique_xmalloc_ptr<char> (xstrdup (buf)); ^ make[2]: *** [pathstuff.o] Error 1 The proper fix is to conditionally include "<windows.h>". This commit does that, without introducing any regressions as per tests made by our BuildBot. gdb/ChangeLog: 2018-03-01 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/22907 * common/pathstuff.c: Conditionally include "<windows.h>".
Changed the target milestone to 8.1.1, since the problem is in 8.1 and fixed for 8.1.1.