[Patch/mingw32] : Fix PR target/37528.
Danny Smith
dansmister@gmail.com
Thu Oct 2 09:10:00 GMT 2008
The heuristics in gcc.c:init_gcc_specs do not seem to accomodate an OS like
mingw32 for which shared libraries do not admit undefined symbols. Thus,
the -shared option for building a dll will often fail, following the
init_gcc_specs logic, becase only "shared_name" (and not inclusion of the
"other" functions in libgcc via "static_name" ) will be provided.
Rather than confuse init_gcc_specs further, I think it is safer to
define REAL_LIBGCC_SPEC for mingw32, to allow windows-specific rules.
Because a shared libgcc is already a big step in many mingw32 eyes, I
have conservatively required an explicit -shared-libgcc switch to enable
libgcc_s on mingw. regardless of whether we are building an exe or a
dll. Perhaps later, mingw users will want to default to shared-libgcc,
at least for dll builds, but in that case we will still need to ensure that
the static libgcc.a functions can be resolved in .dll as well as .exe builds.
2008-10-02 Danny Smith <dannysmith@users.sourceforge.net>
PR target/37528
* config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
(REAL_LIBGCC_SPEC): New. Always include -lgcc.
Index: config/i386/mingw32.h
===================================================================
--- config/i386/mingw32.h (revision 140821)
+++ config/i386/mingw32.h (working copy)
@@ -89,10 +89,12 @@
%(shared_libgcc_undefs)"
/* Include in the mingw32 libraries with libgcc */
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC \
+#undef REAL_LIBGCC_SPEC
+#define REAL_LIBGCC_SPEC \
"-lmingw32 \
- %{shared-libgcc:-lgcc_s} -lgcc \
+ %{shared-libgcc:-lgcc_s} \
+ %{!shared-libgcc:-lgcc_eh} \
+ -lgcc \
-lmoldname -lmingwex -lmsvcrt"
#undef STARTFILE_SPEC
More information about the Gcc-patches
mailing list