From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20670 invoked by alias); 26 Mar 2010 11:21:53 -0000 Received: (qmail 20659 invoked by uid 22791); 26 Mar 2010 11:21:52 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40 X-Spam-Check-By: sourceware.org Received: from mail-ew0-f227.google.com (HELO mail-ew0-f227.google.com) (209.85.219.227) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 26 Mar 2010 11:21:47 +0000 Received: by ewy27 with SMTP id 27so99237ewy.10 for ; Fri, 26 Mar 2010 04:21:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.213.109.9 with HTTP; Fri, 26 Mar 2010 04:21:44 -0700 (PDT) In-Reply-To: <90baa01f1003260415m279f11a9hdaac7592d32cf4db@mail.gmail.com> References: <647fe9b11003260354o53df5f0ayde8d1e3a03f1b694@mail.gmail.com> <90baa01f1003260415m279f11a9hdaac7592d32cf4db@mail.gmail.com> Date: Fri, 26 Mar 2010 11:21:00 -0000 Received: by 10.213.44.72 with SMTP id z8mr484187ebe.81.1269602504874; Fri, 26 Mar 2010 04:21:44 -0700 (PDT) Message-ID: <647fe9b11003260421w3d0f858dw64af31a7126ba84a@mail.gmail.com> Subject: Re: [PATCH] winsock include fixes From: Ozkan Sezer To: Kai Tietz Cc: gdb-patches@sources.redhat.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-03/txt/msg00879.txt.bz2 On Fri, Mar 26, 2010 at 1:15 PM, Kai Tietz wrote: > 2010/3/26 Ozkan Sezer : >> Hi: Here is a patch fixing the winsock include problem >> which appeared after the recent winsock header work in >> mingw-w64-headers. Problem is this: =A0GDB does windows.h >> and winsock2.h includes in its own headers and then it >> includes them in its sources in an arbitrary order. If >> winsock2.h or a header including winsock2.h (such as >> gdb_select.h) is included after windows.h or a header >> including windows.h (such as serial.h), then conflicting >> definitions occur and they result in error, because windows.h >> already includes winsock.h and including winsock2.h after >> that is an error. The patch fixes that in a quick and >> dirty way mostly by tweaking the include order. Tested >> by compiling gdb for x86_64-w64-mingw32, i686-w64-mingw32 >> and x86_64-pc-linux-gnu. Please consider for applying. >> >> -- >> Ozkan > > Ok, patch is ok. Ugly, but ok. > >> PS: >> A possibly better solution is defining WIN32_LEAN_AND_MEAN >> before including windows.h and then manually including >> the necessary additional headers in the sources, but that >> may require some more work. > > Long term we should clean it up in gdb. But I am pretty sure this > wrong order appears in other projects, too. So I think we should make > winsock2.h able to override definitions of winsock.h to simply allow > this. I dislike to priest and have malfunctional projects using our > runtime. It is correct that this behavior is default for VC, but it > hard to argument here, as we will always hear that things are working > by using w32api. It is the fault of w32api (cygwin/mingw.org) that winsock2.h is included from within windows.h and not winsock.h. It is the reason that many projects are doing this include order wrongly, and we (mingw-w64) must not try to be compatible with an incorrect implementation. W32api is not windows itself and it is doing this winsock inclusion wrong. > > Kai