From 157e7a244a70c1812c99bb4a82d78067b4819e6b Mon Sep 17 00:00:00 2001 From: California Sullivan Date: Tue, 11 Jul 2017 17:47:29 -0700 Subject: gnu-efi: Upgrade package to 3.0.6 and refresh patches Version 3.0.6 fixes a failure when using the pxe headers and allows us to drop the explicit fall through patch as it was fixed upstream. Other patches were rebased on top of the new version. (From OE-Core rev: 20c1209f6fe0d56aa3698583a1b6d2774fbf4401) Signed-off-by: California Sullivan Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- ...plicit-fall-through-so-Wextra-will-work-i.patch | 34 ---------- .../gnu-efi/gnu-efi/gcc46-compatibility.patch | 24 ++++++-- .../gnu-efi/gnu-efi/parallel-make-archives.patch | 54 ++++++++-------- meta/recipes-bsp/gnu-efi/gnu-efi_3.0.5.bb | 72 ---------------------- meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb | 71 +++++++++++++++++++++ 5 files changed, 120 insertions(+), 135 deletions(-) delete mode 100644 meta/recipes-bsp/gnu-efi/gnu-efi/0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch delete mode 100644 meta/recipes-bsp/gnu-efi/gnu-efi_3.0.5.bb create mode 100644 meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb (limited to 'meta') diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch deleted file mode 100644 index d0aeb2d560..0000000000 --- a/meta/recipes-bsp/gnu-efi/gnu-efi/0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 676a8a9001f06808b4dbe0a545d76b5d9a8ebf48 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Thu, 2 Feb 2017 13:51:27 -0500 -Subject: [PATCH] Mark our explicit fall through so -Wextra will work in gcc 7 - -gcc 7 introduces detection of fall-through behavior in switch/case -statements, and will warn if -Wimplicit-fallthrough is present and there -is no comment stating that the fall-through is intentional. This is -also triggered by -Wextra, as it enables -Wimplicit-fallthrough=1. - -This patch adds the comment in the one place we use fall-through. - -Signed-off-by: Peter Jones ---- -Upstream-Status: Pending - - lib/print.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/print.c b/lib/print.c -index b8a9d38..cb732f0 100644 ---- a/lib/print.c -+++ b/lib/print.c -@@ -1131,6 +1131,7 @@ Returns: - case 'X': - Item.Width = Item.Long ? 16 : 8; - Item.Pad = '0'; -+ /* falls through */ - case 'x': - ValueToHex ( - Item.Scratch, --- -2.12.2 - diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/gcc46-compatibility.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/gcc46-compatibility.patch index 0ce6d7b0cb..69efd34e24 100644 --- a/meta/recipes-bsp/gnu-efi/gnu-efi/gcc46-compatibility.patch +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/gcc46-compatibility.patch @@ -1,3 +1,8 @@ +From 8d16ae374c5d4d9fac45c002605a66cfb8c08be5 Mon Sep 17 00:00:00 2001 +From: Steve Langasek +Date: Wed, 9 Sep 2015 08:26:06 +0000 +Subject: [PATCH 3/3] gnu-efi, syslinux: Support gcc < 4.7 + don't break with old compilers and -DGNU_EFI_USE_MS_ABI It's entirely legitimate to request GNU_EFI_USE_MS_ABI even if the current compiler doesn't support it, and gnu-efi should transparently fall back to @@ -6,16 +11,25 @@ checking, but at least it will still compile. Author: Steve Langasek Upstream-Status: Pending -Index: gnu-efi-3.0.3/inc/x86_64/efibind.h -=================================================================== ---- gnu-efi-3.0.3.orig/inc/x86_64/efibind.h -+++ gnu-efi-3.0.3/inc/x86_64/efibind.h +[Rebased for 3.0.6] +Signed-off-by: California Sullivan +--- + inc/x86_64/efibind.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h +index 4309f9f..02c0af1 100644 +--- a/inc/x86_64/efibind.h ++++ b/inc/x86_64/efibind.h @@ -25,8 +25,6 @@ Revision History #if defined(GNU_EFI_USE_MS_ABI) - #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) + #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))||(defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2))) #define HAVE_USE_MS_ABI 1 - #else - #error Compiler is too old for GNU_EFI_USE_MS_ABI #endif #endif +-- +2.9.4 + diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch index e5b47c197a..0110260bd8 100644 --- a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch @@ -1,4 +1,7 @@ -Fix parallel make failure for archives +From 16865de66db33ca70872199e70d93efccecc8575 Mon Sep 17 00:00:00 2001 +From: Saul Wold +Date: Sun, 9 Mar 2014 15:22:15 +0200 +Subject: [PATCH 1/3] Fix parallel make failure for archives Upstream-Status: Pending @@ -12,31 +15,18 @@ for details. Signed-off-by: Saul Wold Signed-off-by: Darren Hart +[Rebased for 3.0.6] +Signed-off-by: California Sullivan --- ---- - gnuefi/Makefile | 3 ++- - lib/Makefile | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) + gnuefi/Makefile | 3 ++- + lib/Makefile | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) -Index: gnu-efi-3.0/lib/Makefile -=================================================================== ---- gnu-efi-3.0.orig/lib/Makefile -+++ gnu-efi-3.0/lib/Makefile -@@ -66,7 +66,8 @@ all: libsubdirs libefi.a - libsubdirs: - for sdir in $(SUBDIRS); do mkdir -p $$sdir; done - --libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) -+libefi.a: $(OBJS) -+ $(AR) rv $@ $(OBJS) - - clean: - rm -f libefi.a *~ $(OBJS) */*.o -Index: gnu-efi-3.0/gnuefi/Makefile -=================================================================== ---- gnu-efi-3.0.orig/gnuefi/Makefile -+++ gnu-efi-3.0/gnuefi/Makefile -@@ -51,7 +51,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a +diff --git a/gnuefi/Makefile b/gnuefi/Makefile +index 2a61699..148106e 100644 +--- a/gnuefi/Makefile ++++ b/gnuefi/Makefile +@@ -54,7 +54,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a all: $(TARGETS) @@ -46,3 +36,19 @@ Index: gnu-efi-3.0/gnuefi/Makefile clean: rm -f $(TARGETS) *~ *.o $(OBJS) +diff --git a/lib/Makefile b/lib/Makefile +index b8d1ce7..6ef8107 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -75,7 +75,7 @@ libsubdirs: + for sdir in $(SUBDIRS); do mkdir -p $$sdir; done + + libefi.a: $(OBJS) +- $(AR) rv -U $@ $^ ++ $(AR) rv $@ $(OBJS) + + clean: + rm -f libefi.a *~ $(OBJS) */*.o +-- +2.9.4 + diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.5.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.5.bb deleted file mode 100644 index 7346737396..0000000000 --- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.5.bb +++ /dev/null @@ -1,72 +0,0 @@ -SUMMARY = "Libraries for producing EFI binaries" -HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/" -SECTION = "devel" -LICENSE = "GPLv2+ | BSD-2-Clause" -LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \ - file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \ - file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \ - file://inc/efishellparm.h;beginline=4;endline=11;md5=468b1231b05bbc84bae3a0d5774e3bb5 \ - file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ - file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ - file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ - file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ - " - -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \ - file://parallel-make-archives.patch \ - file://lib-Makefile-fix-parallel-issue.patch \ - file://gcc46-compatibility.patch \ - file://0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch \ - " - -SRC_URI[md5sum] = "1f719c9c135778aa6b087b89a1cc2423" -SRC_URI[sha256sum] = "bd8fcd5914f18fc0e4ba948ab03b00013e528504f529c60739b748f6ef130b22" - -COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux" -COMPATIBLE_HOST_armv4 = 'null' - -do_configure_linux-gnux32_prepend() { - cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h - cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h -} - -def gnu_efi_arch(d): - import re - tarch = d.getVar("TARGET_ARCH") - if re.match("i[3456789]86", tarch): - return "ia32" - return tarch - -EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ - 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \ - " - -# gnu-efi's Makefile treats prefix as toolchain prefix, so don't -# export it. -prefix[unexport] = "1" - -do_install() { - oe_runmake install INSTALLROOT="${D}" -} - -FILES_${PN} += "${libdir}/*.lds" - -# 64-bit binaries are expected for EFI when targeting X32 -INSANE_SKIP_${PN}-dev_append_linux-gnux32 = " arch" -INSANE_SKIP_${PN}-dev_append_linux-muslx32 = " arch" - -BBCLASSEXTEND = "native" - -# It doesn't support sse, its make.defaults sets: -# CFLAGS += -mno-mmx -mno-sse -# So also remove -mfpmath=sse from TUNE_CCARGS -TUNE_CCARGS_remove = "-mfpmath=sse" - -python () { - ccargs = d.getVar('TUNE_CCARGS').split() - if '-mx32' in ccargs: - # use x86_64 EFI ABI - ccargs.remove('-mx32') - ccargs.append('-m64') - d.setVar('TUNE_CCARGS', ' '.join(ccargs)) -} diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb new file mode 100644 index 0000000000..2a60717480 --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb @@ -0,0 +1,71 @@ +SUMMARY = "Libraries for producing EFI binaries" +HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/" +SECTION = "devel" +LICENSE = "GPLv2+ | BSD-2-Clause" +LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \ + file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \ + file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \ + file://inc/efishellparm.h;beginline=4;endline=11;md5=468b1231b05bbc84bae3a0d5774e3bb5 \ + file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ + file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ + file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ + file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \ + " + +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \ + file://parallel-make-archives.patch \ + file://lib-Makefile-fix-parallel-issue.patch \ + file://gcc46-compatibility.patch \ + " + +SRC_URI[md5sum] = "46f633758a8a37db9fd6909fe270c26b" +SRC_URI[sha256sum] = "21515902d80fbea23328a61d70d3d51a47204abd1507ebfa27550a7b9bf22c91" + +COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux" +COMPATIBLE_HOST_armv4 = 'null' + +do_configure_linux-gnux32_prepend() { + cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h + cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h +} + +def gnu_efi_arch(d): + import re + tarch = d.getVar("TARGET_ARCH") + if re.match("i[3456789]86", tarch): + return "ia32" + return tarch + +EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ + 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \ + " + +# gnu-efi's Makefile treats prefix as toolchain prefix, so don't +# export it. +prefix[unexport] = "1" + +do_install() { + oe_runmake install INSTALLROOT="${D}" +} + +FILES_${PN} += "${libdir}/*.lds" + +# 64-bit binaries are expected for EFI when targeting X32 +INSANE_SKIP_${PN}-dev_append_linux-gnux32 = " arch" +INSANE_SKIP_${PN}-dev_append_linux-muslx32 = " arch" + +BBCLASSEXTEND = "native" + +# It doesn't support sse, its make.defaults sets: +# CFLAGS += -mno-mmx -mno-sse +# So also remove -mfpmath=sse from TUNE_CCARGS +TUNE_CCARGS_remove = "-mfpmath=sse" + +python () { + ccargs = d.getVar('TUNE_CCARGS').split() + if '-mx32' in ccargs: + # use x86_64 EFI ABI + ccargs.remove('-mx32') + ccargs.append('-m64') + d.setVar('TUNE_CCARGS', ' '.join(ccargs)) +} -- cgit v1.2.3-54-g00ecf