diff options
author | Aaron W. LaFramboise <aaronavay62@aaronwl.com> | 2008-08-31 12:14:25 -0600 |
---|---|---|
committer | Aaron W. LaFramboise <aaronwl@gcc.gnu.org> | 2008-08-31 12:14:25 -0600 |
commit | d89f0ad6225ed957153f92edf50f06890193c32f (patch) | |
tree | 349007eb9608d2d70057524bcd0d030010875820 /gcc | |
parent | 3e196fa9b9e3d7ce3b23e11f6517a6439506a2bc (diff) | |
download | gcc-d89f0ad6225ed957153f92edf50f06890193c32f.zip gcc-d89f0ad6225ed957153f92edf50f06890193c32f.tar.gz gcc-d89f0ad6225ed957153f92edf50f06890193c32f.tar.bz2 |
configure.ac (RPATH_ENVVAR): Use PATH on Windows.
2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
<toplevel>
* configure.ac (RPATH_ENVVAR): Use PATH on Windows.
(GCC_SHLIB_SUBDIR): New.
* Makefile.tpl (HOST_LIB_PATH_gcc): Use GCC_SHLIB_SUBDIR.
* configure: Regenerate.
* Makefile.in: Regenerate.
<gcc>
* mkmap-flat.awk: Add option pe_dll.
* config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
* gcc/config/i386/t-cygwin (SHLIB_LC): Add.
* gcc/config/i386/t-mingw32 (SHLIB_LC): Add.
* config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
(SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
(LINK_SPEC): Support libgcc_s.
(LIBGCC_SPEC): Support libgcc_s.
(LIBGCC_SONAME): New.
<libstdc++-v3>
* acinclude.m4 <enable_symvers>: Don't use symvers on Windows.
* configure: Regenerated.
* Makefile.in: Regenerated.
* src/Makefile.in: Regenerated.
* doc/makefile.in: Regenerated.
* po/Makefile.in: Regenerated.
* libmath/Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* libsupc++/Makefile.in: Regenerated.
* testsuite/makefile.in: Regenerated.
From-SVN: r139837
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/i386/mingw32.h | 25 | ||||
-rw-r--r-- | gcc/config/i386/t-cygming | 48 | ||||
-rw-r--r-- | gcc/config/i386/t-cygwin | 2 | ||||
-rw-r--r-- | gcc/config/i386/t-mingw32 | 3 | ||||
-rw-r--r-- | gcc/mkmap-flat.awk | 14 |
6 files changed, 99 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c74589c..7b14a2c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com> + + * mkmap-flat.awk: Add option pe_dll. + * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s. + * config/i386/t-cygwin (SHLIB_LC): Add. + * config/i386/t-mingw32 (SHLIB_LC): Add. + * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New. + (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC. + (LINK_SPEC): Support libgcc_s. + (LIBGCC_SPEC): Support libgcc_s. + (LIBGCC_SONAME): New. + 2008-08-31 Jan Hubicka <jh@suse.cz> * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index f5abe78..bb5fd7f 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -67,19 +67,33 @@ along with GCC; see the file COPYING3. If not see #define LIB_SPEC "%{pg:-lgmon} %{mwindows:-lgdi32 -lcomdlg32} \ -luser32 -lkernel32 -ladvapi32 -lshell32" -/* Include in the mingw32 libraries with libgcc */ -#undef LINK_SPEC +/* Weak symbols do not get resolved if using a Windows dll import lib. + Make the unwind registration references strong undefs. */ +#if DWARF2_UNWIND_INFO +#define SHARED_LIBGCC_UNDEFS_SPEC \ + "%{shared-libgcc: -u ___register_frame_info -u ___deregister_frame_info}" +#else +#define SHARED_LIBGCC_UNDEFS_SPEC "" +#endif + +#undef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS \ + { "shared_libgcc_undefs", SHARED_LIBGCC_UNDEFS_SPEC } + #define LINK_SPEC "%{mwindows:--subsystem windows} \ %{mconsole:--subsystem console} \ %{shared: %{mdll: %eshared and mdll are not compatible}} \ %{shared: --shared} %{mdll:--dll} \ %{static:-Bstatic} %{!static:-Bdynamic} \ - %{shared|mdll: -e _DllMainCRTStartup@12}" + %{shared|mdll: -e _DllMainCRTStartup@12 --enable-auto-image-base} \ + %(shared_libgcc_undefs)" /* Include in the mingw32 libraries with libgcc */ #undef LIBGCC_SPEC #define LIBGCC_SPEC \ - "%{mthreads:-lmingwthrd} -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt" + "-lmingw32 \ + %{shared-libgcc:-lgcc_s} -lgcc \ + -lmoldname -lmingwex -lmsvcrt" #undef STARTFILE_SPEC #define STARTFILE_SPEC "%{shared|mdll:dllcrt2%O%s} \ @@ -186,3 +200,6 @@ __enable_execute_stack (void *addr) \ #if !TARGET_64BIT #define MD_UNWIND_SUPPORT "config/i386/w32-unwind.h" #endif + +/* This matches SHLIB_SONAME and SHLIB_SOVERSION in t-cygming. */ +#define LIBGCC_SONAME "libgcc_s_1.dll" diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming index b2c50df..c6e6cac 100644 --- a/gcc/config/i386/t-cygming +++ b/gcc/config/i386/t-cygming @@ -36,3 +36,51 @@ msformat-c.o: $(srcdir)/config/i386/msformat-c.c $(CONFIG_H) $(SYSTEM_H) coretyp $(srcdir)/config/i386/msformat-c.c STMP_FIXINC=stmp-fixinc + +# Build a shared libgcc library for PECOFF with a DEF file +# with the GNU linker. +# +# mkmap-flat.awk is used with the pe_dll option to produce a DEF instead +# of an ELF map file. +# +# Warning: If SHLIB_SOVERSION or SHLIB_SONAME is updated, LIBGCC_SONAME +# in mingw32.h must be updated also. + +SHLIB_EXT = .dll +SHLIB_IMPLIB = @shlib_base_name@.a +SHLIB_SOVERSION = 1 +SHLIB_SONAME = @shlib_base_name@_$(SHLIB_SOVERSION)$(SHLIB_EXT) +SHLIB_MAP = @shlib_map_file@ +SHLIB_OBJS = @shlib_objs@ +SHLIB_DIR = @multilib_dir@/shlib +SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ +SHLIB_LC = -luser32 -lkernel32 -ladvapi32 -lshell32 + +SHLIB_LINK = $(LN_S) $(SHLIB_MAP) $(SHLIB_MAP).def && \ + if [ ! -d $(SHLIB_DIR) ]; then \ + mkdir $(SHLIB_DIR) \ + else true; fi && \ + $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + $(SHLIB_MAP).def \ + -Wl,--out-implib,$(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp \ + -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ + $(SHLIB_OBJS) $(SHLIB_LC) && \ + $(AR_FOR_TARGET) -r $(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp \ + _chkstk.o _ctors.o gthr-win32.o && \ + if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \ + mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \ + $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \ + else true; fi && \ + mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \ + mv $(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp $(SHLIB_DIR)/$(SHLIB_IMPLIB) +# $(slibdir) double quoted to protect it from expansion while building +# libgcc.mk. We want this delayed until actual install time. +SHLIB_INSTALL = \ + $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ + $(INSTALL_PROGRAM) $(SHLIB_DIR)/$(SHLIB_SONAME) \ + $$(DESTDIR)$$(bindir)/$(SHLIB_SONAME); \ + $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_IMPLIB) \ + $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_IMPLIB) +SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk +SHLIB_MKMAP_OPTS = -v pe_dll=1 +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver diff --git a/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin index c6e7773..3715c0b 100644 --- a/gcc/config/i386/t-cygwin +++ b/gcc/config/i386/t-cygwin @@ -14,3 +14,5 @@ cygwin2.o: $(srcdir)/config/i386/cygwin2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/i386/cygwin2.c +# Cygwin-specific parts of LIB_SPEC +SHLIB_LC += -lcygwin diff --git a/gcc/config/i386/t-mingw32 b/gcc/config/i386/t-mingw32 index 6d043a3..79554e7 100644 --- a/gcc/config/i386/t-mingw32 +++ b/gcc/config/i386/t-mingw32 @@ -1,2 +1,5 @@ # Match SYSTEM_INCLUDE_DIR NATIVE_SYSTEM_HEADER_DIR = /mingw/include + +# MinGW-specific parts of LIB_SPEC +SHLIB_LC += -lmingw32 -lmingwex -lmoldname -lmsvcrt diff --git a/gcc/mkmap-flat.awk b/gcc/mkmap-flat.awk index 377731a..4a9a993 100644 --- a/gcc/mkmap-flat.awk +++ b/gcc/mkmap-flat.awk @@ -18,6 +18,11 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. +# Options: +# "-v leading_underscore=1" : Symbols in map need leading underscore. +# "-v pe_dll=1" : Create .DEF file for Windows PECOFF +# DLL link instead of map file. + BEGIN { state = "nm"; excluding = 0; @@ -86,7 +91,14 @@ $1 == "}" { } END { + + if (pe_dll) { + # This matches SHLIB_SONAME in config/i386/t-cygming. + print "LIBRARY libgcc_s_1.dll"; + print "EXPORTS"; + } + for (sym in export) - if (def[sym]) + if (def[sym] || (pe_dll && def["_" sym])) print sym; } |