Use patches upstream is going to take for the build fixes

- Add some new protocol definitons.

Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
Peter Jones 2014-11-20 14:50:04 -05:00
parent 059be1a19e
commit 631ab97578
6 changed files with 230 additions and 18 deletions

View File

@ -1,17 +1,25 @@
From 0a69c42779d1d28aa406fa2c435b180156ee3435 Mon Sep 17 00:00:00 2001
From: Fedora Ninjas <pjones@fedoraproject.org>
From d5cf0561d87d755e28b03816964c432b5d943554 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 15 May 2014 21:29:25 -0400
Subject: [PATCH] Try to make this build.
Subject: [PATCH 1/5] Make gnuefi/ build and install right.
Right now we wind up trying to build gnuefi/.o from a source file that's
an empty string. This is caused by the macros trying to generate
install rules, but there's no real reason to have all that anyway. So
just have some static install rules that are simpler and don't generate
stuff on the fly.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
Make.defaults
inc/Makefile
2 files changed, 12 insertions(+), 22 deletion(-)
gnu-efi-3.0/gnuefi/Makefile | 34 ++++++++++++----------------------
gnu-efi-3.0/inc/Makefile | 36 +++++++++++-------------------------
2 files changed, 23 insertions(+), 47 deletions(-)
diff -up a/gnuefi/Makefile b/gnuefi/Makefile
--- a/gnuefi/Makefile 2014-05-15 17:15:54.000000000 -0500
+++ b/gnuefi/Makefile 2014-05-19 14:02:29.048732554 -0500
@@ -52,19 +52,6 @@ reloc_aarch64.o: CFLAGS += -fno-jump-tab
diff --git a/gnu-efi-3.0/gnuefi/Makefile b/gnu-efi-3.0/gnuefi/Makefile
index 4717227..d234ac0 100644
--- a/gnu-efi-3.0/gnuefi/Makefile
+++ b/gnu-efi-3.0/gnuefi/Makefile
@@ -52,19 +52,6 @@ reloc_aarch64.o: CFLAGS += -fno-jump-tables
TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
@ -31,7 +39,7 @@ diff -up a/gnuefi/Makefile b/gnuefi/Makefile
all: $(TARGETS)
libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
@@ -72,14 +59,17 @@ libgnuefi.a: $(patsubst %,libgnuefi.a(%)
@@ -72,14 +59,17 @@ libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
clean:
rm -f $(TARGETS) *~ *.o $(OBJS)
@ -58,10 +66,10 @@ diff -up a/gnuefi/Makefile b/gnuefi/Makefile
+endif
include $(SRCDIR)/../Make.rules
diff --git a/inc/Makefile b/inc/Makefile
diff --git a/gnu-efi-3.0/inc/Makefile b/gnu-efi-3.0/inc/Makefile
index 526af22..71fded5 100644
--- a/inc/Makefile
+++ b/inc/Makefile
--- a/gnu-efi-3.0/inc/Makefile
+++ b/gnu-efi-3.0/inc/Makefile
@@ -8,34 +8,20 @@ TOPDIR = $(SRCDIR)/..
CDIR=$(TOPDIR)/..
@ -109,5 +117,5 @@ index 526af22..71fded5 100644
include $(SRCDIR)/../Make.rules
--
1.8.3.1
2.1.0

View File

@ -0,0 +1,54 @@
From 079c0b997c8011657e3baed6658fb77b969675b3 Mon Sep 17 00:00:00 2001
From: Bill Paul <wpaul@windriver.com>
Date: Thu, 20 Nov 2014 14:29:29 -0500
Subject: [PATCH 2/5] Make command lines work with FreeBSD's objcopy version.
FreeBSD's binutils doesn't have "-j <glob>" support, so we need to
include non-globbed versions of .rel/.rela individually.
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-Off-By: Bill Paul <wpaul@windriver.com>
---
gnu-efi-3.0/Make.defaults | 7 +++++++
gnu-efi-3.0/Make.rules | 5 +++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/gnu-efi-3.0/Make.defaults b/gnu-efi-3.0/Make.defaults
index 807205d..169273d 100644
--- a/gnu-efi-3.0/Make.defaults
+++ b/gnu-efi-3.0/Make.defaults
@@ -133,8 +133,15 @@ endif
# Generic compilation flags
INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
-I$(TOPDIR)/inc/protocol
+
+ifeq (FreeBSD, $(findstring FreeBSD, $(OS)))
+CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \
+ -ffreestanding -fno-stack-protector
+else
CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \
-fno-merge-constants -ffreestanding -fno-stack-protector \
-fno-stack-check
+endif
+
ASFLAGS += $(ARCH3264)
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings
diff --git a/gnu-efi-3.0/Make.rules b/gnu-efi-3.0/Make.rules
index 7113b3e..02c7088 100644
--- a/gnu-efi-3.0/Make.rules
+++ b/gnu-efi-3.0/Make.rules
@@ -35,8 +35,9 @@
#
%.efi: %.so
- $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel* \
- -j .rela* -j .reloc $(FORMAT) $*.so $@
+ $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
+ -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
+ -j .reloc $(FORMAT) $*.so $@
%.so: %.o
$(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
--
2.1.0

View File

@ -0,0 +1,69 @@
From ed71ce3a579279c6f60d10c8aecef42292504d5c Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 20 Nov 2014 13:43:18 -0500
Subject: [PATCH 3/5] Add the capsule API
Signed-off-by: Peter Jones <pjones@redhat.com>
---
gnu-efi-3.0/inc/efiapi.h | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/gnu-efi-3.0/inc/efiapi.h b/gnu-efi-3.0/inc/efiapi.h
index 2ab9f1f..a3e3fd9 100644
--- a/gnu-efi-3.0/inc/efiapi.h
+++ b/gnu-efi-3.0/inc/efiapi.h
@@ -585,6 +585,42 @@ EFI_STATUS
OUT UINT32 *HighCount
);
+typedef struct {
+ UINT64 Length;
+ union {
+ EFI_PHYSICAL_ADDRESS DataBlock;
+ EFI_PHYSICAL_ADDRESS ContinuationPointer;
+ } Union;
+} EFI_CAPSULE_BLOCK_DESCRIPTOR;
+
+typedef struct {
+ EFI_GUID CapsuleGuid;
+ UINT32 HeaderSize;
+ UINT32 Flags;
+ UINT32 CapsuleImageSize;
+} EFI_CAPSULE_HEADER;
+
+#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
+#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
+#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_UPDATE_CAPSULE) (
+ IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
+ IN UINTN CapsuleCount,
+ IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES) (
+ IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
+ IN UINTN CapsuleCount,
+ OUT UINT64 *MaximumCapsuleSize,
+ OUT EFI_RESET_TYPE *ResetType
+ );
+
//
// Protocol handler functions
//
@@ -720,6 +756,8 @@ typedef struct {
EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
EFI_RESET_SYSTEM ResetSystem;
+ EFI_UPDATE_CAPSULE UpdateCapsule;
+ EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
} EFI_RUNTIME_SERVICES;
--
2.1.0

