config.gcc (*-*-cygwin*): Use __cxa_atexit by default.
authorYaakov Selkowitz <yselkowi@redhat.com>
Tue, 19 Aug 2014 15:21:22 +0000 (15:21 +0000)
committerKai Tietz <ktietz@gcc.gnu.org>
Tue, 19 Aug 2014 15:21:22 +0000 (17:21 +0200)
2014-08-19  Yaakov Selkowitz  <yselkowi@redhat.com>

* config.gcc (*-*-cygwin*): Use __cxa_atexit by default.
(extra_options): Add i386/cygwin.opt.
* config/i386/cygwin.h (STARTFILE_SPEC): Use crtbeginS.o if shared.
(CPP_SPEC): Accept -pthread.
(LINK_SPEC): Ditto.
(GOMP_SELF_SPECS): Update comment.
* config/i386/cygwin.opt: New file for -pthread flag.

From-SVN: r214161

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/cygwin.h
gcc/config/i386/cygwin.opt [new file with mode: 0644]

index bdc40fe..b71c1c7 100644 (file)
@@ -1,3 +1,13 @@
+2014-08-19  Yaakov Selkowitz  <yselkowi@redhat.com>
+
+       * config.gcc (*-*-cygwin*): Use __cxa_atexit by default.
+       (extra_options): Add i386/cygwin.opt.
+       * config/i386/cygwin.h (STARTFILE_SPEC): Use crtbeginS.o if shared.
+       (CPP_SPEC): Accept -pthread.
+       (LINK_SPEC): Ditto.
+       (GOMP_SELF_SPECS): Update comment.
+       * config/i386/cygwin.opt: New file for -pthread flag.
+
 2014-08-19  David Malcolm  <dmalcolm@redhat.com>
 
        * df-core.c (DF_REF_INSN): New, using a checked cast for now.
index e1f1532..6862c12 100644 (file)
@@ -1568,13 +1568,14 @@ i[34567]86-*-cygwin*)
        xm_file=i386/xm-cygwin.h
        tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
-       extra_options="${extra_options} i386/cygming.opt"
+       extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
        extra_objs="winnt.o winnt-stubs.o"
        c_target_objs="${c_target_objs} msformat-c.o"
        cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
+       default_use_cxa_atexit=yes
        use_gcc_stdint=wrap
        ;;
 x86_64-*-cygwin*)
@@ -1583,13 +1584,14 @@ x86_64-*-cygwin*)
        xm_file=i386/xm-cygwin.h
        tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
-       extra_options="${extra_options} i386/cygming.opt"
+       extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
        extra_objs="winnt.o winnt-stubs.o"
        c_target_objs="${c_target_objs} msformat-c.o"
        cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
+       default_use_cxa_atexit=yes
        use_gcc_stdint=wrap
        tm_defines="${tm_defines} TARGET_CYGWIN64=1"
        ;;
index 0ea29ce..14891d8 100644 (file)
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #undef CPP_SPEC
 #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
   %{!ansi:-Dunix} \
+  %{pthread:-D_REENTRANT} \
   %{mwin32:-DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__ %{!ansi:-DWINNT}} \
   %{!nostdinc:%{!mno-win32:-idirafter ../include/w32api%s -idirafter ../../include/w32api%s}}\
 "
@@ -40,7 +41,7 @@ along with GCC; see the file COPYING3.  If not see
 #define STARTFILE_SPEC "\
   %{!shared: %{!mdll: crt0%O%s \
   %{pg:gcrt0%O%s}}}\
-  crtbegin.o%s"
+  %{shared:crtbeginS.o%s;:crtbegin.o%s}"
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC \
@@ -77,6 +78,7 @@ along with GCC; see the file COPYING3.  If not see
 #undef LIB_SPEC
 #define LIB_SPEC "\
   %{pg:-lgmon} \
+  %{pthread: } \
   -lcygwin \
   %{mwindows:-lgdi32 -lcomdlg32} \
   -ladvapi32 -lshell32 -luser32 -lkernel32"
@@ -129,7 +131,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Every program on cygwin links against cygwin1.dll which contains 
    the pthread routines.  There is no need to explicitly link them
-   and the -pthread flag is not recognized.  */
+   and the -pthread flag is accepted only for compatibility.  */
 #undef GOMP_SELF_SPECS
 #define GOMP_SELF_SPECS ""
 #undef GTM_SELF_SPECS
diff --git a/gcc/config/i386/cygwin.opt b/gcc/config/i386/cygwin.opt
new file mode 100644 (file)
index 0000000..4a67b8f
--- /dev/null
@@ -0,0 +1,24 @@
+; Cygwin-specific options.
+
+; Copyright (C) 2013-2014 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
+; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+; for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3.  If not see
+; <http://www.gnu.org/licenses/>.
+
+pthread
+Driver
+
+; Retain blank line above