diff -Naur Python-3.8.0-orig/Misc/python-config.sh.in Python-3.8.0/Misc/python-config.sh.in
--- Python-3.8.0-orig/Misc/python-config.sh.in	2019-10-14 16:34:47.000000000 +0300
+++ Python-3.8.0/Misc/python-config.sh.in	2019-10-22 10:02:24.584090700 +0300
@@ -1,32 +1,44 @@
 #!/bin/sh
 
-# Keep this script in sync with python-config.in
-
 exit_with_usage ()
 {
     echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
-    exit $1
+    exit 1
 }
 
+# Really, python-config.py (and thus .sh) should be called directly, but
+# sometimes software (e.g. GDB) calls python-config.sh as if it were the
+# Python executable, passing python-config.py as the first argument.
+# Work around that oddness by ignoring any .py passed as first arg.
+case "$1" in
+    *.py)
+        shift
+    ;;
+esac
+
 if [ "$1" = "" ] ; then
-    exit_with_usage 1
+    exit_with_usage
 fi
 
 # Returns the actual prefix where this script was installed to.
 installed_prefix ()
 {
-    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
-    if which readlink >/dev/null 2>&1 ; then
-        if readlink -f "$RESULT" >/dev/null 2>&1; then
-          RESULT=$(readlink -f "$RESULT")
-        fi
+    local RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
+    if [ $(which readlink) ] ; then
+        RESULT=$(readlink -f "$RESULT")
+    fi
+    # Since we don't know where the output from this script will end up
+    # we keep all paths in Windows-land since MSYS2 can handle that
+    # while native tools can't handle paths in MSYS2-land.
+    if [ "$OSTYPE" = "msys" ]; then
+        RESULT=$(cd "$RESULT" && pwd -W)
     fi
     echo $RESULT
 }
 
 prefix_real=$(installed_prefix "$0")
 
-# Use sed to fix paths from their built-to locations to their installed-to
+# Use sed to fix paths from their built-to locations to their installed to
 # locations. Keep prefix & exec_prefix using their original values in case
 # they are referenced in other configure variables, to prevent double
 # substitution, issue #22140.
@@ -41,13 +53,17 @@
 LIBC="@LIBC@"
 SYSLIBS="$LIBM $LIBC"
 ABIFLAGS="@ABIFLAGS@"
+# Protect against lack of substitution.
+if [ "$ABIFLAGS" = "@""ABIFLAGS""@" ] ; then
+    ABIFLAGS=
+fi
 LIBS="@LIBPYTHON@ @LIBS@ $SYSLIBS"
 LIBS_EMBED="-lpython${VERSION}${ABIFLAGS} @LIBS@ $SYSLIBS"
 BASECFLAGS="@BASECFLAGS@"
-LDLIBRARY="@LDLIBRARY@"
 OPT="@OPT@"
 PY_ENABLE_SHARED="@PY_ENABLE_SHARED@"
 LDVERSION="@LDVERSION@"
+LDLIBRARY="@LDLIBRARY@"
 LIBDEST=${prefix_real}/lib/python${VERSION}
 LIBPL=$(echo "@LIBPL@" | sed "s#$prefix#$prefix_real#")
 SO="@EXT_SUFFIX@"
@@ -61,7 +77,7 @@
 do
     case $ARG in
         --help)
-            exit_with_usage 0
+            exit_with_usage
         ;;
         --embed)
             PY_EMBED=1
@@ -69,7 +85,7 @@
         --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir)
         ;;
         *)
-            exit_with_usage 1
+            exit_with_usage
         ;;
     esac
 done
@@ -80,37 +96,37 @@
 
 for ARG in "$@"
 do
-    case "$ARG" in
+    case $ARG in
         --prefix)
-            echo "$prefix_real"
+            echo -ne "$prefix_real"
         ;;
         --exec-prefix)
-            echo "$exec_prefix_real"
+            echo -ne "$exec_prefix_real "
         ;;
         --includes)
-            echo "$INCDIR $PLATINCDIR"
+            echo -ne "$INCDIR $PLATINCDIR"
         ;;
         --cflags)
-            echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
+            echo -ne "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
         ;;
         --libs)
-            echo "$LIBS"
+            echo -ne "$LIBS"
         ;;
         --ldflags)
             LIBPLUSED=
             if [ "$PY_ENABLE_SHARED" = "0" ] ; then
                 LIBPLUSED="-L$LIBPL"
             fi
-            echo "$LIBPLUSED -L$libdir $LIBS"
+            echo -ne "$LIBPLUSED -L$libdir $LIBS "
         ;;
         --extension-suffix)
-            echo "$SO"
+            echo -ne "$SO "
         ;;
         --abiflags)
-            echo "$ABIFLAGS"
+            echo -ne "$ABIFLAGS "
         ;;
         --configdir)
-            echo "$LIBPL"
+            echo -ne "$LIBPL "
         ;;
 esac
 done
