gnu-efi: fix incomplete typedef type

This commit is contained in:
Danny Rawlins 2017-04-20 16:13:13 +10:00
parent 393fa4444f
commit f49f9272d9
4 changed files with 57 additions and 5 deletions

View File

@ -1 +1,2 @@
0e3e8057b3c0995e9b19444b95a7a52e efipxebc.h.patch
1f719c9c135778aa6b087b89a1cc2423 gnu-efi-3.0.5.tar.bz2

View File

@ -1,5 +1,6 @@
untrusted comment: verify with /etc/ports/opt.pub
RWSE3ohX2g5d/f3/QKPdcxQbo+KCAW91V6TCduTHEa34HNvfuYghzgQDLZqvYnvqcY3TNrEPl41/6gYqtAAUOtuYFw9jsqA90Q8=
SHA256 (Pkgfile) = 5e8a6a646df64ddf948395a632e4208bd19c22e35f48e0d775cc3076d6865a4e
RWSE3ohX2g5d/Ux9f6PpZPdYH9RpcWPafqAEjx4Me0sLCp5GPpovt7uPta46Qau5u0i2r89ztLDx/S9Jl44DSKZR4CbEm8BpNwk=
SHA256 (Pkgfile) = 9997380c0cce9dd0fe2cf2b7e2cb5e90884258b8e9c3bd011f116ef6a6d0fef3
SHA256 (.footprint) = 4c1713571f194e4363e206df29718fff385f7e4848c3b8a3ce2d88bfc3b07905
SHA256 (gnu-efi-3.0.5.tar.bz2) = bd8fcd5914f18fc0e4ba948ab03b00013e528504f529c60739b748f6ef130b22
SHA256 (efipxebc.h.patch) = de1b24cda86aa676ad43fe5ebd2e400533bb8961acc3da17b27815941e4a8fa7

View File

@ -1,14 +1,16 @@
# Description: GNU EFI library
# URL: http://gnu-efi.sf.net/
# URL: https://sourceforge.net/projects/gnu-efi/
# Maintainer: Thomas Penteker, tek at serverop dot de
name=gnu-efi
version=3.0.5
release=1
source=(http://download.sourceforge.net/${name}/${name}-${version}.tar.bz2)
release=2
source=(http://download.sourceforge.net/$name/$name-$version.tar.bz2
efipxebc.h.patch)
build() {
cd $name-$version
patch -p1 -i $SRC/efipxebc.h.patch
sed -i "s|/usr/local|$PKG/usr|g" Make.defaults
make
make install

48
gnu-efi/efipxebc.h.patch Normal file
View File

@ -0,0 +1,48 @@
https://github.com/vathpela/gnu-efi/commit/e4ca94374c7ece8ec0100075710af8638e42c203
From e4ca94374c7ece8ec0100075710af8638e42c203 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 8 Feb 2017 15:28:18 -0500
Subject: [PATCH] Fix typedef of EFI_PXE_BASE_CODE
Commit 751cbce3 fixed up a bunch of types to better match the edk2
definitions and the names in the UEFI Spec, but while doing so
inadvertantly defined things thusly:
INTERFACE_DECL(_EFI_PXE_BASE_CODE_PROTOCOL);
...
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
...
} EFI_PXE_BASE_CODE_PROTOCOL;
...
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL _EFI_PXE_BASE_CODE;
typedef struct EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
Because EFI_BASE_CODE_PROTOCOL is declared with a typedef, and is
therefore in the type namespace rather than the struct namespace, this
results in EFI_PXE_BASE_CODE being a forward declaration of an
incomplete type. The net result is that code which dereferences any
field in the struct, even with the correct names, will not correctly
build.
This patch changes both _EFI_PXE_BASE_CODE and EFI_PXE_BASE_CODE
typedefs to inherit from struct _EFI_PXE_BASE_CODE_PROTOCOL.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
inc/efipxebc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/inc/efipxebc.h b/inc/efipxebc.h
index 580a6ef..3760c7c 100644
--- a/inc/efipxebc.h
+++ b/inc/efipxebc.h
@@ -419,7 +419,7 @@ typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
// Use 'EFI_PXE_BASE_CODE_PROTOCOL_GUID' instead.
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL _EFI_PXE_BASE_CODE;
-typedef struct EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
+typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
//
// Call Back Definitions