This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Trouble building gcc-3.4.0 cygwin->linux
- From: Christopher Faylor <me at cgf dot cx>
- To: Dan Kegel <dank at kegel dot com>
- Cc: Jim Wilson <wilson at specifixinc dot com>, gcc at gcc dot gnu dot org
- Date: Tue, 8 Jun 2004 21:33:59 -0400
- Subject: Re: Trouble building gcc-3.4.0 cygwin->linux
- References: <40820717.9060101@kegel.com> <20040418052643.GB22865@lucon.org> <4082A322.7070904@kegel.com> <20040418183933.GA14303@lucon.org> <40831CB0.4030407@kegel.com> <40C37214.1040003@kegel.com> <40C3BD79.4030207@specifixinc.com> <40C44A50.4040407@kegel.com>
On Mon, Jun 07, 2004 at 03:58:24AM -0700, Dan Kegel wrote:
>Jim Wilson wrote:
>>[See http://gcc.gnu.org/ml/gcc/2004-04/msg00906.html]
>>Looking at it again, I see that there are some curious __CYGWIN__ ifdefs
>>in there which might instead be the problem. Your cygwin-x-linux cross
>>compiler would have been compiled with a compiler that defined
>>__CYGWIN__, and thus some stuff in cp/method.c would have been enabled
>>and/or disabled that should not have been. To fix this, put a
>>#define THIS_IS_CYWGIN_REALLY
>>in config/i386/cygwin.h (or maybe cygming.h?) and modify cp/method.c to
>>use that define instead of __CYGWIN__. We need a more elegant solution
>>for gcc mainline, but one has already been written. This is the
>>TARGET_USE_LOCAL_THUNK_ALIAS_P stuff I mentioned earler.
>>
>>See PR 14808. This contains the method.c.diff patch that broke gcc-3.4.
>> This was an attempt to write a safer simpler patch than the one that
>>went into mainline, which can be found here
>> http://gcc.gnu.org/ml/gcc-patches/2004-04/msg00432.html
>>Unfortunately, this patch breaks cross compilers built on cygwin.
>
>Bingo. The following patch let my cygwin->linux build succeed. Thanks!
I like the choice of variable name but there isn't any reason for putting
the define in cygming.h and cygwin.h, is there?
cgf
>--- gcc-3.4.0/gcc/cp/method.c.old Sun Jun 6 22:46:04 2004
>+++ gcc-3.4.0/gcc/cp/method.c Sun Jun 6 22:48:13 2004
>@@ -286,7 +286,7 @@
> tree alias;
> char buf[256];
>
>-#if defined (__CYGWIN__) || defined (__MINGW32__)
>+#if defined (TARGET_IS_PE_COFF)
> if (DECL_ONE_ONLY (function))
> return function;
> #endif
>@@ -404,7 +404,7 @@
> push_to_top_level ();
>
> #if defined (ASM_OUTPUT_DEF) \
>- && !(defined (__CYGWIN__) || defined (__MINGW32__))
>+ && !defined (TARGET_IS_PE_COFF)
> if (targetm.have_named_sections)
> {
> resolve_unique_section (function, 0, flag_function_sections);
>--- gcc-3.4.0/gcc/config/i386/cygwin.h.old Sun Jun 6 22:50:41 2004
>+++ gcc-3.4.0/gcc/config/i386/cygwin.h Sun Jun 6 22:52:18 2004
>@@ -22,6 +22,8 @@
>
> #define TARGET_VERSION fprintf (stderr, " (x86 Cygwin)");
>
>+#define TARGET_IS_PE_COFF 1
>+
> #define EXTRA_OS_CPP_BUILTINS() /* Nothing. */
>
> #undef CPP_SPEC
>--- gcc-3.4.0/gcc/config/i386/cygming.h.old Sun Jun 6 22:50:46 2004
>+++ gcc-3.4.0/gcc/config/i386/cygming.h Sun Jun 6 22:52:10 2004
>@@ -27,6 +27,8 @@
>
> #define TARGET_EXECUTABLE_SUFFIX ".exe"
>
>+#define TARGET_IS_PE_COFF 1
>+
> #include <stdio.h>
>
> /* Masks for subtarget switches used by other files. */
>
>
>--
>My technical stuff: http://kegel.com
>My politics: see http://www.misleader.org for examples of why I'm for
>regime change