From: Martin Jansa <martin.jansa@gmail.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCHv2] grub2: fix build on gcc where _FORTIFY_SOURCE is defined
Date: Wed, 23 Aug 2017 00:10:20 +0200 [thread overview]
Message-ID: <20170822221020.10779-1-Martin.Jansa@gmail.com> (raw)
In-Reply-To: <CA+chaQf=yHdsWXEZyDFQ9KsHDvpYY24G8ACGkd4Q3oBOdFVgZw@mail.gmail.com>
* e.g. with gentoo gcc-7.1 they define _FORTIFY_SOURCE by default with:
https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/7.1.0/gentoo/10_all_default-fortify-source.patch?view=markup
which results in following error while building grub-efi-native:
./config-util.h:1504:48: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
|| (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
^~~~~~~~~~~~~~~
this part comes from gnulib and it's used only for Apple and BSD,
so we can ignore it, but we cannot add -Wno-error=expansion-to-defined
because this warning was introduced only in gcc-7 and older gcc
will fail with:
cc1: error: -Werror=expansion-to-defined: no option -Wexpansion-to-defined
use #pragma to work around this
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
v2: this version works on hosts with older gcc, tested on Ubuntu-16.04
with gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
.../grub/files/fix.build.with.gcc-7.patch | 39 ++++++++++++++++++++++
meta/recipes-bsp/grub/grub2.inc | 1 +
2 files changed, 40 insertions(+)
create mode 100644 meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch
diff --git a/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch b/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch
new file mode 100644
index 0000000000..f35df97bfc
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch
@@ -0,0 +1,39 @@
+* e.g. with gentoo gcc-7.1 they define _FORTIFY_SOURCE by default with:
+ https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/7.1.0/gentoo/10_all_default-fortify-source.patch?view=markup
+ which results in following error while building grub-efi-native:
+ ./config-util.h:1504:48: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ ^~~~~~~~~~~~~~~
+ this part comes from gnulib and it's used only for Apple and BSD,
+ so we can ignore it, but we cannot add -Wno-error=expansion-to-defined
+ because this warning was introduced only in gcc-7 and older gcc
+ will fail with:
+ cc1: error: -Werror=expansion-to-defined: no option -Wexpansion-to-defined
+ use #pragma to work around this
+
+Upstream-Status: Pending (should be fixed in gnulib which is then rarely updated in grub)
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff -uNr grub-2.02.old/m4/extern-inline.m4 grub-2.02/m4/extern-inline.m4
+--- grub-2.02.old/m4/extern-inline.m4 2016-02-28 15:22:21.000000000 +0100
++++ grub-2.02/m4/extern-inline.m4 2017-08-22 19:26:45.213637276 +0200
+@@ -39,6 +39,10 @@
+ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+ for clang but remains for g++; see <http://trac.macports.org/ticket/41033>.
+ Assume DragonFly and FreeBSD will be similar. */
++#pragma GCC diagnostic push
++#if __GNUC__ >= 7
++#pragma GCC diagnostic ignored "-Wexpansion-to-defined"
++#endif
+ #if (((defined __APPLE__ && defined __MACH__) \
+ || defined __DragonFly__ || defined __FreeBSD__) \
+ && (defined __header_inline \
+@@ -50,6 +52,7 @@
+ && defined __GNUC__ && ! defined __cplusplus))))
+ # define _GL_EXTERN_INLINE_STDHEADER_BUG
+ #endif
++#pragma GCC diagnostic pop
+ #if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : (199901L <= __STDC_VERSION__ \
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index 240a1f9286..a56fbe7bf8 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -17,6 +17,7 @@ SRC_URI = "https://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
file://autogen.sh-exclude-pc.patch \
file://grub-module-explicitly-keeps-symbole-.module_license.patch \
file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
+ file://fix.build.with.gcc-7.patch \
"
SRC_URI[md5sum] = "1116d1f60c840e6dbd67abbc99acb45d"
SRC_URI[sha256sum] = "660ee136fbcee08858516ed4de2ad87068bfe1b6b8b37896ce3529ff054a726d"
--
2.14.1
next prev parent reply other threads:[~2017-08-22 22:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-21 20:57 [PATCH 1/2] squashfs: fix build with glibc-2.26 Martin Jansa
2017-08-21 20:57 ` [PATCH 2/2] grub2: fix build with gcc-7 Martin Jansa
2017-08-21 23:52 ` Khem Raj
2017-08-22 17:21 ` Martin Jansa
2017-08-22 17:28 ` Khem Raj
2017-08-22 22:10 ` Martin Jansa [this message]
2017-08-22 10:22 ` Richard Purdie
2017-08-22 10:26 ` Martin Jansa
2017-08-22 10:28 ` Richard Purdie
2017-08-22 16:32 ` Khem Raj
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170822221020.10779-1-Martin.Jansa@gmail.com \
--to=martin.jansa@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox