From baeb79eaef742dad98293ad6957708fe924e786a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?=
 =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= <alexey.pawlow@gmail.com>
Date: Sun, 14 Apr 2019 21:09:17 +0300
Subject: [PATCH 02/N] Rename dll from cygwin to msys

---
 winsup/cygserver/transport_pipes.h            |  4 +++
 winsup/cygwin/Makefile.am                     | 27 ++++++++++---------
 winsup/cygwin/crt0.c                          |  8 ++++++
 winsup/cygwin/cygwin.din                      |  6 ++---
 winsup/cygwin/cygwin.sc.in                    |  4 +++
 winsup/cygwin/dcrt0.cc                        |  4 +++
 winsup/cygwin/dlfcn.cc                        |  5 ++++
 winsup/cygwin/dll_init.cc                     |  4 +++
 winsup/cygwin/dtable.cc                       |  6 +++++
 winsup/cygwin/exceptions.cc                   |  4 +--
 winsup/cygwin/fhandler/pipe.cc                |  4 +++
 winsup/cygwin/fhandler/pty.cc                 | 26 ++++++++++++++++++
 winsup/cygwin/hookapi.cc                      |  4 +++
 winsup/cygwin/include/cygwin/cygwin_dll.h     | 10 +++----
 winsup/cygwin/include/cygwin/version.h        |  8 ++++++
 winsup/cygwin/lib/_cygwin_crt0_common.cc      |  4 +++
 winsup/cygwin/lib/crt0.h                      |  4 +++
 winsup/cygwin/lib/cygwin_attach_dll.c         |  8 ++++++
 winsup/cygwin/lib/cygwin_crt0.c               |  8 ++++++
 .../cygwin/local_includes/cygserver_setpwd.h  |  4 +++
 winsup/cygwin/scripts/mkvers.sh               |  6 ++---
 winsup/cygwin/sec/auth.cc                     |  8 +++---
 winsup/cygwin/syscalls.cc                     |  4 +--
 winsup/cygwin/syslog.cc                       |  4 +++
 winsup/cygwin/winver.rc                       |  2 +-
 winsup/testsuite/winsup.api/cygload.cc        | 10 +++----
 winsup/testsuite/winsup.api/cygload.h         |  2 +-
 winsup/utils/ldd.cc                           |  2 +-
 winsup/utils/loadlib.h                        |  6 ++---
 winsup/utils/mingw/cygcheck.cc                | 27 +++++++++----------
 winsup/utils/mingw/strace.cc                  |  9 +++----
 winsup/utils/path.cc                          | 12 ++++-----
 winsup/utils/ssp.c                            |  8 +++---
 33 files changed, 180 insertions(+), 72 deletions(-)

diff --git a/winsup/cygserver/transport_pipes.h b/winsup/cygserver/transport_pipes.h
index e101623..66272bc 100644
--- a/winsup/cygserver/transport_pipes.h
+++ b/winsup/cygserver/transport_pipes.h
@@ -11,7 +11,11 @@ details. */
 #ifndef _TRANSPORT_PIPES_H
 #define _TRANSPORT_PIPES_H
 
+#ifdef __MSYS__
+#define PIPE_NAME_PREFIX	L"\\\\.\\pipe\\msys-"
+#else
 #define PIPE_NAME_PREFIX	L"\\\\.\\pipe\\cygwin-"
+#endif
 #define PIPE_NAME_SUFFIX	L"-lpc"
 
 /* Named pipes based transport, for security on NT */
diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
index 383f4f3..981877d 100644
--- a/winsup/cygwin/Makefile.am
+++ b/winsup/cygwin/Makefile.am
@@ -37,12 +37,12 @@ newlib_build=$(target_builddir)/newlib
 toollibdir=$(tooldir)/lib
 toolincludedir=$(tooldir)/include
 
-# Parameters used in building the cygwin.dll.
+# Parameters used in building the msys-2.0.dll.
 
-DLL_NAME=cygwin1.dll
-NEW_DLL_NAME=new-cygwin1.dll
-DEF_FILE=cygwin.def
-LIB_NAME=libcygwin.a
+DLL_NAME=msys-2.0.dll
+NEW_DLL_NAME=new-msys-2.0.dll
+DEF_FILE=msys.def
+LIB_NAME=libmsys-2.0.a
 
 #
 # sources
@@ -589,16 +589,16 @@ LIBSERVER = $(cygserver_blddir)/libcygserver.a
 $(LIBSERVER):
 	$(MAKE) -C $(cygserver_blddir) libcygserver.a
 
-# We build as new-cygwin1.dll and rename at install time to overcome native
+# We build as new-msys-2.0.dll and rename at install time to overcome native
 # rebuilding issues (we don't want the build tools to see a partially built
-# cygwin1.dll and attempt to use it instead of the old one).
+# msys-2.0.dll and attempt to use it instead of the old one).
 
 # linker script
 LDSCRIPT=cygwin.sc
 $(LDSCRIPT): $(LDSCRIPT).in
 	$(AM_V_GEN)$(CC) -E - -P < $^ -o $@
 
-# cygwin dll
+# msys-2.0 dll
 # Set PE and export table header timestamps to zero for reproducible builds.
 $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\
 		  $(newlib_build)/libm.a $(newlib_build)/libc.a
@@ -607,18 +607,18 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\
 	-Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) \
 	-Wl,--dynamicbase -static \
 	$${SOURCE_DATE_EPOCH:+-Wl,--no-insert-timestamp} \
-	-Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \
+	-Wl,--heap=0 -Wl,--out-implib,msysdll.a -shared -o $@ \
 	-e @DLL_ENTRY@ $(DEF_FILE) \
 	-Wl,-whole-archive libdll.a -Wl,-no-whole-archive \
 	$(VERSION_OFILES) \
 	$(LIBSERVER) \
 	$(newlib_build)/libm.a \
 	$(newlib_build)/libc.a \
-	-lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
+	-lgcc -lkernel32 -lntdll -Wl,-Map,msys.map
 	@$(MKDIR_P) ${target_builddir}/winsup/testsuite/testinst/bin/
 	$(AM_V_at)$(INSTALL_PROGRAM) $(NEW_DLL_NAME) ${target_builddir}/winsup/testsuite/testinst/bin/$(DLL_NAME)
 
-# cygwin import library
+# msys-2.0 import library
 toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
 
 $(DEF_FILE): scripts/gendef cygwin.din
@@ -631,13 +631,14 @@ sigfe.s: $(DEF_FILE) tlsoffsets
 
 LIBCOS=$(addsuffix .o,$(basename $(LIB_FILES)))
 $(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(NEW_DLL_NAME)
-	$(AM_V_GEN)$(srcdir)/scripts/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ cygdll.a $(wordlist 2,99,$^)
+	$(AM_V_GEN)$(srcdir)/scripts/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ msysdll.a $(wordlist 2,99,$^)
 
 # sublibs
 # import libraries for some subset of symbols indicated by given objects
 speclib=\
 	$(srcdir)/scripts/speclib $(toolopts) \
 	--exclude='cygwin' \
+	--exclude='msys' \
 	--exclude='(?i:dll)' \
 	--exclude='reloc' \
 	--exclude='^main$$' \
@@ -687,7 +688,7 @@ all-local: $(LIB_NAME) $(SUBLIBS)
 clean-local:
 	-rm -f $(BUILT_SOURCES)
 	-rm -f $(DEF_FILE) sigfe.s
-	-rm -f cygwin.sc cygdll.a cygwin.map
+	-rm -f cygwin.sc msysdll.a msys.map
 	-rm -f $(NEW_DLL_NAME)
 	-rm -f $(LIB_NAME) $(SUBLIBS)
 	-rm -f version.cc
diff --git a/winsup/cygwin/crt0.c b/winsup/cygwin/crt0.c
index 1096e58..3160df4 100644
--- a/winsup/cygwin/crt0.c
+++ b/winsup/cygwin/crt0.c
@@ -9,12 +9,20 @@ details. */
 
 extern int main (int argc, char **argv);
 
+#ifdef __MSYS__
+void msys_crt0 (int (*main) (int, char **));
+#else
 void cygwin_crt0 (int (*main) (int, char **));
+#endif
 
 void
 mainCRTStartup ()
 {
+#ifdef __MSYS__
+  msys_crt0 (main);
+#else
   cygwin_crt0 (main);
+#endif
 
   /* These are never actually called.  They are just here to force the inclusion
      of things like -lbinmode.  */
diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index deac201..073b8d0 100644
--- a/winsup/cygwin/cygwin.din
+++ b/winsup/cygwin/cygwin.din
@@ -1,4 +1,4 @@
-LIBRARY "cygwin1.dll" BASE=0x180040000
+LIBRARY "msys-2.0.dll" BASE=0x180040000
 
 EXPORTS
 # Exported variables
@@ -404,8 +404,8 @@ cygwin_attach_handle_to_fd SIGFE
 cygwin_conv_path SIGFE
 cygwin_conv_path_list SIGFE
 cygwin_create_path SIGFE
-cygwin_detach_dll SIGFE_MAYBE
-cygwin_dll_init NOSIGFE
+msys_detach_dll SIGFE_MAYBE
+msys_dll_init NOSIGFE
 cygwin_internal NOSIGFE
 cygwin_logon_user SIGFE
 cygwin_posix_path_list_p NOSIGFE
diff --git a/winsup/cygwin/cygwin.sc.in b/winsup/cygwin/cygwin.sc.in
index 69526f5..4dc5dae 100644
--- a/winsup/cygwin/cygwin.sc.in
+++ b/winsup/cygwin/cygwin.sc.in
@@ -1,6 +1,10 @@
 #ifdef __x86_64__
 OUTPUT_FORMAT(pei-x86-64)
+# ifdef __MSYS__
+SEARCH_DIR("/usr/x86_64-pc-msys/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api");
+# else
 SEARCH_DIR("/usr/x86_64-pc-cygwin/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api");
+# endif
 #else
 #error unimplemented for this target
 #endif
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index f4c09be..e19b7d3 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -1077,7 +1077,11 @@ dll_crt0 (per_process *uptr)
    See winsup/testsuite/cygload for an example of how to use cygwin1.dll
    from MSVC and non-cygwin MinGW applications.  */
 extern "C" void
+#ifdef __MSYS__
+msys_dll_init ()
+#else
 cygwin_dll_init ()
+#endif
 {
   static int _fmode;
 
diff --git a/winsup/cygwin/dlfcn.cc b/winsup/cygwin/dlfcn.cc
index e06616d..40d99dd 100644
--- a/winsup/cygwin/dlfcn.cc
+++ b/winsup/cygwin/dlfcn.cc
@@ -148,8 +148,13 @@ collect_basenames (pathfinder::basenamelist & basenames,
   /* If the basename starts with "lib", ... */
   if (!strncmp (basename, "lib", 3))
     {
+#ifdef __MSYS__
+      /* ... replace "lib" with "msys-", before ... */
+      basenames.appendv ("msys-", 5, basename+3, baselen-3, ext, extlen, NULL);
+#else
       /* ... replace "lib" with "cyg", before ... */
       basenames.appendv ("cyg", 3, basename+3, baselen-3, ext, extlen, NULL);
+#endif
     }
   /* ... using original basename with new suffix. */
   basenames.appendv (basename, baselen, ext, extlen, NULL);
diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc
index 1369165..5488737 100644
--- a/winsup/cygwin/dll_init.cc
+++ b/winsup/cygwin/dll_init.cc
@@ -903,7 +903,11 @@ dll_dllcrt0_1 (VOID *x)
 }
 
 extern "C" void
+#ifdef __MSYS__
+msys_detach_dll (dll *)
+#else
 cygwin_detach_dll (dll *)
+#endif
 {
   HANDLE retaddr;
   if (_my_tls.isinitialized ())
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 7303f7e..6ccc19a 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -997,9 +997,15 @@ handle_to_fn (HANDLE h, char *posix_fn)
       if (wcsncasecmp (w32, DEV_NAMED_PIPE, DEV_NAMED_PIPE_LEN) == 0)
 	{
 	  w32 += DEV_NAMED_PIPE_LEN;
+#ifdef __MSYS__
+	  if (wcsncmp (w32, L"msys-", WCLEN (L"msys-")) != 0)
+	    return false;
+	  w32 += WCLEN (L"msys-");
+#else
 	  if (wcsncmp (w32, L"cygwin-", WCLEN (L"cygwin-")) != 0)
 	    return false;
 	  w32 += WCLEN (L"cygwin-");
+#endif
 	  /* Check for installation key and trailing dash. */
 	  w32len = cygheap->installation_key.Length / sizeof (WCHAR);
 	  if (w32len
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index f79978f..e724e37 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -528,14 +528,14 @@ int exec_prepared_command (PWCHAR command)
   PWCHAR rawenv = GetEnvironmentStringsW () ;
   for (PWCHAR p = rawenv; *p != L'\0'; p = wcschr (p, L'\0') + 1)
     {
-      if (wcsncmp (p, L"CYGWIN=", wcslen (L"CYGWIN=")) == 0)
+      if (wcsncmp (p, L"MSYS=", wcslen (L"MSYS=")) == 0)
 	{
 	  PWCHAR q = wcsstr (p, L"error_start") ;
 	  /* replace 'error_start=...' with '_rror_start=...' */
 	  if (q)
 	    {
 	      *q = L'_' ;
-	      SetEnvironmentVariableW (L"CYGWIN", p + wcslen (L"CYGWIN=")) ;
+	      SetEnvironmentVariableW (L"MSYS", p + wcslen (L"MSYS=")) ;
 	    }
 	  break;
 	}
diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc
index 2ff5dfa..11ef78c 100644
--- a/winsup/cygwin/fhandler/pipe.cc
+++ b/winsup/cygwin/fhandler/pipe.cc
@@ -798,7 +798,11 @@ fhandler_pipe::close (int flag)
   return ret;
 }
 
+#ifdef __MSYS__
+#define PIPE_INTRO "\\\\.\\pipe\\msys-"
+#else
 #define PIPE_INTRO "\\\\.\\pipe\\cygwin-"
+#endif
 
 /* Create a pipe, and return handles to the read and write ends,
    just like CreatePipe, but ensure that the write end permits
diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc
index 468bc3b..d97e604 100644
--- a/winsup/cygwin/fhandler/pty.cc
+++ b/winsup/cygwin/fhandler/pty.cc
@@ -879,7 +879,11 @@ fhandler_pty_slave::open (int flags, mode_t)
       pipe_reply repl;
       DWORD len;
 
+#ifdef __MSYS__
+      __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+#else
       __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
+#endif
 		       &cygheap->installation_key, get_minor ());
       termios_printf ("dup handles via master control pipe %s", buf);
       if (!CallNamedPipe (buf, &req, sizeof req, &repl, sizeof repl,
@@ -1141,7 +1145,11 @@ fhandler_pty_slave::reset_switch_to_nat_pipe (void)
 		    {
 		      char pipe[MAX_PATH];
 		      __small_sprintf (pipe,
+#ifdef __MSYS__
+			       "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+#else
 			       "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
+#endif
 			       &cygheap->installation_key, get_minor ());
 		      pipe_request req = { GET_HANDLES, GetCurrentProcessId () };
 		      pipe_reply repl;
@@ -1602,9 +1610,15 @@ fhandler_pty_slave::tcflush (int queue)
   if (queue == TCIFLUSH || queue == TCIOFLUSH)
     {
       char pipe[MAX_PATH];
+#ifdef __MSYS__
+      __small_sprintf (pipe,
+		       "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+		       &cygheap->installation_key, get_minor ());
+#else
       __small_sprintf (pipe,
 		       "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
 		       &cygheap->installation_key, get_minor ());
+#endif
       pipe_request req = { FLUSH_INPUT, GetCurrentProcessId () };
       pipe_reply repl;
       DWORD n;
@@ -2036,7 +2050,11 @@ fhandler_pty_master::close (int flag)
 	  pipe_reply repl;
 	  DWORD len;
 
+#ifdef __MSYS__
+	  __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+#else
 	  __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
+#endif
 			   &cygheap->installation_key, get_minor ());
 	  acquire_output_mutex (mutex_timeout);
 	  if (master_ctl)
@@ -2946,7 +2964,11 @@ fhandler_pty_master::setup ()
 
   /* Create master control pipe which allows the master to duplicate
      the pty pipe handles to processes which deserve it. */
+#ifdef __MSYS__
+  __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+#else
   __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
+#endif
 		   &cygheap->installation_key, unit);
   master_ctl = CreateNamedPipe (buf, PIPE_ACCESS_DUPLEX
 				     | FILE_FLAG_FIRST_PIPE_INSTANCE,
@@ -3836,7 +3858,11 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp,
     {
       char pipe[MAX_PATH];
       __small_sprintf (pipe,
+#ifdef __MSYS__
+		       "\\\\.\\pipe\\msys-%S-pty%d-master-ctl",
+#else
 		       "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl",
+#endif
 		       &cygheap->installation_key, ttyp->get_minor ());
       pipe_request req = { GET_HANDLES, GetCurrentProcessId () };
       pipe_reply repl;
diff --git a/winsup/cygwin/hookapi.cc b/winsup/cygwin/hookapi.cc
index ee2edba..9f31a71 100644
--- a/winsup/cygwin/hookapi.cc
+++ b/winsup/cygwin/hookapi.cc
@@ -379,7 +379,11 @@ hook_or_detect_cygwin (const char *name, const void *fn, WORD& subsys, HANDLE h)
   for (PIMAGE_IMPORT_DESCRIPTOR pd = pdfirst; pd->FirstThunk; pd++)
     {
       if (!ascii_strcasematch (rva (PSTR, map ?: (char *) hm, pd->Name - delta),
+#ifdef __MSYS__
+			       "msys-2.0.dll"))
+#else
 			       "cygwin1.dll"))
+#endif
 	continue;
       if (!fn)
 	{
diff --git a/winsup/cygwin/include/cygwin/cygwin_dll.h b/winsup/cygwin/include/cygwin/cygwin_dll.h
index 1e4cf98..b77598b 100644
--- a/winsup/cygwin/include/cygwin/cygwin_dll.h
+++ b/winsup/cygwin/include/cygwin/cygwin_dll.h
@@ -24,8 +24,8 @@ details. */
 CDECL_BEGIN								      \
   int Entry (HINSTANCE h, DWORD reason, void *ptr);	              \
   typedef int (*mainfunc) (int, char **, char **);			      \
-  extern PVOID cygwin_attach_dll (HMODULE, mainfunc);			      \
-  extern void cygwin_detach_dll (PVOID);				      \
+  extern PVOID msys_attach_dll (HMODULE, mainfunc);			      \
+  extern void msys_detach_dll (PVOID);				      \
 CDECL_END								      \
 									      \
 static HINSTANCE storedHandle;						      \
@@ -42,7 +42,7 @@ static int __dllMain (int a __attribute__ ((__unused__)),		      \
 									      \
 static PVOID dll_index;							      \
 									      \
-int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr)	      \
+int _msys_dll_entry (HINSTANCE h, DWORD reason, void *ptr)	      \
 {									      \
   int ret;								      \
   ret = 1;								      \
@@ -55,7 +55,7 @@ int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr)	      \
       storedReason = reason;						      \
       storedPtr = ptr;							      \
       __dynamically_loaded = (ptr == NULL);				      \
-      dll_index = cygwin_attach_dll (h, &__dllMain);			      \
+      dll_index = msys_attach_dll (h, &__dllMain);			      \
       if (dll_index == (PVOID) -1)					      \
 	ret = 0;							      \
     }									      \
@@ -66,7 +66,7 @@ int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr)	      \
       ret = Entry (h, reason, ptr);					      \
       if (ret)								      \
       {									      \
-	cygwin_detach_dll (dll_index);					      \
+	msys_detach_dll (dll_index);					      \
 	dll_index = (PVOID) -1;						      \
       }									      \
     }									      \
diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h
index 69c19f5..e0f87a3 100644
--- a/winsup/cygwin/include/cygwin/version.h
+++ b/winsup/cygwin/include/cygwin/version.h
@@ -510,7 +510,11 @@ details. */
    names include the CYGWIN_VERSION_SHARED_DATA version as well as this
    identifier. */
 
+#ifdef __MSYS__
+#define CYGWIN_VERSION_DLL_IDENTIFIER	"msys-2.0"
+#else
 #define CYGWIN_VERSION_DLL_IDENTIFIER	"cygwin1"
+#endif
 
 /* The Cygwin mount table interface in the Win32 registry also has a version
    number associated with it in case that is changed in a non-backwards
@@ -526,7 +530,11 @@ details. */
 
 /* Identifiers used in the Win32 registry. */
 
+#ifdef __MSYS__
+#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "MSYS"
+#else
 #define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
+#endif
 #define CYGWIN_INFO_INSTALLATIONS_NAME   "Installations"
 
 /* The default cygdrive prefix. */
diff --git a/winsup/cygwin/lib/_cygwin_crt0_common.cc b/winsup/cygwin/lib/_cygwin_crt0_common.cc
index d356a50..801b6f9 100644
--- a/winsup/cygwin/lib/_cygwin_crt0_common.cc
+++ b/winsup/cygwin/lib/_cygwin_crt0_common.cc
@@ -73,7 +73,11 @@ struct per_process_cxx_malloc __cygwin_cxx_malloc =
    and then jump to the dll.  */
 
 int
+#ifdef __MSYS__
+_msys_crt0_common (MainFunc f, per_process *u)
+#else
 _cygwin_crt0_common (MainFunc f, per_process *u)
+#endif
 {
   per_process *newu = (per_process *) cygwin_internal (CW_USER_DATA);
   bool uwasnull;
diff --git a/winsup/cygwin/lib/crt0.h b/winsup/cygwin/lib/crt0.h
index e599b44..e817500 100644
--- a/winsup/cygwin/lib/crt0.h
+++ b/winsup/cygwin/lib/crt0.h
@@ -13,7 +13,11 @@ extern "C" {
 #include "winlean.h"
 struct per_process;
 typedef int (*MainFunc) (int argc, char *argv[], char **env);
+#ifdef __MSYS__
+int _msys_crt0_common (MainFunc, struct per_process *);
+#else
 int _cygwin_crt0_common (MainFunc, struct per_process *);
+#endif
 PVOID dll_dllcrt0 (HMODULE, struct per_process *);
 
 #ifdef __cplusplus
diff --git a/winsup/cygwin/lib/cygwin_attach_dll.c b/winsup/cygwin/lib/cygwin_attach_dll.c
index 866bfd8..82679c4 100644
--- a/winsup/cygwin/lib/cygwin_attach_dll.c
+++ b/winsup/cygwin/lib/cygwin_attach_dll.c
@@ -15,10 +15,18 @@ details. */
 
 /* for a loaded dll */
 PVOID
+#ifdef __MSYS__
+msys_attach_dll (HMODULE h, MainFunc f)
+#else
 cygwin_attach_dll (HMODULE h, MainFunc f)
+#endif
 {
   static struct per_process u;
+#ifdef __MSYS__
+  (void) _msys_crt0_common (f, &u);
+#else
   (void) _cygwin_crt0_common (f, &u);
+#endif
 
   /* jump into the dll. */
   return dll_dllcrt0 (h, &u);
diff --git a/winsup/cygwin/lib/cygwin_crt0.c b/winsup/cygwin/lib/cygwin_crt0.c
index 7020a63..396447e 100644
--- a/winsup/cygwin/lib/cygwin_crt0.c
+++ b/winsup/cygwin/lib/cygwin_crt0.c
@@ -14,8 +14,16 @@ extern void _dll_crt0 ()
 
 /* for main module */
 void
+#ifdef __MSYS__
+msys_crt0 (MainFunc f)
+#else
 cygwin_crt0 (MainFunc f)
+#endif
 {
+#ifdef __MSYS__
+  _msys_crt0_common (f, NULL);
+#else
   _cygwin_crt0_common (f, NULL);
+#endif
   _dll_crt0 ();	/* Jump into the dll, never to return */
 }
diff --git a/winsup/cygwin/local_includes/cygserver_setpwd.h b/winsup/cygwin/local_includes/cygserver_setpwd.h
index fc1576b..b297511 100644
--- a/winsup/cygwin/local_includes/cygserver_setpwd.h
+++ b/winsup/cygwin/local_includes/cygserver_setpwd.h
@@ -12,7 +12,11 @@ details. */
 #include <sys/types.h>
 #include "cygserver.h"
 
+#ifdef __MSYS__
+#define CYGWIN_LSA_KEY_PREFIX	L"L$MSYS_"
+#else
 #define CYGWIN_LSA_KEY_PREFIX	L"L$CYGWIN_"
+#endif
 
 #ifndef __INSIDE_CYGWIN__
 class transport_layer_base;
diff --git a/winsup/cygwin/scripts/mkvers.sh b/winsup/cygwin/scripts/mkvers.sh
index 38f439c..a3d45c5 100755
--- a/winsup/cygwin/scripts/mkvers.sh
+++ b/winsup/cygwin/scripts/mkvers.sh
@@ -123,7 +123,7 @@ dir=$(echo $dir | sed -e 's%/include/cygwin.*$%%' -e 's%include/cygwin.*$%.%')
 ) | while read var; do
     read val
 cat <<EOF
-  "%%% Cygwin $var: $val\n"
+  "%%% MSYS $var: $val\n"
 EOF
 done | tee /tmp/mkvers.$$ 1>&9
 
@@ -135,9 +135,9 @@ trap "rm -f /tmp/mkvers.$$" 0 1 2 15
 #
 cat <<EOF 1>&9
 #ifdef DEBUGGING
-  "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate\n"
+  "%%% MSYS shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate\n"
 #else
-  "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "\n"
+  "%%% MSYS shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "\n"
 #endif
   "END_CYGWIN_VERSION_INFO\n\0";
 cygwin_version_info cygwin_version =
diff --git a/winsup/cygwin/sec/auth.cc b/winsup/cygwin/sec/auth.cc
index f9906a5..2361ae5 100644
--- a/winsup/cygwin/sec/auth.cc
+++ b/winsup/cygwin/sec/auth.cc
@@ -462,7 +462,7 @@ verify_token (HANDLE token, cygsid &usersid, user_groups &groups, bool *pintern)
       if (!NT_SUCCESS (status))
 	debug_printf ("NtQueryInformationToken(), %y", status);
       else
-	*pintern = intern = !memcmp (ts.SourceName, "Cygwin.1", 8);
+	*pintern = intern = !memcmp (ts.SourceName, "MSYS.2", 6);
     }
   /* Verify usersid */
   cygsid tok_usersid (NO_SID);
@@ -747,7 +747,7 @@ s4uauth (bool logon, PCWSTR domain, PCWSTR user, NTSTATUS &ret_status)
     {
       /* Register as logon process. */
       debug_printf ("Impersonation requested");
-      RtlInitAnsiString (&name, "Cygwin");
+      RtlInitAnsiString (&name, "MSYS");
       status = LsaRegisterLogonProcess (&name, &lsa_hdl, &sec_mode);
     }
   else
@@ -786,11 +786,11 @@ s4uauth (bool logon, PCWSTR domain, PCWSTR user, NTSTATUS &ret_status)
     }
 
   /* Create origin. */
-  stpcpy (origin.buf, "Cygwin");
+  stpcpy (origin.buf, "MSYS");
   RtlInitAnsiString (&origin.str, origin.buf);
 
   /* Create token source. */
-  memcpy (ts.SourceName, "Cygwin.1", 8);
+  memcpy (ts.SourceName, "MSYS.2", 6);
   ts.SourceIdentifier.HighPart = 0;
   ts.SourceIdentifier.LowPart = kerberos_auth ? 0x0105 : 0x0106;
 
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 1b1ff17..eddc0f6 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -339,7 +339,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, ULONG flags)
     }
   else
     {
-      /* Create unique filename.  Start with a dot, followed by "cyg"
+      /* Create unique filename.  Start with a dot, followed by "msys"
 	 transposed to the Unicode private use area in the U+f700 area
 	 on file systems supporting Unicode (except Samba), followed by
 	 the inode number in hex, followed by a path hash in hex.  The
@@ -347,7 +347,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, ULONG flags)
       RtlAppendUnicodeToString (&recycler,
 				(pc.fs_flags () & FILE_UNICODE_ON_DISK
 				 && !pc.fs_is_samba ())
-				? L".\xf763\xf779\xf767" : L".cyg");
+				? L".\xf76d\xf773\xf779\xf773" : L".msys");
       pfii = (PFILE_INTERNAL_INFORMATION) infobuf;
       status = NtQueryInformationFile (fh, &io, pfii, sizeof *pfii,
 				       FileInternalInformation);
diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc
index 6a29550..431f9d2 100644
--- a/winsup/cygwin/syslog.cc
+++ b/winsup/cygwin/syslog.cc
@@ -26,7 +26,11 @@ details. */
 #include "cygtls.h"
 #include "tls_pbuf.h"
 
+#ifdef __MSYS__
+#define CYGWIN_LOG_NAME L"MSYS"
+#else
 #define CYGWIN_LOG_NAME L"Cygwin"
+#endif
 
 static struct
 {
diff --git a/winsup/cygwin/winver.rc b/winsup/cygwin/winver.rc
index 980d512..58878d4 100644
--- a/winsup/cygwin/winver.rc
+++ b/winsup/cygwin/winver.rc
@@ -35,7 +35,7 @@ BEGIN
       VALUE "InternalName", CYGWIN_DLL_NAME
       VALUE "LegalCopyright", "Copyright \251 Cygwin Authors 1996-" STRINGIFY(CYGWIN_BUILD_YEAR)
       VALUE "OriginalFilename", CYGWIN_DLL_NAME
-      VALUE "ProductName", "Cygwin"
+      VALUE "ProductName", "MSYS2"
       VALUE "ProductVersion", STRINGIFY(CYGWIN_VERSION)
       VALUE "APIVersion", CYGWIN_API_VERSION
       VALUE "SharedMemoryVersion", STRINGIFY(CYGWIN_VERSION_SHARED_DATA)
diff --git a/winsup/testsuite/winsup.api/cygload.cc b/winsup/testsuite/winsup.api/cygload.cc
index afd3ee9..1b2f79d 100644
--- a/winsup/testsuite/winsup.api/cygload.cc
+++ b/winsup/testsuite/winsup.api/cygload.cc
@@ -25,7 +25,7 @@
 		     save for errors.
      -testinterrupts Pauses the program for 30 seconds so you can demonstrate
 		     that it handles ^C properly.
-     -cygwin         Name of DLL to load.  Defaults to "cygwin1.dll". */
+     -cygwin         Name of DLL to load.  Defaults to "msys-2.0.dll". */
 
 #include "cygload.h"
 #include <iostream>
@@ -154,13 +154,13 @@ cygwin::connector::connector (const char *dll)
 
   *out << "Initializing cygwin..." << endl;
 
-  // This calls dcrt0.cc:cygwin_dll_init(), which calls dll_crt0_1(),
+  // This calls dcrt0.cc:msys_dll_init(), which calls dll_crt0_1(),
   // which will, among other things:
   // * spawn the cygwin signal handling thread from sigproc_init()
   // * initialize the thread-local storage for this thread and overwrite
   //   the first 4K of the stack
   void (*cyginit) ();
-  get_symbol ("cygwin_dll_init", cyginit);
+  get_symbol ("msys_dll_init", cyginit);
   (*cyginit) ();
 
   *out << "Loading symbols..." << endl;
@@ -224,7 +224,7 @@ cygwin::connector::~connector ()
 
     // This should call init.cc:dll_entry() with DLL_PROCESS_DETACH.
     if (!FreeLibrary (_library))
-      throw windows_error ("FreeLibrary", "cygwin1.dll");
+      throw windows_error ("FreeLibrary", "msys-2.0.dll");
   }
   catch (std::exception &x)
   {
@@ -490,7 +490,7 @@ main (int argc, char *argv[])
 
   std::ostringstream output;
   bool verbose = false, testinterrupts = false;
-  const char *dll = "cygwin1.dll";
+  const char *dll = "msys-2.0.dll";
 
   out = &output;
 
diff --git a/winsup/testsuite/winsup.api/cygload.h b/winsup/testsuite/winsup.api/cygload.h
index 3015404..0f2aacd 100644
--- a/winsup/testsuite/winsup.api/cygload.h
+++ b/winsup/testsuite/winsup.api/cygload.h
@@ -76,7 +76,7 @@ namespace cygwin
   // spawns a thread to let you receive signals from cygwin.
   class connector {
   public:
-    connector (const char *dll = "cygwin1.dll");
+    connector (const char *dll = "msys-2.0.dll");
     ~connector ();
 
     // A wrapper around GetProcAddress() for fetching symbols from the
diff --git a/winsup/utils/ldd.cc b/winsup/utils/ldd.cc
index 0d073c2..a31c4c6 100644
--- a/winsup/utils/ldd.cc
+++ b/winsup/utils/ldd.cc
@@ -249,7 +249,7 @@ tocyg (wchar_t *win_fn)
   return fn;
 }
 
-#define CYGWIN_DLL_LEN (wcslen (L"\\cygwin1.dll"))
+#define CYGWIN_DLL_LEN (wcslen (L"\\msys-2.0.dll"))
 static int
 print_dlls (dlls *dll, const wchar_t *dllfn, const wchar_t *process_fn)
 {
diff --git a/winsup/utils/loadlib.h b/winsup/utils/loadlib.h
index c83b764..42ffbfd 100644
--- a/winsup/utils/loadlib.h
+++ b/winsup/utils/loadlib.h
@@ -13,7 +13,7 @@
 #include <wchar.h>
 
 /* Load all system libs from the windows system directory by prepending the
-   full path.  This doesn't work for loadling cygwin1.dll.  For this case,
+   full path.  This doesn't work for loadling msys-2.0.dll.  For this case,
    instead of prepending the path, make sure that the CWD is removed from
    the DLL search path, if possible (XP SP1++, Vista++). */
 static HMODULE _load_sys_library (const wchar_t *dll) __attribute__ ((used));
@@ -45,8 +45,8 @@ _load_sys_library (const wchar_t *dll)
       	set_dll_directory (L"");
     }
 
-  if (wcscmp (dll, L"cygwin1.dll") == 0)
-    return LoadLibraryExW (L"cygwin1.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+  if (wcscmp (dll, L"msys-2.0.dll") == 0)
+    return LoadLibraryExW (L"msys-2.0.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
 
   wcscpy (dllpath, sysdir);
   wcscpy (dllpath + sysdir_len, dll);
diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc
index 89a08e5..1637683 100644
--- a/winsup/utils/mingw/cygcheck.cc
+++ b/winsup/utils/mingw/cygcheck.cc
@@ -95,8 +95,7 @@ static const char *known_env_vars[] = {
   "c_include_path",
   "compiler_path",
   "cxx_include_path",
-  "cygwin",
-  "cygwin32",
+  "msys",
   "dejagnu",
   "expect",
   "gcc_default_options",
@@ -554,7 +553,7 @@ struct ImpDirectory
 
 static bool track_down (const char *file, const char *suffix, int lvl);
 
-#define CYGPREFIX (sizeof ("%%% Cygwin ") - 1)
+#define CYGPREFIX (sizeof ("%%% Msys ") - 1)
 static void
 cygwin_info (HANDLE h)
 {
@@ -586,7 +585,7 @@ cygwin_info (HANDLE h)
   while (buf < bufend)
     if ((buf = (char *) memchr (buf, '%', bufend - buf)) == NULL)
       break;
-    else if (strncmp ("%%% Cygwin ", buf, CYGPREFIX) != 0)
+    else if (strncmp ("%%% Msys ", buf, CYGPREFIX) != 0)
       buf++;
     else
       {
@@ -780,7 +779,7 @@ dll_info (const char *path, HANDLE fh, int lvl, int recurse)
 	    }
 	}
     }
-  if (strstr (path, "\\cygwin1.dll"))
+  if (strstr (path, "\\msys-2.0.dll"))
     cygwin_info (fh);
 }
 
@@ -1027,7 +1026,7 @@ scan_registry (RegInfo * prev, HKEY hKey, char *name, int cygwin, bool wow64)
 
   char *cp;
   for (cp = name; *cp; cp++)
-    if (strncasecmp (cp, "Cygwin", 6) == 0)
+    if (strncasecmp (cp, "Msys", 4) == 0)
       cygwin = 1;
 
   DWORD num_subkeys, max_subkey_len, num_values;
@@ -1309,7 +1308,7 @@ handle_reg_installation (handle_reg_t what)
     printf ("Cygwin installations found in the registry:\n");
   for (int i = 0; i < 2; ++i)
     if (RegOpenKeyEx (i ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
-		      "SOFTWARE\\Cygwin\\Installations", 0,
+		      "SOFTWARE\\Msys\\Installations", 0,
 		      what == DELETE_KEY ? KEY_READ | KEY_WRITE : KEY_READ,
 		      &key)
 	== ERROR_SUCCESS)
@@ -1331,7 +1330,7 @@ handle_reg_installation (handle_reg_t what)
 	      if (what == PRINT_KEY)
 		printf ("  %s Key: %s Path: %s", i ? "User:  " : "System:",
 			name, path);
-	      strcat (path, "\\bin\\cygwin1.dll");
+	      strcat (path, "\\bin\\msys-2.0.dll");
 	      if (what == PRINT_KEY)
 		printf ("%s\n", access (path, F_OK) ? " (ORPHANED)" : "");
 	      else if (access (path, F_OK))
@@ -1785,7 +1784,7 @@ dump_sysinfo ()
   if (registry)
     {
       if (givehelp)
-	printf ("Scanning registry for keys with 'Cygwin' in them...\n");
+	printf ("Scanning registry for keys with 'Msys' in them...\n");
       scan_registry (0, HKEY_CURRENT_USER,
 		     (char *) "HKEY_CURRENT_USER", 0, false);
       scan_registry (0, HKEY_LOCAL_MACHINE,
@@ -1980,10 +1979,10 @@ dump_sysinfo ()
 	  wcstombs (f, ffinfo.cFileName, sizeof f);
 	  if (strcasecmp (f + strlen (f) - 4, ".dll") == 0)
 	    {
-	      if (strncasecmp (f, "cyg", 3) == 0)
+	      if (strncasecmp (f, "msys-", 5) == 0)
 		{
 		  sprintf (tmp, "%s%s", pth->dir, f);
-		  if (strcasecmp (f, "cygwin1.dll") == 0)
+		  if (strcasecmp (f, "msys-2.0.dll") == 0)
 		    {
 		      if (!cygwin_dll_count)
 			strcpy (cygdll_path, pth->dir);
@@ -2007,9 +2006,9 @@ dump_sysinfo ()
       FindClose (ff);
     }
   if (cygwin_dll_count > 1)
-    puts ("Warning: There are multiple cygwin1.dlls on your path");
+    puts ("Warning: There are multiple msys-2.0.dlls on your path");
   if (!cygwin_dll_count)
-    puts ("Warning: cygwin1.dll not found on your path");
+    puts ("Warning: msys-2.0.dll not found on your path");
 
   dump_dodgy_apps (verbose);
 
@@ -3023,7 +3022,7 @@ load_cygwin (int& argc, char **&argv)
 {
   HMODULE h;
 
-  if (!(h = LoadLibrary ("cygwin1.dll")))
+  if (!(h = LoadLibrary ("msys-2.0.dll")))
     return;
   GetModuleFileNameW (h, cygwin_dll_path, 32768);
   if ((cygwin_internal = (uintptr_t (*) (cygwin_getinfo_types, ...))
diff --git a/winsup/utils/mingw/strace.cc b/winsup/utils/mingw/strace.cc
index c220643..29db640 100644
--- a/winsup/utils/mingw/strace.cc
+++ b/winsup/utils/mingw/strace.cc
@@ -284,7 +284,7 @@ load_cygwin ()
   if (h)
     return 0;
 
-  if (!(h = LoadLibrary ("cygwin1.dll")))
+  if (!(h = LoadLibrary ("msys-2.0.dll")))
     {
       errno = ENOENT;
       return 0;
@@ -354,17 +354,16 @@ create_child (char **argv)
   make_command_line (one_line, argv);
 
   SetConsoleCtrlHandler (NULL, 0);
-
-  const char *cygwin_env = getenv ("CYGWIN");
+  const char *cygwin_env = getenv ("MSYS");
   const char *space;
 
   if (cygwin_env && strlen (cygwin_env) <= 256) /* sanity check */
     space = " ";
   else
     space = cygwin_env = "";
-  char *newenv = (char *) malloc (sizeof ("CYGWIN=noglob")
+  char *newenv = (char *) malloc (sizeof ("MSYS=noglob")
 				  + strlen (space) + strlen (cygwin_env));
-  sprintf (newenv, "CYGWIN=noglob%s%s", space, cygwin_env);
+  sprintf (newenv, "MSYS=noglob%s%s", space, cygwin_env);
   _putenv (newenv);
   ret = CreateProcess (0, one_line.buf,	/* command line */
 		       NULL,	/* Security */
diff --git a/winsup/utils/path.cc b/winsup/utils/path.cc
index fe55a64..323e4c7 100644
--- a/winsup/utils/path.cc
+++ b/winsup/utils/path.cc
@@ -585,14 +585,14 @@ read_mounts ()
     }
   max_mount_entry = 0;
 
-  /* First fetch the cygwin1.dll path from the LoadLibrary call in load_cygwin.
-     This utilizes the DLL search order to find a matching cygwin1.dll and to
+  /* First fetch the msys-2.0.dll path from the LoadLibrary call in load_cygwin.
+     This utilizes the DLL search order to find a matching msys-2.0.dll and to
      compute the installation path from that DLL's path. */
   if (cygwin_dll_path[0])
     wcscpy (path, cygwin_dll_path);
-  /* If we can't load cygwin1.dll, check where cygcheck is living itself and
-     try to fetch installation path from here.  Does cygwin1.dll exist in the
-     same path?  This should only kick in if the cygwin1.dll in the same path
+  /* If we can't load msys-2.0.dll, check where cygcheck is living itself and
+     try to fetch installation path from here.  Does msys-2.0.dll exist in the
+     same path?  This should only kick in if the msys-2.0.dll in the same path
      has been made non-executable for the current user accidentally. */
   else if (!GetModuleFileNameW (NULL, path, 32768))
     return;
@@ -601,7 +601,7 @@ read_mounts ()
     {
       if (!cygwin_dll_path[0])
 	{
-	  wcscpy (path_end, L"\\cygwin1.dll");
+	  wcscpy (path_end, L"\\msys-2.0.dll");
 	  DWORD attr = GetFileAttributesW (path);
 	  if (attr == (DWORD) -1
 	      || (attr & (FILE_ATTRIBUTE_DIRECTORY
diff --git a/winsup/utils/ssp.c b/winsup/utils/ssp.c
index 96a90a1..95045e1 100644
--- a/winsup/utils/ssp.c
+++ b/winsup/utils/ssp.c
@@ -710,15 +710,15 @@ usage (FILE * stream)
     "You must specify the range of memory addresses to keep track of\n"
     "manually, but it's not hard to figure out what to specify.  Use the\n"
     "\"objdump\" program to determine the bounds of the target's \".text\"\n"
-    "section.  Let's say we're profiling cygwin1.dll.  Make sure you've\n"
+    "section.  Let's say we're profiling msys-2.0.dll.  Make sure you've\n"
     "built it with debug symbols (else gprof won't run) and run objdump\n"
     "like this:\n"
     "\n"
-    "	objdump -h cygwin1.dll\n"
+    "	objdump -h msys-2.0.dll\n"
     "\n"
     "It will print a report like this:\n"
     "\n"
-    "cygwin1.dll:     file format pei-i386\n"
+    "msys-2.0.dll:     file format pei-i386\n"
     "\n"
     "Sections:\n"
     "Idx Name          Size      VMA       LMA       File off  Algn\n"
@@ -749,7 +749,7 @@ usage (FILE * stream)
     "\"gmon.out\".  You can turn this data file into a readable report with\n"
     "gprof:\n"
     "\n"
-    "	gprof -b cygwin1.dll\n"
+    "	gprof -b msys-2.0.dll\n"
     "\n"
     "The \"-b\" means 'skip the help pages'.  You can omit this until you're\n"
     "familiar with the report layout.  The gprof documentation explains\n"
