
13 changed files with 878 additions and 0 deletions
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
From f3d3ef07eb69072b8bd2b0c5d4e6243ea38ecec9 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Thu, 2 Feb 2017 13:51:27 -0500 |
||||
Subject: [PATCH 01/10] 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 <pjones@redhat.com> |
||||
--- |
||||
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.9.3 |
||||
|
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
From fa85eb1b6ac4ceff1672c7152b6f842c2f2ff728 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Thu, 2 Feb 2017 14:31:25 -0500 |
||||
Subject: [PATCH 03/10] Fix arm build paths in the makefile |
||||
|
||||
Previous work was apparently done with arm-linux-gnueabi-gcc as a |
||||
cross-builder, but our armv7 builders have native gcc with the target as |
||||
armv7hl-linux-gnueabi, so we need to munge the arch there to get our arm |
||||
path. |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
Make.defaults | 4 ++-- |
||||
1 file changed, 2 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/Make.defaults b/Make.defaults |
||||
index 51bd7d8..e4d2ac1 100755 |
||||
--- a/Make.defaults |
||||
+++ b/Make.defaults |
||||
@@ -62,12 +62,12 @@ OBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy |
||||
|
||||
# Host/target identification |
||||
OS := $(shell uname -s) |
||||
-HOSTARCH := $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed s,i[3456789]86,ia32,) |
||||
+HOSTARCH := $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' ) |
||||
ARCH := $(HOSTARCH) |
||||
|
||||
# Get ARCH from the compiler if cross compiling |
||||
ifneq ($(CROSS_COMPILE),) |
||||
- override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed s,i[3456789]86,ia32,) |
||||
+ override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' ) |
||||
endif |
||||
|
||||
# FreeBSD (and possibly others) reports amd64 instead of x86_64 |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
From 6f5781e191cca6c20a75b82cc467c2256cbb5901 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Thu, 2 Feb 2017 15:23:55 -0500 |
||||
Subject: [PATCH 04/10] Work around -Werror=maybe-uninitialized not being very |
||||
bright. |
||||
|
||||
The compiler doesn't believe the loop always executes at least once, |
||||
even though the data in the first array entry doesn't satisfy the exit |
||||
condition. So just initialize the thing to shut it up. |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
apps/route80h.c | 2 +- |
||||
1 file changed, 1 insertion(+), 1 deletion(-) |
||||
|
||||
diff --git a/apps/route80h.c b/apps/route80h.c |
||||
index 723dd85..bf550a1 100644 |
||||
--- a/apps/route80h.c |
||||
+++ b/apps/route80h.c |
||||
@@ -102,7 +102,7 @@ efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab) |
||||
InitializeLib(image_handle, systab); |
||||
EFI_PCI_IO *pciio = NULL; |
||||
lpcif_t lpcif; |
||||
- EFI_STATUS rc; |
||||
+ EFI_STATUS rc = EFI_SUCCESS; |
||||
struct { |
||||
uint16_t vendor; |
||||
uint16_t device; |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
From 397b06ff74f7fd8fc71f5991bdfbfa6ef6da98fd Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Thu, 2 Feb 2017 15:25:48 -0500 |
||||
Subject: [PATCH 05/10] Fix a sign error in the debughook example app |
||||
|
||||
On ISO C90 on i386 4294967294 is a signed integer, and so x can't be |
||||
greater (or equal) to that. Make it an unsigned and choose a better type |
||||
for the variable. |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
apps/debughook.c | 4 ++-- |
||||
1 file changed, 2 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/apps/debughook.c b/apps/debughook.c |
||||
index fb6cdad..e1d1c50 100644 |
||||
--- a/apps/debughook.c |
||||
+++ b/apps/debughook.c |
||||
@@ -45,7 +45,7 @@ DebugHook(void) |
||||
UINT8 *data = NULL; |
||||
UINTN dataSize = 0; |
||||
EFI_STATUS efi_status; |
||||
- register volatile UINTN x = 0; |
||||
+ register volatile unsigned long long x = 0; |
||||
extern char _text, _data; |
||||
|
||||
if (x) |
||||
@@ -66,7 +66,7 @@ DebugHook(void) |
||||
while (x++) { |
||||
/* Make this so it can't /totally/ DoS us. */ |
||||
#if defined(__x86_64__) || defined(__i386__) || defined(__i686__) |
||||
- if (x > 4294967294) |
||||
+ if (x > 4294967294ULL) |
||||
break; |
||||
__asm__ __volatile__("pause"); |
||||
#elif defined(__aarch64__) |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
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 06/10] 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 |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
From a01463c5035d2bacefc1ef7673b6ba2cc9815920 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Fri, 10 Feb 2017 15:16:42 -0500 |
||||
Subject: [PATCH 07/10] make clang not complain about -fno-merge-constants |
||||
|
||||
--- |
||||
Make.defaults | 5 +++-- |
||||
1 file changed, 3 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/Make.defaults b/Make.defaults |
||||
index e4d2ac1..cc52195 100755 |
||||
--- a/Make.defaults |
||||
+++ b/Make.defaults |
||||
@@ -159,8 +159,9 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ |
||||
else |
||||
CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ |
||||
-fshort-wchar -fno-strict-aliasing \ |
||||
- -fno-merge-constants -ffreestanding -fno-stack-protector \ |
||||
- -fno-stack-check |
||||
+ -ffreestanding -fno-stack-protector \ |
||||
+ -fno-stack-check \ |
||||
+ $(if $(findstring gcc,$(CC)),-fno-merge-constants,) |
||||
endif |
||||
|
||||
ARFLAGS += -U |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
From 0281df3c77fc4d8c67c0d23c656b4debed862989 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Fri, 10 Feb 2017 16:14:12 -0500 |
||||
Subject: [PATCH 08/10] Fix another place clang complains about |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
lib/guid.c | 2 +- |
||||
1 file changed, 1 insertion(+), 1 deletion(-) |
||||
|
||||
diff --git a/lib/guid.c b/lib/guid.c |
||||
index bd1f1a5..6498e90 100644 |
||||
--- a/lib/guid.c |
||||
+++ b/lib/guid.c |
||||
@@ -97,7 +97,7 @@ static struct { |
||||
{ &SMapId, L"ShellDevPathMap" }, |
||||
{ &SAliasId, L"ShellAlias" }, |
||||
|
||||
- { NULL } |
||||
+ { NULL, L"" } |
||||
}; |
||||
|
||||
// |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
From ba05cb606c6c3a4ec9f60c588abef52e355e5c1a Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Fri, 10 Feb 2017 16:14:55 -0500 |
||||
Subject: [PATCH 09/10] route80h: remove some dead code |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
apps/route80h.c | 9 --------- |
||||
1 file changed, 9 deletions(-) |
||||
|
||||
diff --git a/apps/route80h.c b/apps/route80h.c |
||||
index bf550a1..5272dd3 100644 |
||||
--- a/apps/route80h.c |
||||
+++ b/apps/route80h.c |
||||
@@ -40,15 +40,6 @@ static inline void set_bit(volatile uint32_t *flag, int bit, int value) |
||||
Print(L"new value is 0x%2x\n", val); |
||||
} |
||||
|
||||
-static inline int configspace_matches_ids(void *config, uint32_t vendor_id, |
||||
- uint32_t device_id) |
||||
-{ |
||||
- uint32_t *cfg = config; |
||||
- if (cfg[0] == vendor_id && cfg[1] == device_id) |
||||
- return 1; |
||||
- return 0; |
||||
-} |
||||
- |
||||
static int is_device(EFI_PCI_IO *pciio, uint16_t vendor_id, uint16_t device_id) |
||||
{ |
||||
lpcif_t lpcif; |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
From a94906bd487c1a2e6d7827f31d7eb46bc09f3b43 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Fri, 10 Feb 2017 16:18:14 -0500 |
||||
Subject: [PATCH 10/10] Make clang not complain about the debughook's |
||||
optimization settings |
||||
|
||||
... still won't work, of course, because nobody at clang takes compiler |
||||
compatibility seriously while they keep implying that you can pretend |
||||
it's gcc. |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
Make.defaults | 3 ++- |
||||
apps/debughook.c | 5 +++-- |
||||
2 files changed, 5 insertions(+), 3 deletions(-) |
||||
|
||||
diff --git a/Make.defaults b/Make.defaults |
||||
index cc52195..a7778a7 100755 |
||||
--- a/Make.defaults |
||||
+++ b/Make.defaults |
||||
@@ -161,7 +161,8 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ |
||||
-fshort-wchar -fno-strict-aliasing \ |
||||
-ffreestanding -fno-stack-protector \ |
||||
-fno-stack-check \ |
||||
- $(if $(findstring gcc,$(CC)),-fno-merge-constants,) |
||||
+ $(if $(findstring gcc,$(CC)),-fno-merge-constants,) \ |
||||
+ $(if $(findstring clang,$(CC)),-Wno-unknown-pragmas,) |
||||
endif |
||||
|
||||
ARFLAGS += -U |
||||
diff --git a/apps/debughook.c b/apps/debughook.c |
||||
index e1d1c50..fa36f62 100644 |
||||
--- a/apps/debughook.c |
||||
+++ b/apps/debughook.c |
||||
@@ -37,8 +37,9 @@ GetVariable(CHAR16 *var, UINT8 **data, UINTN *len, EFI_GUID owner) |
||||
EFI_GUID DUMMY_GUID = |
||||
{0x55aad538, 0x8f82, 0x4e2a, {0xa4,0xf0,0xbe, 0x59, 0x13, 0xb6, 0x5f, 0x1e}}; |
||||
|
||||
+#pragma GCC push_options |
||||
+#pragma GCC optimize ("0") |
||||
static void |
||||
-__attribute__((__optimize__("0"))) |
||||
DebugHook(void) |
||||
{ |
||||
EFI_GUID guid = DUMMY_GUID; |
||||
@@ -81,7 +82,7 @@ DebugHook(void) |
||||
} |
||||
x = 1; |
||||
} |
||||
- |
||||
+#pragma GCC pop_options |
||||
|
||||
EFI_STATUS |
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab) |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
From 6671a712db5c4dfecd4e7026057a99d9b1c4fe5e Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Tue, 7 Mar 2017 10:11:19 -0500 |
||||
Subject: [PATCH] Nerf -Werror=pragma away |
||||
|
||||
--- |
||||
Make.defaults | 2 ++ |
||||
1 file changed, 2 insertions(+) |
||||
|
||||
diff --git a/Make.defaults b/Make.defaults |
||||
index a7778a7..8882701 100755 |
||||
--- a/Make.defaults |
||||
+++ b/Make.defaults |
||||
@@ -87,6 +87,8 @@ OBJDIR := $(TOPDIR)/$(ARCH) |
||||
# Arch-specific compilation flags |
||||
CPPFLAGS += -DCONFIG_$(ARCH) |
||||
|
||||
+CFLAGS += -Wno-error=pragmas |
||||
+ |
||||
ifeq ($(ARCH),ia64) |
||||
CFLAGS += -mfixed-range=f32-f127 |
||||
endif |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
From bbd1ee0379327a58e042d288e371f314b7df2d55 Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Wed, 15 Mar 2017 17:33:39 -0400 |
||||
Subject: [PATCH] Make ia32 use our own div asm on gnu C as well. |
||||
|
||||
--- |
||||
lib/ia32/math.c | 4 ++-- |
||||
1 file changed, 2 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/lib/ia32/math.c b/lib/ia32/math.c |
||||
index 81f51bf..fce7a8d 100644 |
||||
--- a/lib/ia32/math.c |
||||
+++ b/lib/ia32/math.c |
||||
@@ -140,7 +140,7 @@ DivU64x32 ( |
||||
// divide 64bit by 32bit and get a 64bit result |
||||
// N.B. only works for 31bit divisors!! |
||||
{ |
||||
-#if defined(__GNUC__) && !defined(__MINGW32__) |
||||
+#if 0 && defined(__GNUC__) && !defined(__MINGW32__) |
||||
if (Remainder) |
||||
*Remainder = Dividend % Divisor; |
||||
return Dividend / Divisor; |
||||
@@ -157,7 +157,7 @@ DivU64x32 ( |
||||
|
||||
Rem = 0; |
||||
for (bit=0; bit < 64; bit++) { |
||||
-#ifdef __MINGW32__ |
||||
+#if defined(__GNUC__) || defined(__MINGW32__) |
||||
asm ( |
||||
"shll $1, %0\n\t" |
||||
"rcll $1, 4%0\n\t" |
||||
-- |
||||
2.12.0 |
||||
|
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
From 0e95c51225b01f0ca79dafd607ae6a3e404db6be Mon Sep 17 00:00:00 2001 |
||||
From: Peter Jones <pjones@redhat.com> |
||||
Date: Tue, 28 Mar 2017 17:59:55 -0400 |
||||
Subject: [PATCH 13/13] Call ar in deterministic mode. |
||||
|
||||
We need the x86_64 and i686 builds of .a's to be the same, and that |
||||
means we need to not have timestamps. Also force the timestamps on disk |
||||
just in case that doesn't work, because RHEL's ar /silently ignores -D/. |
||||
|
||||
v2: use "ar rvD" not "ar rv -D". |
||||
|
||||
It's a wonder anybody ever gets these command line options right, if |
||||
"ar rv -D libfoo.a foo.o" doesn't use deterministic mode (or |
||||
complain), but "ar rvD libfoo.a foo.o" does. |
||||
|
||||
v3: Add a bunch of junk to try to set timestamps to 0 manually |
||||
|
||||
For some reason I'm still getting timestamps in the .a even though ar seems to |
||||
be invoked correctly. When I do "mock -r rhel-7-build --shell" and run make |
||||
manually, they're fine. Very strange. |
||||
|
||||
v4: go back to v2, the problem isn't in the make process. |
||||
|
||||
"ar rDv" works just fine, but /usr/lib/rpm/redhat/brp-strip-static-archive is |
||||
calling "%{__strip} -g $for_each.a", and it's rewriting our binary from |
||||
ts/uid/gid of 0/0/0 to $epoch/$UID/$GID. Awesomely /usr/bin/strip it seems to |
||||
have 3 modes of operation: |
||||
-U: the default, which adds $epoch/$UID/$GID to your binary archive |
||||
instead of just removing stuff. Clearly the Principle of Least |
||||
Surprise is strong here. |
||||
-p: preserve the timestamp from the original .a, but add UID and GID, |
||||
because this is 1980 and people use ar(1) for archiving stuff they |
||||
might want that out of. |
||||
-D: Condescend at you in a command line error and explain that -D both |
||||
is and is not a valid option: |
||||
/usr/bin/strip: invalid option -- 'D' |
||||
Usage: /usr/bin/strip <option(s)> in-file(s) |
||||
Removes symbols and sections from files |
||||
The options are: |
||||
... |
||||
-D --enable-deterministic-archives |
||||
Produce deterministic output when stripping archives |
||||
So I agree that it's invalid, but I think we may be pronouncing that |
||||
second vowel differently. They say in-VAL-id, I say IN-vuh-lid. |
||||
|
||||
Nobody should ever have to run "strace -ttt -v -f -o make.strace make all", |
||||
just to discover the problem isn't even in there. |
||||
|
||||
Related: rhbz#1310782 |
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com> |
||||
--- |
||||
Make.defaults | 2 +- |
||||
1 files changed, 1 insertions(+), 1 deletion(-) |
||||
|
||||
diff --git a/Make.defaults b/Make.defaults |
||||
index aa15c73..8f36365 100755 |
||||
--- a/Make.defaults |
||||
+++ b/Make.defaults |
||||
@@ -167,7 +167,7 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ |
||||
$(if $(findstring clang,$(CC)),-Wno-unknown-pragmas,) |
||||
endif |
||||
|
||||
-ARFLAGS += -U |
||||
+ARFLAGS := rDv |
||||
ASFLAGS += $(ARCH3264) |
||||
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \ |
||||
--build-id=sha1 |
||||
-- |
||||
2.9.3 |
||||
|
@ -0,0 +1,415 @@
@@ -0,0 +1,415 @@
|
||||
Summary: Development Libraries and headers for EFI |
||||
Name: gnu-efi |
||||
Version: 3.0.5 |
||||
Release: 9%{?dist}%{?buildid} |
||||
Epoch: 1 |
||||
Group: Development/System |
||||
License: BSD |
||||
URL: ftp://ftp.hpl.hp.com/pub/linux-ia64 |
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) |
||||
ExclusiveArch: x86_64 aarch64 |
||||
BuildRequires: git |
||||
%ifarch x86_64 |
||||
#BuildRequires: glibc32 |
||||
BuildRequires: glibc-devel(x86-32) |
||||
%endif |
||||
Source: http://superb-dca2.dl.sourceforge.net/project/gnu-efi/gnu-efi-%{version}.tar.bz2 |
||||
|
||||
Patch0001: 0001-Mark-our-explicit-fall-through-so-Wextra-will-work-i.patch |
||||
Patch0002: 0002-Fix-some-types-gcc-doesn-t-like.patch |
||||
Patch0003: 0003-Fix-arm-build-paths-in-the-makefile.patch |
||||
Patch0004: 0004-Work-around-Werror-maybe-uninitialized-not-being-ver.patch |
||||
Patch0005: 0005-Fix-a-sign-error-in-the-debughook-example-app.patch |
||||
Patch0006: 0006-Fix-typedef-of-EFI_PXE_BASE_CODE.patch |
||||
Patch0007: 0007-make-clang-not-complain-about-fno-merge-constants.patch |
||||
Patch0008: 0008-Fix-another-place-clang-complains-about.patch |
||||
Patch0009: 0009-route80h-remove-some-dead-code.patch |
||||
Patch0010: 0010-Make-clang-not-complain-about-the-debughook-s-optimi.patch |
||||
Patch0011: 0011-Nerf-Werror-pragma-away.patch |
||||
Patch0012: 0012-Make-ia32-use-our-own-div-asm-on-gnu-C-as-well.patch |
||||
Patch0013: 0013-Call-ar-in-deterministic-mode.patch |
||||
|
||||
%define debug_package %{nil} |
||||
|
||||
# brp-strip-static-archive will senselessly /add/ timestamps and uid/gid |
||||
# data to our .a and make them not multilib clean if we don't have this. |
||||
# Note that if we don't have the shell quotes there, -p becomes $2 on its |
||||
# invocation, and so it completely ignores it. |
||||
# |
||||
# Also note that if we try to use -D as we should (so it doesn't add |
||||
# uid/gid), strip(1) from binutils-2.25.1-22.base.el7.x86_64 throws a |
||||
# syntax error. |
||||
# |
||||
# True story. |
||||
# |
||||
%global __strip "%{__strip} -p" |
||||
|
||||
# Figure out the right file path to use |
||||
%global efidir %(eval echo $(grep ^ID= /etc/os-release | sed -e 's/^ID=//' -e 's/rhel/redhat/')) |
||||
|
||||
%ifarch x86_64 |
||||
%global efiarch x86_64 |
||||
%endif |
||||
%ifarch aarch64 |
||||
%global efiarch aarch64 |
||||
%endif |
||||
%ifarch %{ix86} |
||||
%global efiarch ia32 |
||||
%endif |
||||
|
||||
%description |
||||
This package contains development headers and libraries for developing |
||||
applications that run under EFI (Extensible Firmware Interface). |
||||
|
||||
%package devel |
||||
Summary: Development Libraries and headers for EFI |
||||
Group: Development/System |
||||
Obsoletes: gnu-efi < 1:3.0.2-1 |
||||
Requires: gnu-efi |
||||
|
||||
%description devel |
||||
This package contains development headers and libraries for developing |
||||
applications that run under EFI (Extensible Firmware Interface). |
||||
|
||||
%package utils |
||||
Summary: Utilities for EFI systems |
||||
Group: Applications/System |
||||
|
||||
%description utils |
||||
This package contains utilties for debugging and developing EFI systems. |
||||
|
||||
%prep |
||||
%setup -q -n gnu-efi-%{version} |
||||
git init |
||||
git config user.email "gnu-efi-owner@redhat.com" |
||||
git config user.name "RHEL Ninjas" |
||||
git config sendemail.to "gnu-efi-owner@fedoraproject.org" |
||||
git add . |
||||
git commit -a -q -m "%{version} baseline." |
||||
git am %{patches} </dev/null |
||||
git config --unset user.email |
||||
git config --unset user.name |
||||
|
||||
%build |
||||
# Package cannot build with %{?_smp_mflags}. |
||||
make |
||||
make apps |
||||
%ifarch x86_64 |
||||
setarch linux32 -B make ARCH=ia32 PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib |
||||
setarch linux32 -B make ARCH=ia32 PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib apps |
||||
%endif |
||||
|
||||
%install |
||||
rm -rf %{buildroot} |
||||
|
||||
mkdir -p %{buildroot}/%{_libdir}/gnuefi |
||||
mkdir -p %{buildroot}/boot/efi/EFI/%{efidir}/%{efiarch} |
||||
make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} install |
||||
mv %{buildroot}/%{_libdir}/*.lds %{buildroot}/%{_libdir}/*.o %{buildroot}/%{_libdir}/gnuefi |
||||
mv %{efiarch}/apps/{route80h.efi,modelist.efi} %{buildroot}/boot/efi/EFI/%{efidir}/%{efiarch}/ |
||||
|
||||
%ifarch x86_64 |
||||
mkdir -p %{buildroot}/%{_prefix}/lib/gnuefi |
||||
mkdir -p %{buildroot}/boot/efi/EFI/%{efidir}/ia32 |
||||
|
||||
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} ARCH=ia32 install |
||||
mv %{buildroot}/%{_prefix}/lib/*.{lds,o} %{buildroot}/%{_prefix}/lib/gnuefi/ |
||||
mv ia32/apps/{route80h.efi,modelist.efi} %{buildroot}/boot/efi/EFI/%{efidir}/ia32/ |
||||
%endif |
||||
|
||||
%clean |
||||
rm -rf %{buildroot} |
||||
|
||||
%files |
||||
%{_prefix}/lib*/* |
||||
|
||||
%files devel |
||||
%defattr(-,root,root,-) |
||||
%doc README.* ChangeLog |
||||
%{_includedir}/efi |
||||
|
||||
%files utils |
||||
%dir /boot/efi/EFI/%{efidir}/ |
||||
%attr(0644,root,root) /boot/efi/EFI/%{efidir}/*/*.efi |
||||
|
||||
%changelog |
||||
* Thu Mar 30 2017 Peter Jones <pjones@redhat.com> - 3.0.5-9 |
||||
- Just don't build the .i686 package at all. After a scratch build, it's |
||||
clear that "strip -p" is not good enough, because our different builders |
||||
have non-matching UIDs for the build process, and -p adds uid/gid to the |
||||
archive. So there's no way to fix the multiarch conflict here without |
||||
either fixing that or fixing strip(1) with: |
||||
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=patch;h=7a093a78 |
||||
We don't strictly need the .i686 package anyway, since we've moved to |
||||
making the dependent binaries all build the ia32 bits on x86_64 for |
||||
other reasons. Related: rhbz#1310782 |
||||
|
||||
* Thu Mar 30 2017 Peter Jones <pjones@redhat.com> - 3.0.5-9 |
||||
- One more attempt at nerfing timestamps. It's surprising how broken this |
||||
can be. |
||||
|
||||
"ar rDv" works just fine, but |
||||
/usr/lib/rpm/redhat/brp-strip-static-archive is calling "%{__strip} -g |
||||
$for_each.a", and it's rewriting our binary from ts/uid/gid of 0/0/0 to |
||||
$epoch/$UID/$GID. Awesomely /usr/bin/strip it seems to have 3 modes of |
||||
operation: |
||||
-U: the default, which adds $epoch/$UID/$GID to your binary archive |
||||
instead of just removing stuff. Clearly the Principle of Least |
||||
Surprise is strong here. |
||||
-p: preserve the timestamp from the original .a, but add UID and GID, |
||||
because this is 1980 and people use ar(1) for archiving stuff they |
||||
might want that out of. |
||||
-D: Condescend at you in a command line error and explain that -D both |
||||
is and is not a valid option: |
||||
/usr/bin/strip: invalid option -- 'D' |
||||
Usage: /usr/bin/strip <option(s)> in-file(s) |
||||
Removes symbols and sections from files |
||||
The options are: |
||||
... |
||||
-D --enable-deterministic-archives |
||||
Produce deterministic output when stripping archives |
||||
So I agree that it's invalid, but I think we may be pronouncing that |
||||
second vowel differently. They say in-VAL-id, I say IN-vuh-lid. |
||||
|
||||
Nobody should ever have to run "strace -ttt -v -f -o make.strace make |
||||
all", just to discover the problem isn't even in there. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Tue Mar 28 2017 Peter Jones <pjones@redhat.com> - 3.0.5-8 |
||||
- Nerf the timestamps on our .o files while building, because RHEL's ar(1) is |
||||
horrible and silently ignores the 'D' option. It's fine, I probably didn't |
||||
put it there for any reason. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Tue Mar 28 2017 Peter Jones <pjones@redhat.com> - 3.0.5-7 |
||||
- Call ar(1) in deterministic mode so our .a's are multipath clean. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Mon Mar 20 2017 Peter Jones <pjones@redhat.com> - 3.0.5-6 |
||||
- Also build the ia32 bits in a separate 32-bit package for other consumers. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Wed Mar 15 2017 Peter Jones <pjones@redhat.com> - 3.0.5-5 |
||||
- Fix a codegin bug that makes it want libgcc_s (but not know it) on ia32. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Mon Mar 13 2017 Peter Jones <pjones@redhat.com> - 3.0.5-4 |
||||
- Package the ia32 bits somewhat better. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Mon Mar 13 2017 Peter Jones <pjones@redhat.com> - 3.0.5-3 |
||||
- Include ia32 bits in the x86_64 packages instead of making a separate |
||||
32-bit package |
||||
Resolves: rhbz#1310782 |
||||
|
||||
* Mon Mar 06 2017 Peter Jones <pjones@redhat.com> - 3.0.5-2 |
||||
- Fix some bugs in the 3.0.5 release. |
||||
Related: rhbz#1310782 |
||||
|
||||
* Thu Feb 02 2017 Peter Jones <pjones@redhat.com> - 3.0.5-1 |
||||
- Update to 3.0.5 |
||||
- Re-enable ia32 builds for the most hilarious changelog series... |
||||
Resolves: rhbz#1310782 |
||||
|
||||
* Mon Jun 15 2015 Peter Jones <pjones@redhat.com> - 3.0.2-2 |
||||
- Fix .spec mismerge from upstream that causes ia32 to build. |
||||
Related: rhbz#1190191 |
||||
Related: rhbz#1115843 |
||||
Related: rhbz#1100048 |
||||
|
||||
* Mon Jun 15 2015 Peter Jones <pjones@redhat.com> - 3.0.2-1 |
||||
- Update to 3.0.2 |
||||
Related: rhbz#1190191 |
||||
Related: rhbz#1115843 |
||||
Related: rhbz#1100048 |
||||
- Fix base package requirement on subpackages |
||||
|
||||
* 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. |
||||
- Enable AArch64 |
||||
|
||||
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 3.0u-2 |
||||
- Mass rebuild 2013-12-27 |
||||
|
||||
* Fri Oct 25 2013 Peter Jones <pjones@redhat.com> - 3.0u-1 |
||||
- Reflect that we're not supporting this on anything but x86_64. |
||||
Related: rhbz#1017861 |
||||
|
||||
* Tue Sep 24 2013 Peter Jones <pjones@redhat.com> - 3.0u-0.1 |
||||
- Update to 3.0u |
||||
Related: rhbz#996863 |
||||
- Split out subpackages so -devel can be multilib |
||||
- Fix path in apps subpackage to vary by distro. |
||||
|
||||
* Thu Jul 25 2013 Peter Jones <pjones@redhat.com> - 3.0q-3 |
||||
- Revert to 3.0q |
||||
Related: rhbz#978766 |
||||
|
||||
* Fri Jun 07 2013 Peter Jones <pjones@redhat.com> - 3.0t-0.1 |
||||
- Update to 3.0t |
||||
- Don't allow use of mmx or sse registers. |
||||
|
||||
* Thu May 16 2013 Peter Jones <pjones@redhat.com> - 3.0s-2 |
||||
- Update to 3.0s |
||||
Related: rhbz#963359 |
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0q-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||
|
||||
* Fri Jul 27 2012 Matthew Garrett <mjg@redhat.com> - 3.0q-1 |
||||
- Update to current upstream |
||||
- License change - GPLv2+ to BSD |
||||
|
||||
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-18 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||
|
||||
* Wed Apr 25 2012 Peter Jones <pjones@redhat.com> - 3.0e-17 |
||||
- Align .reloc section as well to make secureboot work (mfleming) |
||||
|
||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-16 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild |
||||
|
||||
* Thu Aug 11 2011 Peter Jones <pjones@redhat.com> - 3.0e-15 |
||||
- Correctly pad the stack when doing uefi calls |
||||
Related: rhbz#677468 |
||||
- Add ability to write UEFI callbacks and drivers |
||||
- Add test harness for ABI Calling Conventions |
||||
|
||||
* Thu Jun 16 2011 Peter Jones <pjones@redhat.com> - 3.0e-14 |
||||
- Handle uninitialized GOP driver gracefully. |
||||
|
||||
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-13 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||
|
||||
* Fri Sep 10 2010 Peter Jones <pjones@redhat.com> - 3.0e-12 |
||||
- Add "modelist.efi" test utility in apps/ |
||||
|
||||
* Mon Jul 26 2010 Peter Jones <pjones@redhat.com> - 3.0e-11 |
||||
- Add PciIo headers. |
||||
|
||||
* Fri Jul 23 2010 Peter Jones <pjones@redhat.com> - 3.0e-10 |
||||
- Add UEFI 2.x boot services. |
||||
|
||||
* Tue Aug 11 2009 Peter Jones <pjones@redhat.com> - 3.0e-9 |
||||
- Change ExclusiveArch to reflect arch changes in repos. |
||||
|
||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-8 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||
|
||||
* Fri Apr 03 2009 Peter Jones <pjones@redhat.com> - 3.0e-7 |
||||
- Use nickc's workaround for #492183 |
||||
|
||||
* Tue Mar 31 2009 Peter Jones <pjones@redhat.com> - 3.0e-6.1 |
||||
- Make a test package for nickc. |
||||
|
||||
* Thu Mar 12 2009 Chris Lumens <clumens@redhat.com> 3.0e-6 |
||||
- Add IA64 back into the list of build arches (#489544). |
||||
|
||||
* Mon Mar 02 2009 Peter Jones <pjones@redhat.com> - 3.0e-5 |
||||
- Switch to i586 from i386. |
||||
|
||||
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-4 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild |
||||
|
||||
* Fri Feb 13 2009 Peter Jones <pjones@redhat.com> - 3.0e-3 |
||||
- Pad sections out in the provided linker scripts to make sure they all of |
||||
some content. |
||||
|
||||
* Fri Oct 03 2008 Peter Jones <pjones@redhat.com> - 3.0e-2 |
||||
- Fix install paths on x86_64. |
||||
|
||||
* Thu Oct 02 2008 Peter Jones <pjones@redhat.com> - 3.0e-1 |
||||
- Update to 3.0e |
||||
- Fix relocation bug in 3.0e |
||||
|
||||
* Tue Jul 29 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 3.0d-6 |
||||
- fix license tag |
||||
|
||||
* Mon Jul 28 2008 Peter Jones <pjones@redhat.com> - 3.0d-5 |
||||
- Remove ia64 palproc code since its license isn't usable. |
||||
- Remove ia64 from ExclusiveArch since it can't build... |
||||
|
||||
* Thu Mar 27 2008 Peter Jones <pjones@redhat.com> - 3.0d-4 |
||||
- Fix uefi_call_wrapper(x, 10, ...) . |
||||
- Add efi_main wrappers and EFI_CALL() macro so drivers are possible. |
||||
|
||||
* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.0d-3 |
||||
- Autorebuild for GCC 4.3 |
||||
|
||||
* Fri Jan 11 2008 Peter Jones <pjones@redhat.com> - 3.0d-2 |
||||
- Get rid of a bogus #ifdef . |
||||
|
||||
* Wed Dec 19 2007 Peter Jones <pjones@redhat.com> - 3.0d-1 |
||||
- Update to 3.0d |
||||
|
||||
* Tue Jun 12 2007 Chris Lumens <clumens@redhat.com> - 3.0c-2 |
||||
- Fixes for package review (#225846). |
||||
|
||||
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.0c-1.1 |
||||
- rebuild |
||||
|
||||
* Thu Apr 27 2006 Chris Lumens <clumens@redhat.com> 3.0c-1 |
||||
- Upgrade to gnu-efi-3.0c. |
||||
- Enable build on i386. |
||||
|
||||
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.0a-7.2 |
||||
- rebuilt for new gcc4.1 snapshot and glibc changes |
||||
|
||||
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Thu Mar 3 2005 Jeremy Katz <katzj@redhat.com> - 3.0a-7 |
||||
- rebuild with gcc 4 |
||||
|
||||
* Tue Sep 21 2004 Jeremy Katz <katzj@redhat.com> - 3.0a-6 |
||||
- add fix from Jesse Barnes for newer binutils (#129197) |
||||
|
||||
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Wed Apr 21 2004 Jeremy Katz <katzj@redhat.com> - 3.0a-4 |
||||
- actually add the patch |
||||
|
||||
* Tue Apr 20 2004 Bill Nottingham <notting@redhat.com> 3.0a-3 |
||||
- add patch to coalesce some relocations (#120080, <erikj@sgi.com>) |
||||
|
||||
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Fri Oct 4 2002 Jeremy Katz <katzj@redhat.com> |
||||
- rebuild in new environment |
||||
|
||||
* Sun Jul 8 2001 Bill Nottingham <notting@redhat.com> |
||||
- update to 3.0 |
||||
|
||||
* Tue Jun 5 2001 Bill Nottingham <notting@redhat.com> |
||||
- add fix for invocations from the boot manager menu (#42222) |
||||
|
||||
* Tue May 22 2001 Bill Nottingham <notting@redhat.com> |
||||
- add bugfix for efibootmgr (<schwab@suse.de>) |
||||
|
||||
* Mon May 21 2001 Bill Nottingham <notting@redhat.com> |
||||
- update to 2.5 |
||||
- add in efibootmgr from Dell (<Matt_Domsch@dell.com>) |
||||
|
||||
* Thu May 3 2001 Bill Nottingham <notting@redhat.com> |
||||
- fix booting of kernels with extra arguments (#37711) |
||||
|
||||
* Wed Apr 25 2001 Bill Nottingham <notting@redhat.com> |
||||
- take out Stephane's initrd patch |
||||
|
||||
* Fri Apr 20 2001 Bill Nottingham <notting@redhat.com> |
||||
- fix the verbosity patch to not break passing arguments to images |
||||
|
||||
* Wed Apr 18 2001 Bill Nottingham <notting@redhat.com> |
||||
- update to 2.0, build elilo, obsolete eli |
||||
|
||||
* Tue Dec 5 2000 Bill Nottingham <notting@redhat.com> |
||||
- update to 1.1 |
||||
|
||||
* Thu Oct 26 2000 Bill Nottingham <notting@redhat.com> |
||||
- add patch for new toolchain, update to 1.0 |
||||
|
||||
* Thu Aug 17 2000 Bill Nottingham <notting@redhat.com> |
||||
- update to 0.9 |
Loading…
Reference in new issue