From: Simon Marchi Date: Wed, 11 Mar 2020 19:21:19 +0000 (-0400) Subject: testsuite: use `pwd -W` to convert from Unix to Windows paths X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=038b97fcd75a338a515fe7def5db142e6952ca7c;p=binutils-gdb.git testsuite: use `pwd -W` to convert from Unix to Windows paths When on a MinGW host, standard_output_file uses a regular expression to convert Unix-style paths of the form "/c/foo" to "c:/foo". This is needed because the paths we pass to GDB (for example, with the "file" command) need to be in the Windows form. However, the regexp only works if your binutils-gdb repo is under a `/[a-z]/...` path (the Unix paths mapping to Windows drives). Presumably, that works if you clone the repo in Windows, then access it through `/c/...`. In my case, I've cloned the repository directly inside my MinGW shell, so in /home/smarchi. The regexp therefore doesn't work for me. The path doesn't get transformed, and the file command fails when running any test: (gdb) file /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.arch/i386-bp_permanent/i386-bp_permanent /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.arch/i386-bp_permanent/i386-bp_permanent: No such file or directory. A safer way to do this is to execute `pwd -W` while in the directory we want the path for, this is what this patch does. I have also considered using the using the cygpath utility to do the conversion. It can be used to convert any MinGW path into its Windows equivalent. Despite originally coming from Cygwin, the cygpath utility is distributed by MinGW-w64 and can be used in that environment. However, it's not distributed with the non-MinGW-w64 MinGW. The `pwd -W` trick only works with directories that exist, which is the case here, so it's sufficient. With this, the file command in the test succeeds: (gdb) file C:/msys64/home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.arch/i386-bp_permanent/i386-bp_permanent Reading symbols from C:/msys64/home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.arch/i386-bp_permanent/i386-bp_permanent... gdb/testsuite/ChangeLog: * lib/gdb.exp (standard_output_file): Use `pwd -W` to convert from Unix to Windows path. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f98edafbc66..19114c29366 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-11 Simon Marchi + + * lib/gdb.exp (standard_output_file): Use `pwd -W` to convert + from Unix to Windows path. + 2020-03-11 Tom de Vries * gdb.ada/minsyms.exp: Set language to ada. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 9614e8dc87c..9e903ba3477 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -4899,7 +4899,7 @@ proc standard_output_file {basename} { file mkdir $dir # If running on MinGW, replace /c/foo with c:/foo if { [ishost *-*-mingw*] } { - set dir [regsub {^/([a-z])/} $dir {\1:/}] + set dir [exec sh -c "cd ${dir} && pwd -W"] } return [file join $dir $basename] }