From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1W3Uz0-00038K-1T for mharc-grub-devel@gnu.org; Wed, 15 Jan 2014 13:14:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48056) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W3Uys-0002xk-N9 for grub-devel@gnu.org; Wed, 15 Jan 2014 13:14:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W3Uyn-0004O0-3M for grub-devel@gnu.org; Wed, 15 Jan 2014 13:14:22 -0500 Received: from mail-lb0-x234.google.com ([2a00:1450:4010:c04::234]:51058) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W3Uym-0004Ni-MW for grub-devel@gnu.org; Wed, 15 Jan 2014 13:14:17 -0500 Received: by mail-lb0-f180.google.com with SMTP id n15so1055034lbi.39 for ; Wed, 15 Jan 2014 10:14:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:in-reply-to:references:mime-version :content-type; bh=Rx1T4MWiXPIm5TnRirltL773EPEBYBdKFED6CTExj0E=; b=JYeq85/EG5YKQHR1xdE/ni/Nu7kO0ss5DZLRGElxEsiB1CjaibjHUsldczs+MYwIcx 47zJTwhB243a0pB6YkLHWar7iY8d9qqGsaaYIMLtVsXATN4l3Tgx+omvDFsylVae6gnU lG0V43ChouRKu4m7j3jZX1KVMNpcVYVQOQb7Sxw+jifumgJgX62CgEPQ4aqgmIJcRnQg 8C1CcSS8omoCVgBUkM1sphsTTL2SdXDIXeZSeY6ngAbiuayd4RkNkbooFQihraWNF8/+ nrc5UD6p6yTLp/9UWfu6MGKXpio7urOzxVE4Q+SAXurT8lFjEGo/UbCcRaqme9gulBbH wi6Q== X-Received: by 10.152.121.73 with SMTP id li9mr2118952lab.47.1389809655100; Wed, 15 Jan 2014 10:14:15 -0800 (PST) Received: from opensuse.site (ppp91-76-163-241.pppoe.mtu-net.ru. [91.76.163.241]) by mx.google.com with ESMTPSA id s9sm1944037laj.0.2014.01.15.10.14.13 for (version=SSLv3 cipher=RC4-SHA bits=128/128); Wed, 15 Jan 2014 10:14:13 -0800 (PST) Date: Wed, 15 Jan 2014 22:14:12 +0400 From: Andrey Borzenkov To: grub-devel@gnu.org Subject: Re: conflicting types for 'grub_list_push' on MinGW (include loop) Message-ID: <20140115221412.721dbd2e@opensuse.site> In-Reply-To: <52D4620F.5000805@gmail.com> References: <20140113221705.4fa58f60@opensuse.site> <20140113183341.GA16811@riva.ucam.org> <20140113234455.0dfb7b9b@opensuse.site> <52D4620F.5000805@gmail.com> X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.22; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/ZD1w1cZZVHPUWFELbe1jclg"; protocol="application/pgp-signature" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::234 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 18:14:28 -0000 --Sig_/ZD1w1cZZVHPUWFELbe1jclg Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =D0=92 Mon, 13 Jan 2014 23:00:47 +0100 Vladimir '=CF=86-coder/phcoder' Serbinenko =D0=BF=D0=B8= =D1=88=D0=B5=D1=82: > On 13.01.2014 20:44, Andrey Borzenkov wrote: > >=20 > > I'd rather move compiler features into separate file (like > > grub/compiler.h) and include it from misc.h and separately from list.h. > >=20 > This would be a good idea. Like below? From: Andrey Borzenkov Subject: [PATCH] fix include loop on MinGW due to libintl.h pulling stdio.h In file included from ./include/grub/dl.h:23:0, from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: ./include/grub/list.h:34:18: warning: conflicting types for 'grub_list_push= ' [en abled by default] void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item); ^ ./include/grub/symbol.h:68:25: note: in definition of macro 'EXPORT_FUNC' # define EXPORT_FUNC(x) x ^ In file included from ./include/grub/fs.h:30:0, from ./include/grub/file.h:25, from ./grub-core/lib/posix_wrap/stdio.h:23, from c:\mingw\include\libintl.h:314, from ./include/grub/i18n.h:33, from ./include/grub/misc.h:27, from ./include/grub/list.h:25, from ./include/grub/dl.h:28, from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: ./include/grub/partition.h:106:3: note: previous implicit declaration of 'g= rub_l ist_push' was here grub_list_push (GRUB_AS_LIST_P (&grub_partition_map_list), ^ list.h needs just ATTRIBUTE_ERROR from misc.h; split compiler features into separate file grub/compiler.h and include it instead. --- grub-core/commands/fileXX.c | 1 + grub-core/efiemu/prepare.c | 1 + grub-core/loader/i386/xen_file.c | 1 + grub-core/loader/i386/xen_fileXX.c | 1 + grub-core/video/capture.c | 1 + include/grub/command.h | 1 + include/grub/compiler.h | 51 ++++++++++++++++++++++++++++++++++= ++++ include/grub/dl.h | 1 + include/grub/list.h | 4 +-- include/grub/misc.h | 29 +--------------------- include/grub/procfs.h | 1 + 11 files changed, 62 insertions(+), 30 deletions(-) diff --git a/grub-core/commands/fileXX.c b/grub-core/commands/fileXX.c index c9857ff..58e1094 100644 --- a/grub-core/commands/fileXX.c +++ b/grub-core/commands/fileXX.c @@ -18,6 +18,7 @@ =20 #include #include +#include =20 #pragma GCC diagnostic ignored "-Wcast-align" =20 diff --git a/grub-core/efiemu/prepare.c b/grub-core/efiemu/prepare.c index fb1b25d..84c3368 100644 --- a/grub-core/efiemu/prepare.c +++ b/grub-core/efiemu/prepare.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include =20 diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_f= ile.c index ebbf6aa..ff23235 100644 --- a/grub-core/loader/i386/xen_file.c +++ b/grub-core/loader/i386/xen_file.c @@ -18,6 +18,7 @@ =20 #include #include +#include =20 grub_elf_t grub_xen_file (grub_file_t file) diff --git a/grub-core/loader/i386/xen_fileXX.c b/grub-core/loader/i386/xen= _fileXX.c index 6df0015..73a5f90 100644 --- a/grub-core/loader/i386/xen_fileXX.c +++ b/grub-core/loader/i386/xen_fileXX.c @@ -17,6 +17,7 @@ */ =20 #include +#include =20 static grub_err_t parse_xen_guest (grub_elf_t elf, struct grub_xen_file_info *xi, diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c index 67c8edd..4f83c74 100644 --- a/grub-core/video/capture.c +++ b/grub-core/video/capture.c @@ -4,6 +4,7 @@ #include #include #include +#include =20 static struct { diff --git a/include/grub/command.h b/include/grub/command.h index 8705a63..eee4e84 100644 --- a/include/grub/command.h +++ b/include/grub/command.h @@ -22,6 +22,7 @@ #include #include #include +#include =20 typedef enum grub_command_flags { diff --git a/include/grub/compiler.h b/include/grub/compiler.h new file mode 100644 index 0000000..3730ef2 --- /dev/null +++ b/include/grub/compiler.h @@ -0,0 +1,51 @@ +/* compiler.h - macros for various compiler features */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2014 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef GRUB_COMPILER_HEADER +#define GRUB_COMPILER_HEADER 1 + +/* GCC version checking borrowed from glibc. */ +#if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define GNUC_PREREQ(maj,min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >=3D ((maj) << 16) + (min)) +#else +# define GNUC_PREREQ(maj,min) 0 +#endif + +/* Does this compiler support compile-time error attributes? */ +#if GNUC_PREREQ(4,3) +# define ATTRIBUTE_ERROR(msg) \ + __attribute__ ((__error__ (msg))) +#else +# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) +#endif + +#if GNUC_PREREQ(4,4) +# define GNU_PRINTF gnu_printf +#else +# define GNU_PRINTF printf +#endif + +#if GNUC_PREREQ(3,4) +# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) +#else +# define WARN_UNUSED_RESULT +#endif + +#endif /* ! GRUB_COMPILER_HEADER */ diff --git a/include/grub/dl.h b/include/grub/dl.h index d29a899..9562fa6 100644 --- a/include/grub/dl.h +++ b/include/grub/dl.h @@ -26,6 +26,7 @@ #include #include #include +#include #endif =20 /* diff --git a/include/grub/list.h b/include/grub/list.h index edd20ad..d170ff6 100644 --- a/include/grub/list.h +++ b/include/grub/list.h @@ -21,8 +21,8 @@ #define GRUB_LIST_HEADER 1 =20 #include -#include -#include +#include +#include =20 struct grub_list { diff --git a/include/grub/misc.h b/include/grub/misc.h index 2cf74b5..c6cd456 100644 --- a/include/grub/misc.h +++ b/include/grub/misc.h @@ -25,34 +25,7 @@ #include #include #include - -/* GCC version checking borrowed from glibc. */ -#if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define GNUC_PREREQ(maj,min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >=3D ((maj) << 16) + (min)) -#else -# define GNUC_PREREQ(maj,min) 0 -#endif - -/* Does this compiler support compile-time error attributes? */ -#if GNUC_PREREQ(4,3) -# define ATTRIBUTE_ERROR(msg) \ - __attribute__ ((__error__ (msg))) -#else -# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) -#endif - -#if GNUC_PREREQ(4,4) -# define GNU_PRINTF gnu_printf -#else -# define GNU_PRINTF printf -#endif - -#if GNUC_PREREQ(3,4) -# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) -#else -# define WARN_UNUSED_RESULT -#endif +#include =20 #define ALIGN_UP(addr, align) \ ((addr + (typeof (addr)) align - 1) & ~((typeof (addr)) align - 1)) diff --git a/include/grub/procfs.h b/include/grub/procfs.h index d393da7..8cc331d 100644 --- a/include/grub/procfs.h +++ b/include/grub/procfs.h @@ -20,6 +20,7 @@ #define GRUB_PROCFS_HEADER 1 =20 #include +#include =20 struct grub_procfs_entry { --=20 tg: (0776112..) u/mingw/list.h_include_loop (depends on: master) --Sig_/ZD1w1cZZVHPUWFELbe1jclg Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlLWz/QACgkQR6LMutpd94whDwCfUC0wpnXGRvAbtxbXlst6Km4X IIoAoM2LMkgcuBXg0AIGG+GI9ekWtwLH =nJ1v -----END PGP SIGNATURE----- --Sig_/ZD1w1cZZVHPUWFELbe1jclg--