From dc7a7ec03f889efe7fc10a3071c20527272f7564 Mon Sep 17 00:00:00 2001 From: Jonathan Yong <10walls@gmail.com> Date: Sat, 28 Jun 2014 09:44:48 +0800 Subject: [PATCH 14/24] add dummy -pthread, -tsaware and --large-address-aware for executables only --- gcc/config.gcc | 4 ++-- gcc/config/i386/cygwin.h | 6 +++++- gcc/config/i386/cygwin-w64.h | 4 +++- gcc/config/i386/cygwin.opt | 28 ++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 gcc/config/i386/cygwin.opt diff --git a/gcc/config.gcc b/gcc/config.gcc --- a/gcc/config.gcc 2015-02-16 15:56:43.460029500 -0600 +++ b/gcc/config.gcc 2015-02-16 15:57:04.754233500 -0600 @@ -1586,7 +1586,7 @@ 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" @@ -1602,7 +1602,7 @@ 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" diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h index 145e3cc..4e15ab0 100644 --- a/gcc/config/i386/cygwin.h +++ b/gcc/config/i386/cygwin.h @@ -77,12 +77,14 @@ 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" /* To implement C++ function replacement we always wrap the cxx malloc-like operators. See N2800 #17.6.4.6 [replacement.functions] */ +#undef CXX_WRAP_SPEC_LIST #define CXX_WRAP_SPEC_LIST " \ --wrap _Znwj \ --wrap _Znaj \ @@ -120,7 +122,9 @@ along with GCC; see the file COPYING3. If not see %{shared: --shared} %{mdll:--dll} \ %{static:-Bstatic} %{!static:-Bdynamic} \ %{shared|mdll: --enable-auto-image-base -e __cygwin_dll_entry@12} \ - --dll-search-prefix=cyg -tsaware" + --dll-search-prefix=cyg \ + %{rdynamic: --export-all-symbols} \ + %{!shared: %{!mdll: --large-address-aware --tsaware}}" /* Binutils does not handle weak symbols from dlls correctly. For now, do not use them unnecessarily in gthr-posix.h. */ diff --git a/gcc/config/i386/cygwin-w64.h b/gcc/config/i386/cygwin-w64.h --- a/gcc/config/i386/cygwin-w64.h 2014-01-02 16:23:26.000000000 -0600 +++ b/gcc/config/i386/cygwin-w64.h 2015-02-22 11:46:46.871384100 -0600 @@ -66,7 +66,9 @@ along with GCC; see the file COPYING3. %{static:-Bstatic} %{!static:-Bdynamic} \ %{shared|mdll: " SUB_LINK_ENTRY " --enable-auto-image-base} \ %(shared_libgcc_undefs) \ - --dll-search-prefix=cyg -tsaware" + --dll-search-prefix=cyg \ + %{rdynamic: --export-all-symbols} \ + %{!shared: %{!mdll: %{" SPEC_32 ":--large-address-aware} --tsaware}}" /* Cygwin64 will have a 64-bit long type. */ #undef LONG_TYPE_SIZE diff --git a/gcc/config/i386/cygwin.opt b/gcc/config/i386/cygwin.opt new file mode 100644 index 0000000..93458f0 --- /dev/null +++ b/gcc/config/i386/cygwin.opt @@ -0,0 +1,28 @@ +; Cygwin-specific options. + +; Copyright (C) 2005, 2007, 2009, 2010, 2011 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 +; . + +pthread +Driver + +rdynamic +Driver + +; Retain blank line above + -- 2.1.1