aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-bsp/efilinux
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/efilinux')
-rw-r--r--recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch33
-rw-r--r--recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch33
-rw-r--r--recipes-bsp/efilinux/efilinux_1.1.bb38
3 files changed, 104 insertions, 0 deletions
diff --git a/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch b/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch
new file mode 100644
index 00000000..afb99514
--- /dev/null
+++ b/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch
@@ -0,0 +1,33 @@
+From 7c171c1813651a3a02ad2cda361b42ebc7ce324d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 10:34:19 -0700
+Subject: [PATCH 1/2] Disable address-of-packed-member warning
+
+Clang complains so make it happy
+
+loaders/bzimage/bzimage.c:346:55: error: taking address of packed member 'base' of class or structure 'dt_addr_t' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
+ err = emalloc(gdt.limit, 8, (EFI_PHYSICAL_ADDRESS *)&gdt.base);
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index a955e34..ff1b79b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -61,7 +61,7 @@ ifeq ($(ARCH),ia32)
+ endif
+ endif
+ ifeq ($(ARCH),x86_64)
+- CFLAGS += -mno-red-zone
++ CFLAGS += -mno-red-zone -Wno-address-of-packed-member
+ endif
+
+ LDFLAGS=-T $(LDSCRIPT) -Bsymbolic -shared -nostdlib -znocombreloc \
+--
+2.14.1
+
diff --git a/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch b/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch
new file mode 100644
index 00000000..127c187a
--- /dev/null
+++ b/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch
@@ -0,0 +1,33 @@
+From 49053e4ff0f3550d019cdad8a93677c18fc69791 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 10:35:09 -0700
+Subject: [PATCH 2/2] initialize char pointers
+
+Clang complains about using them without initializing
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ entry.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/entry.c b/entry.c
+index 0aa6cdd..23ba51e 100644
+--- a/entry.c
++++ b/entry.c
+@@ -402,9 +402,9 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *_table)
+ WCHAR *error_buf;
+ EFI_STATUS err;
+ EFI_LOADED_IMAGE *info;
+- CHAR16 *name, *options;
++ CHAR16 *name = NULL, *options;
+ UINT32 options_size;
+- char *cmdline;
++ char *cmdline = NULL;
+
+ InitializeLib(image, _table);
+ sys_table = _table;
+--
+2.14.1
+
diff --git a/recipes-bsp/efilinux/efilinux_1.1.bb b/recipes-bsp/efilinux/efilinux_1.1.bb
new file mode 100644
index 00000000..63e80f88
--- /dev/null
+++ b/recipes-bsp/efilinux/efilinux_1.1.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "A UEFI OS loader"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://efilinux.h;beginline=5;endline=27;md5=f8d56e644672ac63fd81b55c205283ad"
+
+DEPENDS = "gnu-efi"
+
+inherit deploy
+
+SRCREV = "a995826f9e43f1134baea61610eafd8c173bb776"
+PV = "1.1+git${SRCPV}"
+
+SRC_URI = "git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git \
+ file://0001-Disable-address-of-packed-member-warning.patch \
+ file://0002-initialize-char-pointers.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
+
+EXTRA_OEMAKE = "INCDIR=${STAGING_INCDIR} LIBDIR=${STAGING_LIBDIR}"
+
+# syslinux uses $LD for linking, strip `-Wl,' so it can work
+export LDFLAGS = "`echo $LDFLAGS | sed 's/-Wl,//g'`"
+
+do_deploy () {
+ install ${S}/efilinux.efi ${DEPLOYDIR}/efilinux.efi
+}
+addtask deploy before do_build after do_compile
+
+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))
+}