View File

@ -0,0 +1,41 @@
From 99050251a94d1cf2179cc614e9a9b19277afea5f Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 20 Nov 2014 13:43:38 -0500
Subject: [PATCH 4/5] Add the QueryVariableInfo() API.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
gnu-efi-3.0/inc/efiapi.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gnu-efi-3.0/inc/efiapi.h b/gnu-efi-3.0/inc/efiapi.h
index a3e3fd9..708c67f 100644
--- a/gnu-efi-3.0/inc/efiapi.h
+++ b/gnu-efi-3.0/inc/efiapi.h
@@ -621,6 +621,15 @@ EFI_STATUS
OUT EFI_RESET_TYPE *ResetType
);
+typedef
+EFI_STATUS
+(EFIAPI *EFI_QUERY_VARIABLE_INFO) (
+ IN UINT32 Attributes,
+ OUT UINT64 *MaximumVariableStorageSize,
+ OUT UINT64 *RemainingVariableStorageSize,
+ OUT UINT64 *MaximumVariableSize
+ );
+
//
// Protocol handler functions
//
@@ -758,6 +767,7 @@ typedef struct {
EFI_UPDATE_CAPSULE UpdateCapsule;
EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
+ EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
} EFI_RUNTIME_SERVICES;
--
2.1.0

View File

@ -0,0 +1,31 @@
From d06cdc04a15ba913d64d04d118486dc02ab8f190 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 20 Nov 2014 13:45:25 -0500
Subject: [PATCH 5/5] Add current OsIndications values.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
gnu-efi-3.0/inc/efidef.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/gnu-efi-3.0/inc/efidef.h b/gnu-efi-3.0/inc/efidef.h
index 666b193..8b70051 100644
--- a/gnu-efi-3.0/inc/efidef.h
+++ b/gnu-efi-3.0/inc/efidef.h
@@ -208,4 +208,13 @@ typedef UINT8 ISO_639_2;
#define EFI_SIZE_TO_PAGES(a) \
( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )
+#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
+#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
+#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED \
+ 0x0000000000000004
+#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED \
+ 0x0000000000000008
+#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED \
+ 0x0000000000000010
+
#endif
--
2.1.0

View File

@ -1,16 +1,21 @@
Summary: Development Libraries and headers for EFI
Name: gnu-efi
Version: 3.0w
Release: 0.1%{?dist}
Release: 2%{?dist}
Group: Development/System
License: BSD
URL: ftp://ftp.hpl.hp.com/pub/linux-ia64
Source: ftp://ftp.hpl.hp.com/pub/linux-ia64/gnu-efi_%{version}.orig.tar.gz
Patch0: build-fix.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
BuildRequires: git
Source: ftp://ftp.hpl.hp.com/pub/linux-ia64/gnu-efi_%{version}.orig.tar.gz
Patch0001: 0001-Make-gnuefi-build-and-install-right.patch
Patch0002: 0002-Make-command-lines-work-with-FreeBSD-s-objcopy-versi.patch
Patch0003: 0003-Add-the-capsule-API.patch
Patch0004: 0004-Add-the-QueryVariableInfo-API.patch
Patch0005: 0005-Add-current-OsIndications-values.patch
%define debug_package %{nil}
# Figure out the right file path to use
@ -84,6 +89,10 @@ rm -rf %{buildroot}
%attr(0644,root,root) /boot/efi/EFI/%{efidir}/*.efi
%changelog
* Thu Nov 20 2014 Peter Jones <pjones@redhat.com> - 3.0w-2
- Use patches upstream is going to take for the build fixes
- Add some new protocol definitons.
* Fri Aug 22 2014 Kyle McMartin <kyle@fedoraproject.org> - 3.0w-0.1
- New upstream version 3.0w
- Add pjones' build fixes patch from that other distro.