From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6600 invoked by alias); 2 Feb 2017 22:10:52 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 6579 invoked by uid 89); 2 Feb 2017 22:10:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.4 required=5.0 tests=AWL,BAYES_20,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=mixing, 02022017, Nilefalk, nilefalk X-HELO: mailout03.t-online.de Received: from mailout03.t-online.de (HELO mailout03.t-online.de) (194.25.134.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Feb 2017 22:10:49 +0000 Received: from fwd16.aul.t-online.de (fwd16.aul.t-online.de [172.20.26.243]) by mailout03.t-online.de (Postfix) with SMTP id 34DAB4268746 for ; Thu, 2 Feb 2017 23:10:47 +0100 (CET) Received: from [192.168.2.28] (SUG4EkZlQhuLiJspWF9FnAzSBheYLZw0Mu13pAIKo+Xt1hB5gXivJQvKIbcZO8xQzv@[91.59.8.162]) by fwd16.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-SHA encrypted) esmtp id 1cZPaU-25EA0u0; Thu, 2 Feb 2017 23:10:42 +0100 Subject: Re: Providing cygwin1.dll in both 32- and 64-bit versions To: cygwin@cygwin.com References: <5893A0CD.5090107@junovagen.se> From: =?UTF-8?Q?Hans-Bernhard_Br=c3=b6ker?= Message-ID: Date: Thu, 02 Feb 2017 22:10:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <5893A0CD.5090107@junovagen.se> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2017-02/txt/msg00027.txt.bz2 Am 02.02.2017 um 22:12 schrieb Thomas Nilefalk: > Using 'i686-pc-cygwin-gcc' creates an executable but that is un-runnable > in a Cygwin64 environment because the cygwin1.dll is a 64-bit version > and not compatible with the produced executable. A cygwin32 DLL needs to > be put first in the path to make the executable run. > > Is this by design? Pretty much, yes. Windows itself already has a seriously hard time mixing and matching 32-bit and 64-bit executables and their DLLs. The tricks MS uses to pull that off range from outright scary to Marx-Brothers-grade hilarious, depending how you look at them. As I see it, Cygwin rightfully opted for sanity here by keeping the two worlds separate. > At least it seems to me that 'gcc -m32' could be > taken to mean 'create an executable in the current ABI-environment > (cygwin64) which uses a 32-bit architecture'. No, it really can't. -m32 does what the GCC documentation says: it makes GCC generate 32-bit x86 code. Nothing in there so much as suggests that such code will actually work in a given ABI environment. In the case of Cygwin64 it won't. > 'how can I make a 32-bit compiled cygwin program run under cygwin64'? You can't. Nor can anybody else. For a Cygwin64-based program, Cygwin32 is a bona fide cross-compilation platform rather than just some subset of the same platform. The same holds vice versa. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple