Compare commits
No commits in common. "c8s" and "c9s" have entirely different histories.
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,2 +1,6 @@
|
|||||||
SOURCES/gnu-efi-3.0.6.tar.bz2
|
clog
|
||||||
/gnu-efi-3.0.6.tar.bz2
|
gnu-efi?3.0*.tar.*
|
||||||
|
*.rpm
|
||||||
|
gnu-efi-*/
|
||||||
|
.build*.log
|
||||||
|
results_gnu-efi/
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
From 99d94682de590719f9333fcf091910a9581b44c0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Thu, 13 Jul 2017 08:43:16 -0400
|
|
||||||
Subject: [PATCH 01/25] [PATCH] Disable AVX instruction set on IA32 and x86_64
|
|
||||||
platforms
|
|
||||||
|
|
||||||
If gnu-efi is compiled with "-march=native" on a host that supports AVX, both
|
|
||||||
gcc and clang will use AVX instructions freely which is currently not supported
|
|
||||||
and will result in a non-functional gnu-efi build (e.g. black screen, hangs).
|
|
||||||
|
|
||||||
For now, disable AVX on IA32 and x86_64 by checking first if the compiler does
|
|
||||||
actually support the appropriate flag (-mno-avx) and use it if possible.
|
|
||||||
|
|
||||||
Credit for the compiler command line to check if a flag is supported goes to
|
|
||||||
Gentoo's awesome flag-o-matic eclass, where it is taken from. Thanks.
|
|
||||||
|
|
||||||
Signed-off-by: Matthias Dahl <matthias.dahl@binary-island.eu>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index 16f1fd21848..446e676dc14 100755
|
|
||||||
--- a/Make.defaults
|
|
||||||
+++ b/Make.defaults
|
|
||||||
@@ -120,6 +120,14 @@ ifeq ($(ARCH),x86_64)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
+ifneq (,$(filter $(ARCH),ia32 x86_64))
|
|
||||||
+ # Disable AVX, if the compiler supports that.
|
|
||||||
+ CC_CAN_DISABLE_AVX=$(shell $(CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo 1)
|
|
||||||
+ ifeq ($(CC_CAN_DISABLE_AVX), 1)
|
|
||||||
+ CFLAGS += -mno-avx
|
|
||||||
+ endif
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
ifeq ($(ARCH),mips64el)
|
|
||||||
CFLAGS += -march=mips64r2
|
|
||||||
ARCH3264 = -mabi=64
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
28
0001-Set-0-properly-in-StrnCpy.patch
Normal file
28
0001-Set-0-properly-in-StrnCpy.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gary Lin <glin@suse.com>
|
||||||
|
Date: Tue, 9 Oct 2018 18:35:21 +0800
|
||||||
|
Subject: [PATCH] Set '\0' properly in StrnCpy()
|
||||||
|
|
||||||
|
The arguments to SetMem() were wrong. Besides, SetMem() should start at
|
||||||
|
"Dest + Size" since "Size" will be smaller than "Len" if they are not
|
||||||
|
equal.
|
||||||
|
|
||||||
|
Signed-off-by: Gary Lin <glin@suse.com>
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
---
|
||||||
|
lib/runtime/rtstr.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index 129c9f21ad5..73965cae192 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -71,7 +71,7 @@ RtStrnCpy (
|
||||||
|
{
|
||||||
|
UINTN Size = RtStrnLen(Src, Len);
|
||||||
|
if (Size != Len)
|
||||||
|
- RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16)));
|
||||||
|
+ RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
|
||||||
|
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Tue, 8 Jan 2019 11:19:25 -0500
|
||||||
|
Subject: [PATCH] Fix typeo in efierr.h EFI_WARN_UNKNOWN_GLYPH definition.
|
||||||
|
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Signed-off-by: manison <manison@users.sf.net>
|
||||||
|
---
|
||||||
|
inc/efierr.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/inc/efierr.h b/inc/efierr.h
|
||||||
|
index dfd3d3cf486..d351c1ca225 100644
|
||||||
|
--- a/inc/efierr.h
|
||||||
|
+++ b/inc/efierr.h
|
||||||
|
@@ -58,7 +58,7 @@ Revision History
|
||||||
|
#define EFI_INVALID_LANGUAGE EFIERR(32)
|
||||||
|
#define EFI_COMPROMISED_DATA EFIERR(33)
|
||||||
|
|
||||||
|
-#define EFI_WARN_UNKOWN_GLYPH EFIWARN(1)
|
||||||
|
+#define EFI_WARN_UNKNOWN_GLYPH EFIWARN(1)
|
||||||
|
#define EFI_WARN_DELETE_FAILURE EFIWARN(2)
|
||||||
|
#define EFI_WARN_WRITE_FAILURE EFIWARN(3)
|
||||||
|
#define EFI_WARN_BUFFER_TOO_SMALL EFIWARN(4)
|
@ -1,30 +0,0 @@
|
|||||||
From 08a46615c70f5af195443fcf5d0fd425fa329096 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Mon, 7 Aug 2017 13:32:54 -0400
|
|
||||||
Subject: [PATCH 02/25] Use ARFLAGS when invoking ar.
|
|
||||||
|
|
||||||
The use of ARFLAGS makes these flags overridable.
|
|
||||||
The '-U' option is already added to ARFLAGS in Make.defaults.
|
|
||||||
|
|
||||||
Signed-off-by: Janosch Hildebrand <jnosh+git@jnosh.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/Makefile | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/Makefile b/lib/Makefile
|
|
||||||
index b8d1ce70d48..0e6410dac55 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) $(ARFLAGS) $@ $^
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f libefi.a *~ $(OBJS) */*.o
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
185
0003-Fixed-typeo-lib-error.c-EFI_WARN_UNKNOWN_GLYPH-defin.patch
Normal file
185
0003-Fixed-typeo-lib-error.c-EFI_WARN_UNKNOWN_GLYPH-defin.patch
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Wed, 9 Jan 2019 07:03:46 -0500
|
||||||
|
Subject: [PATCH] * Fixed typeo lib/error.c EFI_WARN_UNKNOWN_GLYPH definition.
|
||||||
|
On couple of locations in runtime string library (rtstr.c) there are calls to
|
||||||
|
non-runtime variant of StrLen function. * Another issue is with formatting
|
||||||
|
1394 paths. The F1394_DEVICE_PATH::Guid is formatted as %g, but 1394 GUID is
|
||||||
|
8 byte integer, not EFI_GUID and therefore should be formatted as e.g. %016lx
|
||||||
|
(as edk2 does). * Beyond what's mentioned above, changed the format of the
|
||||||
|
harddrive path, so it's in line with edk2 format and spec (2.7 errata A,
|
||||||
|
chapter 10.6.1.6, table 102).
|
||||||
|
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Signed-off-by: manison <manison@users.sf.net>
|
||||||
|
---
|
||||||
|
inc/efidevp.h | 10 +++++-----
|
||||||
|
lib/dpath.c | 26 ++++++++++++++------------
|
||||||
|
lib/error.c | 2 +-
|
||||||
|
lib/runtime/rtstr.c | 12 ++++++------
|
||||||
|
4 files changed, 26 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/inc/efidevp.h b/inc/efidevp.h
|
||||||
|
index ffaf6e28eea..fa1a235eaba 100644
|
||||||
|
--- a/inc/efidevp.h
|
||||||
|
+++ b/inc/efidevp.h
|
||||||
|
@@ -325,11 +325,11 @@ typedef struct _VLAN_DEVICE_PATH {
|
||||||
|
#define MSG_INFINIBAND_DP 0x09
|
||||||
|
typedef struct _INFINIBAND_DEVICE_PATH {
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||||
|
- UINT32 ResourceFlags ;
|
||||||
|
- UINT64 PortGid ;
|
||||||
|
- UINT64 ServiceId ;
|
||||||
|
- UINT64 TargetPortId ;
|
||||||
|
- UINT64 DeviceId ;
|
||||||
|
+ UINT32 ResourceFlags;
|
||||||
|
+ UINT8 PortGid[16];
|
||||||
|
+ UINT64 ServiceId;
|
||||||
|
+ UINT64 TargetPortId;
|
||||||
|
+ UINT64 DeviceId;
|
||||||
|
} INFINIBAND_DEVICE_PATH;
|
||||||
|
|
||||||
|
#define MSG_UART_DP 0x0e
|
||||||
|
diff --git a/lib/dpath.c b/lib/dpath.c
|
||||||
|
index 7486252eecf..5e079d687bd 100644
|
||||||
|
--- a/lib/dpath.c
|
||||||
|
+++ b/lib/dpath.c
|
||||||
|
@@ -659,7 +659,8 @@ _DevPath1394 (
|
||||||
|
F1394_DEVICE_PATH *F1394;
|
||||||
|
|
||||||
|
F1394 = DevPath;
|
||||||
|
- CatPrint(Str, L"1394(%g)", &F1394->Guid);
|
||||||
|
+ // Guid has format of IEEE-EUI64
|
||||||
|
+ CatPrint(Str, L"I1394(%016lx)", F1394->Guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -863,9 +864,9 @@ _DevPathInfiniBand (
|
||||||
|
INFINIBAND_DEVICE_PATH *InfiniBand;
|
||||||
|
|
||||||
|
InfiniBand = DevPath;
|
||||||
|
- CatPrint( Str , L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)" ,
|
||||||
|
- InfiniBand-> ResourceFlags , InfiniBand-> PortGid , InfiniBand-> ServiceId ,
|
||||||
|
- InfiniBand-> TargetPortId , InfiniBand-> DeviceId ) ;
|
||||||
|
+ CatPrint(Str, L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)",
|
||||||
|
+ InfiniBand->ResourceFlags, InfiniBand->PortGid, InfiniBand->ServiceId,
|
||||||
|
+ InfiniBand->TargetPortId, InfiniBand->DeviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
@@ -889,17 +890,19 @@ _DevPathUart (
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Uart->BaudRate == 0) {
|
||||||
|
- CatPrint(Str, L"Uart(DEFAULT %c",Uart->BaudRate,Parity);
|
||||||
|
+ CatPrint(Str, L"Uart(DEFAULT,");
|
||||||
|
} else {
|
||||||
|
- CatPrint(Str, L"Uart(%d %c",Uart->BaudRate,Parity);
|
||||||
|
+ CatPrint(Str, L"Uart(%ld,", Uart->BaudRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Uart->DataBits == 0) {
|
||||||
|
- CatPrint(Str, L"D");
|
||||||
|
+ CatPrint(Str, L"DEFAULT,");
|
||||||
|
} else {
|
||||||
|
- CatPrint(Str, L"%d",Uart->DataBits);
|
||||||
|
+ CatPrint(Str, L"%d,", Uart->DataBits);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ CatPrint(Str, L"%c,", Parity);
|
||||||
|
+
|
||||||
|
switch (Uart->StopBits) {
|
||||||
|
case 0 : CatPrint(Str, L"D)"); break;
|
||||||
|
case 1 : CatPrint(Str, L"1)"); break;
|
||||||
|
@@ -933,21 +936,20 @@ _DevPathHardDrive (
|
||||||
|
Hd = DevPath;
|
||||||
|
switch (Hd->SignatureType) {
|
||||||
|
case SIGNATURE_TYPE_MBR:
|
||||||
|
- CatPrint(Str, L"HD(Part%d,Sig%08X)",
|
||||||
|
+ CatPrint(Str, L"HD(%d,MBR,0x%08x)",
|
||||||
|
Hd->PartitionNumber,
|
||||||
|
*((UINT32 *)(&(Hd->Signature[0])))
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case SIGNATURE_TYPE_GUID:
|
||||||
|
- CatPrint(Str, L"HD(Part%d,Sig%g)",
|
||||||
|
+ CatPrint(Str, L"HD(%d,GPT,%g)",
|
||||||
|
Hd->PartitionNumber,
|
||||||
|
(EFI_GUID *) &(Hd->Signature[0])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
- CatPrint(Str, L"HD(Part%d,MBRType=%02x,SigType=%02x)",
|
||||||
|
+ CatPrint(Str, L"HD(%d,%d,0)",
|
||||||
|
Hd->PartitionNumber,
|
||||||
|
- Hd->MBRType,
|
||||||
|
Hd->SignatureType
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
diff --git a/lib/error.c b/lib/error.c
|
||||||
|
index 3a856a6f39d..c4d053db633 100644
|
||||||
|
--- a/lib/error.c
|
||||||
|
+++ b/lib/error.c
|
||||||
|
@@ -56,7 +56,7 @@ struct {
|
||||||
|
{ EFI_COMPROMISED_DATA, L"Compromised Data"},
|
||||||
|
|
||||||
|
// warnings
|
||||||
|
- { EFI_WARN_UNKOWN_GLYPH, L"Warning Unknown Glyph"},
|
||||||
|
+ { EFI_WARN_UNKNOWN_GLYPH, L"Warning Unknown Glyph"},
|
||||||
|
{ EFI_WARN_DELETE_FAILURE, L"Warning Delete Failure"},
|
||||||
|
{ EFI_WARN_WRITE_FAILURE, L"Warning Write Failure"},
|
||||||
|
{ EFI_WARN_BUFFER_TOO_SMALL, L"Warning Buffer Too Small"},
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index 73965cae192..802e7f43309 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -18,7 +18,7 @@ Revision History
|
||||||
|
#include "lib.h"
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
-#pragma RUNTIME_CODE(RtAcquireLock)
|
||||||
|
+#pragma RUNTIME_CODE(RtStrCmp)
|
||||||
|
#endif
|
||||||
|
INTN
|
||||||
|
RUNTIMEFUNCTION
|
||||||
|
@@ -76,7 +76,7 @@ RtStrnCpy (
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
-#pragma RUNTIME_CODE(RtStrCpy)
|
||||||
|
+#pragma RUNTIME_CODE(RtStpCpy)
|
||||||
|
#endif
|
||||||
|
CHAR16 *
|
||||||
|
RUNTIMEFUNCTION
|
||||||
|
@@ -122,7 +122,7 @@ RtStrCat (
|
||||||
|
IN CONST CHAR16 *Src
|
||||||
|
)
|
||||||
|
{
|
||||||
|
- RtStrCpy(Dest+StrLen(Dest), Src);
|
||||||
|
+ RtStrCpy(Dest+RtStrLen(Dest), Src);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
@@ -138,7 +138,7 @@ RtStrnCat (
|
||||||
|
{
|
||||||
|
UINTN DestSize, Size;
|
||||||
|
|
||||||
|
- DestSize = StrLen(Dest);
|
||||||
|
+ DestSize = RtStrLen(Dest);
|
||||||
|
Size = RtStrnLen(Src, Len);
|
||||||
|
RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
|
||||||
|
Dest[DestSize + Size] = '\0';
|
||||||
|
@@ -169,11 +169,11 @@ RtStrnLen (
|
||||||
|
IN CONST CHAR16 *s1,
|
||||||
|
IN UINTN Len
|
||||||
|
)
|
||||||
|
-// copy strings
|
||||||
|
+// string length
|
||||||
|
{
|
||||||
|
UINTN i;
|
||||||
|
for (i = 0; *s1 && i < Len; i++)
|
||||||
|
- s1++;
|
||||||
|
+ s1++;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From 15bcddc996694c904b3848c83031da5cd3a4719e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Mon, 6 Nov 2017 09:06:31 -0500
|
|
||||||
Subject: [PATCH 03/25] Stripped diff for makefile
|
|
||||||
|
|
||||||
This patch allows one to run make outside the source tree
|
|
||||||
with make -f <makefile>.
|
|
||||||
|
|
||||||
Signed-off-by: wolfra <wolfra@users.sf.net>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 646de6f7044..37592bd6930 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -36,7 +36,8 @@
|
|
||||||
|
|
||||||
VERSION = 3.0.6
|
|
||||||
|
|
||||||
-SRCDIR = $(shell pwd)
|
|
||||||
+MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
||||||
+SRCDIR = $(dir $(MKFILE_PATH))
|
|
||||||
|
|
||||||
VPATH = $(SRCDIR)
|
|
||||||
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
|||||||
From 39ce220cb6fde14bedf2ef61695f3d20726e41ef Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Mon, 6 Nov 2017 09:26:05 -0500
|
|
||||||
Subject: [PATCH 04/25] Make sure stdint.h is always used with MSVC on
|
|
||||||
ARM/ARM64, since all the versions of Visual Studio that support ARM or ARM64
|
|
||||||
have that header. Without this, uint64_t would be defined to unsigned long,
|
|
||||||
which is 32-bits in the Microsoft world.
|
|
||||||
|
|
||||||
Also fix aarch64/initplat.c so that memset/memcpy only apply
|
|
||||||
to gcc. Otherwise MSVC throws an error for __SIZE_TYPE__.
|
|
||||||
|
|
||||||
Updating this patch to v2, since it turns out MSVC will also emit
|
|
||||||
memset and memcpy intrinsics that we can use an implementation for.
|
|
||||||
This is true for both ARM and ARM64.
|
|
||||||
To make this work, I'm defining __SIZE_TYPE__ to UINTN if not
|
|
||||||
already defined.
|
|
||||||
|
|
||||||
Signed-off-by: Pete Batard <pete@akeo.ie>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/aarch64/initplat.c | 4 ++++
|
|
||||||
lib/arm/initplat.c | 6 +++++-
|
|
||||||
inc/aarch64/efibind.h | 2 +-
|
|
||||||
inc/arm/efibind.h | 2 +-
|
|
||||||
4 files changed, 11 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/aarch64/initplat.c b/lib/aarch64/initplat.c
|
|
||||||
index 4b118656d7c..25207f42c8f 100644
|
|
||||||
--- a/lib/aarch64/initplat.c
|
|
||||||
+++ b/lib/aarch64/initplat.c
|
|
||||||
@@ -25,6 +25,10 @@ InitializeLibPlatform (
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef __SIZE_TYPE__
|
|
||||||
+#define __SIZE_TYPE__ UINTN
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Calls to these functions may be emitted implicitly by GCC even when
|
|
||||||
* -ffreestanding is in effect.
|
|
||||||
diff --git a/lib/arm/initplat.c b/lib/arm/initplat.c
|
|
||||||
index 09f06a9c871..c77d26d9045 100644
|
|
||||||
--- a/lib/arm/initplat.c
|
|
||||||
+++ b/lib/arm/initplat.c
|
|
||||||
@@ -25,7 +25,10 @@ InitializeLibPlatform (
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef __GNUC__
|
|
||||||
+#ifndef __SIZE_TYPE__
|
|
||||||
+#define __SIZE_TYPE__ UINTN
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Calls to these functions may be emitted implicitly by GCC even when
|
|
||||||
* -ffreestanding is in effect.
|
|
||||||
@@ -51,6 +54,7 @@ void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef __GNUC__
|
|
||||||
void __div0(void)
|
|
||||||
{
|
|
||||||
// TODO handle divide by zero fault
|
|
||||||
diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h
|
|
||||||
index ef7148d5312..182a2109062 100644
|
|
||||||
--- a/inc/aarch64/efibind.h
|
|
||||||
+++ b/inc/aarch64/efibind.h
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
* either version 2 of the License, or (at your option) any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
|
||||||
+#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ))
|
|
||||||
|
|
||||||
// ANSI C 1999/2000 stdint.h integer width declarations
|
|
||||||
|
|
||||||
diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h
|
|
||||||
index 06f6ea1aeb8..40a5a9cd428 100644
|
|
||||||
--- a/inc/arm/efibind.h
|
|
||||||
+++ b/inc/arm/efibind.h
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
* either version 2 of the License, or (at your option) any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
|
||||||
+#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ))
|
|
||||||
|
|
||||||
// ANSI C 1999/2000 stdint.h integer width declarations
|
|
||||||
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
30
0004-efilink-fix-build-with-gcc-4.8.patch
Normal file
30
0004-efilink-fix-build-with-gcc-4.8.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
Date: Fri, 18 Jan 2019 22:05:37 +0100
|
||||||
|
Subject: [PATCH] efilink: fix build with gcc 4.8
|
||||||
|
|
||||||
|
intptr_t is undefined without an include on stdint.h
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- http://autobuild.buildroot.org/results/a0ca37b5ed27af445344e3ac49dc87bb17512c50
|
||||||
|
|
||||||
|
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
---
|
||||||
|
inc/efilink.h | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/inc/efilink.h b/inc/efilink.h
|
||||||
|
index cc5aa2dc57b..b69a6fd5cf5 100644
|
||||||
|
--- a/inc/efilink.h
|
||||||
|
+++ b/inc/efilink.h
|
||||||
|
@@ -1,6 +1,10 @@
|
||||||
|
#ifndef _EFI_LINK_H
|
||||||
|
#define _EFI_LINK_H
|
||||||
|
|
||||||
|
+#if defined(__GNUC__)
|
||||||
|
+#include <stdint.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 1998 Intel Corporation
|
@ -1,44 +0,0 @@
|
|||||||
From 787b53a66cbbec6b10d47264b9eea9b24bc4e34c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Mon, 6 Nov 2017 09:34:14 -0500
|
|
||||||
Subject: [PATCH 05/25] Add EFI_DRIVER_ENTRY_POINT support for MSVC/ARM64
|
|
||||||
|
|
||||||
Similar to what we do for other MSVC architectures.
|
|
||||||
|
|
||||||
Signed-off-by: Pete Batard <pete@akeo.ie>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
inc/aarch64/efibind.h | 9 +++++++--
|
|
||||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h
|
|
||||||
index 182a2109062..bdaa5238e84 100644
|
|
||||||
--- a/inc/aarch64/efibind.h
|
|
||||||
+++ b/inc/aarch64/efibind.h
|
|
||||||
@@ -115,9 +115,13 @@ typedef uint64_t UINTN;
|
|
||||||
|
|
||||||
//
|
|
||||||
// When build similiar to FW, then link everything together as
|
|
||||||
-// one big module.
|
|
||||||
+// one big module. For the MSVC toolchain, we simply tell the
|
|
||||||
+// linker what our driver init function is using /ENTRY.
|
|
||||||
//
|
|
||||||
-
|
|
||||||
+#if defined(_MSC_EXTENSIONS)
|
|
||||||
+#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
|
|
||||||
+ __pragma(comment(linker, "/ENTRY:" # InitFunction))
|
|
||||||
+#else
|
|
||||||
#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
|
|
||||||
UINTN \
|
|
||||||
InitializeDriver ( \
|
|
||||||
@@ -134,6 +138,7 @@ typedef uint64_t UINTN;
|
|
||||||
EFI_SYSTEM_TABLE *systab \
|
|
||||||
) __attribute__((weak, \
|
|
||||||
alias ("InitializeDriver")));
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
|
|
||||||
(_if)->LoadInternal(type, name, entry)
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
108
0005-Fix-for-problem-with-undeclared-intptr_t-type.patch
Normal file
108
0005-Fix-for-problem-with-undeclared-intptr_t-type.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Esben Haabendal <esben@esben1.localdomain>
|
||||||
|
Date: Fri, 15 Mar 2019 11:57:51 +0100
|
||||||
|
Subject: [PATCH] Fix for problem with undeclared intptr_t type
|
||||||
|
|
||||||
|
When building gnu-efi with old compilers with pre C90 compilers:
|
||||||
|
|
||||||
|
In file included from gnu-efi-3.0.9/lib/../inc/efilib.h:25:0,
|
||||||
|
from gnu-efi-3.0.9/lib/lib.h:24,
|
||||||
|
from gnu-efi-3.0.9/lib/dpath.c:25:
|
||||||
|
gnu-efi-3.0.9/lib/dpath.c: In function 'FileDevicePath':
|
||||||
|
gnu-efi-3.0.9/lib/../inc/efilink.h:145:47: error: 'intptr_t' undeclared (first use in this function)
|
||||||
|
#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(intptr_t)(&(((TYPE *) 0)->Field)))
|
||||||
|
|
||||||
|
Problem introduced with commit a46a62b12b58139c31d4288384808365c4053bf2
|
||||||
|
(Fix some types gcc doesn't like).
|
||||||
|
|
||||||
|
Avoid this by adding intptr_t (and uintptr_t) typedefs for builds that does
|
||||||
|
not include stdint.h.
|
||||||
|
|
||||||
|
Signed-off-by: Esben Haabendal <esben@esben1.localdomain>
|
||||||
|
---
|
||||||
|
inc/aarch64/efibind.h | 2 ++
|
||||||
|
inc/arm/efibind.h | 2 ++
|
||||||
|
inc/ia32/efibind.h | 2 ++
|
||||||
|
inc/ia64/efibind.h | 2 ++
|
||||||
|
inc/mips64el/efibind.h | 2 ++
|
||||||
|
inc/x86_64/efibind.h | 2 ++
|
||||||
|
6 files changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h
|
||||||
|
index bdaa5238e84..3c8cf963c31 100644
|
||||||
|
--- a/inc/aarch64/efibind.h
|
||||||
|
+++ b/inc/aarch64/efibind.h
|
||||||
|
@@ -27,6 +27,8 @@ typedef unsigned short uint16_t;
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef signed char int8_t; // unqualified 'char' is unsigned on ARM
|
||||||
|
+typedef uint64_t uintptr_t;
|
||||||
|
+typedef int64_t intptr_t;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h
|
||||||
|
index 40a5a9cd428..7a22b9c8458 100644
|
||||||
|
--- a/inc/arm/efibind.h
|
||||||
|
+++ b/inc/arm/efibind.h
|
||||||
|
@@ -27,6 +27,8 @@ typedef unsigned short uint16_t;
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef signed char int8_t; // unqualified 'char' is unsigned on ARM
|
||||||
|
+typedef uint32_t uintptr_t;
|
||||||
|
+typedef int32_t intptr_t;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h
|
||||||
|
index 1b11f10a6d3..dd0138573d9 100644
|
||||||
|
--- a/inc/ia32/efibind.h
|
||||||
|
+++ b/inc/ia32/efibind.h
|
||||||
|
@@ -75,6 +75,8 @@ Revision History
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef char int8_t;
|
||||||
|
#endif
|
||||||
|
+ typedef uint32_t uintptr_t;
|
||||||
|
+ typedef int32_t intptr_t;
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h
|
||||||
|
index b415461b10c..b9b2e624657 100644
|
||||||
|
--- a/inc/ia64/efibind.h
|
||||||
|
+++ b/inc/ia64/efibind.h
|
||||||
|
@@ -62,6 +62,8 @@ Revision History
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef char int8_t;
|
||||||
|
#endif
|
||||||
|
+ typedef uint64_t uintptr_t;
|
||||||
|
+ typedef int64_t intptr_t;
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h
|
||||||
|
index 4adbca31d63..32241e5ad46 100644
|
||||||
|
--- a/inc/mips64el/efibind.h
|
||||||
|
+++ b/inc/mips64el/efibind.h
|
||||||
|
@@ -29,6 +29,8 @@ typedef unsigned short uint16_t;
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef signed char int8_t; // unqualified 'char' is unsigned on ARM
|
||||||
|
+typedef uint64_t uintptr_t;
|
||||||
|
+typedef int64_t intptr_t;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h
|
||||||
|
index 4309f9f0e17..ae40595be0b 100644
|
||||||
|
--- a/inc/x86_64/efibind.h
|
||||||
|
+++ b/inc/x86_64/efibind.h
|
||||||
|
@@ -84,6 +84,8 @@ Revision History
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef char int8_t;
|
||||||
|
#endif
|
||||||
|
+ typedef uint64_t uintptr_t;
|
||||||
|
+ typedef int64_t intptr_t;
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
@ -1,215 +0,0 @@
|
|||||||
From b1d426ce67cbeaa1a8ec7d9b8d0d8071ae4563b4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Mon, 6 Nov 2017 09:38:38 -0500
|
|
||||||
Subject: [PATCH 06/25] Move memcpy/memset definition to global init.c
|
|
||||||
|
|
||||||
Following up on previous patch, I think we should move
|
|
||||||
memcpy/memset definitions to the global init.c, since MSVC does
|
|
||||||
also inserts calls to memset/memcpy for the x86_32 platform,
|
|
||||||
even when disabling standard libraries and intrinsics.
|
|
||||||
|
|
||||||
All in all, it looks like, for all platforms, we should assume
|
|
||||||
that a compiler may still insert these calls regardless.
|
|
||||||
|
|
||||||
Signed-off-by: Pete Batard <pete@akeo.ie>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/aarch64/initplat.c | 29 -----------------------------
|
|
||||||
lib/arm/initplat.c | 33 ++-------------------------------
|
|
||||||
lib/init.c | 47 ++++++++++++++++++++++++++++++++++++++---------
|
|
||||||
lib/mips64el/initplat.c | 25 -------------------------
|
|
||||||
4 files changed, 40 insertions(+), 94 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/aarch64/initplat.c b/lib/aarch64/initplat.c
|
|
||||||
index 25207f42c8f..6c5e1fa5217 100644
|
|
||||||
--- a/lib/aarch64/initplat.c
|
|
||||||
+++ b/lib/aarch64/initplat.c
|
|
||||||
@@ -24,32 +24,3 @@ InitializeLibPlatform (
|
|
||||||
)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
-
|
|
||||||
-#ifndef __SIZE_TYPE__
|
|
||||||
-#define __SIZE_TYPE__ UINTN
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-/*
|
|
||||||
- * Calls to these functions may be emitted implicitly by GCC even when
|
|
||||||
- * -ffreestanding is in effect.
|
|
||||||
- */
|
|
||||||
-void *memset(void *s, int c, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- unsigned char *p = s;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = c;
|
|
||||||
-
|
|
||||||
- return s;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- const unsigned char *q = src;
|
|
||||||
- unsigned char *p = dest;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = *q++;
|
|
||||||
-
|
|
||||||
- return dest;
|
|
||||||
-}
|
|
||||||
diff --git a/lib/arm/initplat.c b/lib/arm/initplat.c
|
|
||||||
index c77d26d9045..135a649210a 100644
|
|
||||||
--- a/lib/arm/initplat.c
|
|
||||||
+++ b/lib/arm/initplat.c
|
|
||||||
@@ -25,39 +25,10 @@ InitializeLibPlatform (
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifndef __SIZE_TYPE__
|
|
||||||
-#define __SIZE_TYPE__ UINTN
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-/*
|
|
||||||
- * Calls to these functions may be emitted implicitly by GCC even when
|
|
||||||
- * -ffreestanding is in effect.
|
|
||||||
- */
|
|
||||||
-void *memset(void *s, int c, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- unsigned char *p = s;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = c;
|
|
||||||
-
|
|
||||||
- return s;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- unsigned char *p = dest;
|
|
||||||
- unsigned char const *q = src;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = *q++;
|
|
||||||
-
|
|
||||||
- return dest;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
#ifdef __GNUC__
|
|
||||||
void __div0(void)
|
|
||||||
{
|
|
||||||
- // TODO handle divide by zero fault
|
|
||||||
- while (1);
|
|
||||||
+ // TODO handle divide by zero fault
|
|
||||||
+ while (1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/lib/init.c b/lib/init.c
|
|
||||||
index 4225d314b7a..4f238c0a2cc 100644
|
|
||||||
--- a/lib/init.c
|
|
||||||
+++ b/lib/init.c
|
|
||||||
@@ -49,7 +49,7 @@ Returns:
|
|
||||||
if (!LibInitialized) {
|
|
||||||
LibInitialized = TRUE;
|
|
||||||
LibFwInstance = FALSE;
|
|
||||||
- LibImageHandle = ImageHandle;
|
|
||||||
+ LibImageHandle = ImageHandle;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
@@ -71,17 +71,16 @@ Returns:
|
|
||||||
|
|
||||||
if (ImageHandle) {
|
|
||||||
Status = uefi_call_wrapper(
|
|
||||||
- BS->HandleProtocol,
|
|
||||||
- 3,
|
|
||||||
- ImageHandle,
|
|
||||||
- &LoadedImageProtocol,
|
|
||||||
- (VOID*)&LoadedImage
|
|
||||||
- );
|
|
||||||
+ BS->HandleProtocol,
|
|
||||||
+ 3,
|
|
||||||
+ ImageHandle,
|
|
||||||
+ &LoadedImageProtocol,
|
|
||||||
+ (VOID*)&LoadedImage
|
|
||||||
+ );
|
|
||||||
|
|
||||||
if (!EFI_ERROR(Status)) {
|
|
||||||
PoolAllocationType = LoadedImage->ImageDataType;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
EFIDebugVariable ();
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -181,5 +180,35 @@ EFIDebugVariable (
|
|
||||||
Status = uefi_call_wrapper(RT->GetVariable, 5, L"EFIDebug", &EfiGlobalVariable, &Attributes, &DataSize, &NewEFIDebug);
|
|
||||||
if (!EFI_ERROR(Status)) {
|
|
||||||
EFIDebug = NewEFIDebug;
|
|
||||||
- }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Calls to memset/memcpy may be emitted implicitly by GCC or MSVC
|
|
||||||
+ * even when -ffreestanding or /NODEFAULTLIB are in effect.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef __SIZE_TYPE__
|
|
||||||
+#define __SIZE_TYPE__ UINTN
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+void *memset(void *s, int c, __SIZE_TYPE__ n)
|
|
||||||
+{
|
|
||||||
+ unsigned char *p = s;
|
|
||||||
+
|
|
||||||
+ while (n--)
|
|
||||||
+ *p++ = c;
|
|
||||||
+
|
|
||||||
+ return s;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
|
|
||||||
+{
|
|
||||||
+ const unsigned char *q = src;
|
|
||||||
+ unsigned char *p = dest;
|
|
||||||
+
|
|
||||||
+ while (n--)
|
|
||||||
+ *p++ = *q++;
|
|
||||||
+
|
|
||||||
+ return dest;
|
|
||||||
}
|
|
||||||
diff --git a/lib/mips64el/initplat.c b/lib/mips64el/initplat.c
|
|
||||||
index 4b118656d7c..6c5e1fa5217 100644
|
|
||||||
--- a/lib/mips64el/initplat.c
|
|
||||||
+++ b/lib/mips64el/initplat.c
|
|
||||||
@@ -24,28 +24,3 @@ InitializeLibPlatform (
|
|
||||||
)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
-
|
|
||||||
-/*
|
|
||||||
- * Calls to these functions may be emitted implicitly by GCC even when
|
|
||||||
- * -ffreestanding is in effect.
|
|
||||||
- */
|
|
||||||
-void *memset(void *s, int c, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- unsigned char *p = s;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = c;
|
|
||||||
-
|
|
||||||
- return s;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
|
|
||||||
-{
|
|
||||||
- const unsigned char *q = src;
|
|
||||||
- unsigned char *p = dest;
|
|
||||||
-
|
|
||||||
- while (n--)
|
|
||||||
- *p++ = *q++;
|
|
||||||
-
|
|
||||||
- return dest;
|
|
||||||
-}
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
131
0006-Redefine-jmp_buf-to-comply-with-C-calling-convention.patch
Normal file
131
0006-Redefine-jmp_buf-to-comply-with-C-calling-convention.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Fri, 15 Mar 2019 09:32:06 -0400
|
||||||
|
Subject: [PATCH] Redefine jmp_buf to comply with C calling convention.
|
||||||
|
|
||||||
|
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
---
|
||||||
|
apps/setjmp.c | 6 +++---
|
||||||
|
inc/aarch64/efisetjmp_arch.h | 2 +-
|
||||||
|
inc/arm/efisetjmp_arch.h | 2 +-
|
||||||
|
inc/efisetjmp.h | 4 ++--
|
||||||
|
inc/ia32/efisetjmp_arch.h | 2 +-
|
||||||
|
inc/ia64/efisetjmp_arch.h | 2 +-
|
||||||
|
inc/mips64el/efisetjmp_arch.h | 2 +-
|
||||||
|
inc/x86_64/efisetjmp_arch.h | 2 +-
|
||||||
|
8 files changed, 11 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/apps/setjmp.c b/apps/setjmp.c
|
||||||
|
index bd70c11b0ba..b20070e7c95 100644
|
||||||
|
--- a/apps/setjmp.c
|
||||||
|
+++ b/apps/setjmp.c
|
||||||
|
@@ -12,12 +12,12 @@ efi_main(
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
InitializeLib(image_handle, systab);
|
||||||
|
- rc = setjmp(&env);
|
||||||
|
+ rc = setjmp(env);
|
||||||
|
Print(L"setjmp() = %d\n", rc);
|
||||||
|
|
||||||
|
if (rc == 3) {
|
||||||
|
Print(L"3 worked\n");
|
||||||
|
- longjmp(&env, 0);
|
||||||
|
+ longjmp(env, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,6 @@ efi_main(
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- longjmp(&env, 3);
|
||||||
|
+ longjmp(env, 3);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/inc/aarch64/efisetjmp_arch.h b/inc/aarch64/efisetjmp_arch.h
|
||||||
|
index abd7a0e9ad9..8dbce07821f 100644
|
||||||
|
--- a/inc/aarch64/efisetjmp_arch.h
|
||||||
|
+++ b/inc/aarch64/efisetjmp_arch.h
|
||||||
|
@@ -28,6 +28,6 @@ typedef struct {
|
||||||
|
UINT64 D13;
|
||||||
|
UINT64 D14;
|
||||||
|
UINT64 D15;
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_AARCH64_SETJMP_H */
|
||||||
|
diff --git a/inc/arm/efisetjmp_arch.h b/inc/arm/efisetjmp_arch.h
|
||||||
|
index 3a09ea5fa52..17f5dc0facb 100644
|
||||||
|
--- a/inc/arm/efisetjmp_arch.h
|
||||||
|
+++ b/inc/arm/efisetjmp_arch.h
|
||||||
|
@@ -16,6 +16,6 @@ typedef struct {
|
||||||
|
UINT32 R12;
|
||||||
|
UINT32 R13;
|
||||||
|
UINT32 R14;
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_ARM_SETJMP_H */
|
||||||
|
diff --git a/inc/efisetjmp.h b/inc/efisetjmp.h
|
||||||
|
index 58a93a7e64f..de69194b4f9 100644
|
||||||
|
--- a/inc/efisetjmp.h
|
||||||
|
+++ b/inc/efisetjmp.h
|
||||||
|
@@ -4,7 +4,7 @@
|
||||||
|
#include "eficompiler.h"
|
||||||
|
#include "efisetjmp_arch.h"
|
||||||
|
|
||||||
|
-extern UINTN setjmp(jmp_buf *env) __attribute__((returns_twice));
|
||||||
|
-extern VOID longjmp(jmp_buf *env, UINTN value) __attribute__((noreturn));
|
||||||
|
+extern UINTN setjmp(jmp_buf env) __attribute__((returns_twice));
|
||||||
|
+extern VOID longjmp(jmp_buf env, UINTN value) __attribute__((noreturn));
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_SETJMP_H */
|
||||||
|
diff --git a/inc/ia32/efisetjmp_arch.h b/inc/ia32/efisetjmp_arch.h
|
||||||
|
index 17184e75a2d..a5c1a81c969 100644
|
||||||
|
--- a/inc/ia32/efisetjmp_arch.h
|
||||||
|
+++ b/inc/ia32/efisetjmp_arch.h
|
||||||
|
@@ -10,6 +10,6 @@ typedef struct {
|
||||||
|
UINT32 Ebp;
|
||||||
|
UINT32 Esp;
|
||||||
|
UINT32 Eip;
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_IA32_SETJMP_H */
|
||||||
|
diff --git a/inc/ia64/efisetjmp_arch.h b/inc/ia64/efisetjmp_arch.h
|
||||||
|
index 3afa04426f5..ceda4481d98 100644
|
||||||
|
--- a/inc/ia64/efisetjmp_arch.h
|
||||||
|
+++ b/inc/ia64/efisetjmp_arch.h
|
||||||
|
@@ -42,6 +42,6 @@ typedef struct {
|
||||||
|
UINT64 Predicates;
|
||||||
|
UINT64 LoopCount;
|
||||||
|
UINT64 FPSR;
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_IA64_SETJMP_H */
|
||||||
|
diff --git a/inc/mips64el/efisetjmp_arch.h b/inc/mips64el/efisetjmp_arch.h
|
||||||
|
index fd17f1fc6d4..2b8f756eb75 100644
|
||||||
|
--- a/inc/mips64el/efisetjmp_arch.h
|
||||||
|
+++ b/inc/mips64el/efisetjmp_arch.h
|
||||||
|
@@ -29,6 +29,6 @@ typedef struct {
|
||||||
|
UINT64 F30;
|
||||||
|
UINT64 F31;
|
||||||
|
#endif
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_MIPS64EL_SETJMP_H */
|
||||||
|
diff --git a/inc/x86_64/efisetjmp_arch.h b/inc/x86_64/efisetjmp_arch.h
|
||||||
|
index a489993c174..b1ad1fe3087 100644
|
||||||
|
--- a/inc/x86_64/efisetjmp_arch.h
|
||||||
|
+++ b/inc/x86_64/efisetjmp_arch.h
|
||||||
|
@@ -17,6 +17,6 @@ typedef struct {
|
||||||
|
UINT64 Rip;
|
||||||
|
UINT64 MxCsr;
|
||||||
|
UINT8 XmmBuffer[160]; // XMM6 - XMM15
|
||||||
|
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
|
||||||
|
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* GNU_EFI_X86_64_SETJMP_H */
|
48
0007-Make.rules-incomplete-wrong-make-r-failure.patch
Normal file
48
0007-Make.rules-incomplete-wrong-make-r-failure.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Fri, 15 Mar 2019 09:48:10 -0400
|
||||||
|
Subject: [PATCH] Make.rules incomplete/wrong; make -r failure
|
||||||
|
|
||||||
|
Make.rules is not complete; in particular it lacks a %.o: %.S rule.
|
||||||
|
This happens to work due to the builtin make rule to that effect. but
|
||||||
|
building with make -r, or building as a sub-make of an environment that
|
||||||
|
uses make -r (or MAKEFLAGS += -r) causes it to break.
|
||||||
|
|
||||||
|
In general, make -r is strongly preferred, and Make.rules seems to have
|
||||||
|
been created explicitly to support this.
|
||||||
|
|
||||||
|
To further complicate things, the rule %.S: %.c causes a completely
|
||||||
|
incomprehensible error message. This rule is wrong, it should be %.s:
|
||||||
|
%.c not %.S: %.c.
|
||||||
|
|
||||||
|
Finally, the rule %.E: %.c is normally %.i: %.c; .i is the normal
|
||||||
|
extension for preprocessed C source. The equivalent rule for assembly is
|
||||||
|
%.s: %.S.
|
||||||
|
|
||||||
|
Signed-off-by: H. Peter Anvin <hpa@users.sf.net>
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
---
|
||||||
|
Make.rules | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.rules b/Make.rules
|
||||||
|
index 5b1c2862e1b..8cb93b0a039 100644
|
||||||
|
--- a/Make.rules
|
||||||
|
+++ b/Make.rules
|
||||||
|
@@ -51,8 +51,14 @@
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
-%.S: %.c
|
||||||
|
+%.s: %.c
|
||||||
|
$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -S $< -o $@
|
||||||
|
|
||||||
|
-%.E: %.c
|
||||||
|
+%.i: %.c
|
||||||
|
+ $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
|
||||||
|
+
|
||||||
|
+%.o: %.S
|
||||||
|
+ $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||||
|
+
|
||||||
|
+%.s: %.S
|
||||||
|
$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
|
@ -1,38 +0,0 @@
|
|||||||
From d039cd620b8a270d9b231691c9b31d6824f18c08 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Wed, 10 Jan 2018 10:28:36 -0500
|
|
||||||
Subject: [PATCH 08/25] Currently we have DivU64x32 on ia32, but it tries to
|
|
||||||
call __umoddi3 and __udivdi3 from libgcc, which we don't have. This fixes it
|
|
||||||
to use our implementation in that case.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
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 81f51bf45e4..fce7a8d4875 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.15.0
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Tue, 2 Apr 2019 09:47:24 -0400
|
||||||
|
Subject: [PATCH] gnuefi/Makefile uses a strange rule to create libgnuefi.a,
|
||||||
|
which only works because of a "make" builtin rule. This breaks make -r, and
|
||||||
|
it is an inefficient way to build, at least for multiple files.
|
||||||
|
|
||||||
|
I have made a git tree which includes a patch for this problem,
|
||||||
|
and also forces -r by adding it to MAKEFLAGS:
|
||||||
|
|
||||||
|
git://git.zytor.com/users/hpa/gnu-efi.git make-r-fixes
|
||||||
|
|
||||||
|
Signed-off-by: H. Peter Anvin <hpa@users.sourceforge.net>
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
---
|
||||||
|
gnuefi/Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index 2a61699ac25..10d4e7addd0 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -54,7 +54,9 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
-libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
|
||||||
|
+libgnuefi.a: $(OBJS)
|
||||||
|
+ $(AR) $(ARFLAGS) $@ $^
|
||||||
|
+
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGETS) *~ *.o $(OBJS)
|
@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: leo <leo.sartre@geebol.fr>
|
||||||
|
Date: Tue, 14 May 2019 07:44:28 +0200
|
||||||
|
Subject: [PATCH] efiapi.h: fix EventGroup parameter of EFI_CREATE_EVENT_EX
|
||||||
|
prototype
|
||||||
|
|
||||||
|
From UEFI specifications, this parameter is a pointer, see
|
||||||
|
https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
|
||||||
|
page 148 for reference.
|
||||||
|
|
||||||
|
Signed-off-by: leo <leo.sartre@geebol.fr>
|
||||||
|
---
|
||||||
|
inc/efiapi.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/inc/efiapi.h b/inc/efiapi.h
|
||||||
|
index e7d2abd79de..bdf5de26a3f 100644
|
||||||
|
--- a/inc/efiapi.h
|
||||||
|
+++ b/inc/efiapi.h
|
||||||
|
@@ -576,7 +576,7 @@ EFI_STATUS
|
||||||
|
IN EFI_TPL NotifyTpl,
|
||||||
|
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
|
||||||
|
IN const VOID *NotifyContext OPTIONAL,
|
||||||
|
- IN const EFI_GUID EventGroup OPTIONAL,
|
||||||
|
+ IN const EFI_GUID *EventGroup OPTIONAL,
|
||||||
|
OUT EFI_EVENT *Event
|
||||||
|
);
|
||||||
|
|
@ -1,148 +0,0 @@
|
|||||||
From 2cc0b085fb82e80d43cc08c8376dff9f9532a72d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Sergei Trofimovich <slyfox@gentoo.org>
|
|
||||||
Date: Sat, 27 Jan 2018 20:29:05 +0000
|
|
||||||
Subject: [PATCH 09/25] gnuefi: preserve .gnu.hash sections (unbreaks elilo on
|
|
||||||
IA-64)
|
|
||||||
|
|
||||||
Gentoo has slightly modified linker defaults: --hash-style=gnu
|
|
||||||
This means all ELF files in system have '.gnu.hash' section
|
|
||||||
but no '.hash' section.
|
|
||||||
|
|
||||||
gnuefi's ldscript did not account for it and as a result
|
|
||||||
one symbol 'ImageBase' did not resolve locally for elilo.so
|
|
||||||
and caused 'elilo' to fail to load by ia64 EFI:
|
|
||||||
Loading.: Gentoo (try new elilo)
|
|
||||||
ImageAddress: pointer is outside of image
|
|
||||||
ImageAddress: pointer is outside of image
|
|
||||||
|
|
||||||
Those two relocations come from crt0-efi-ia64.S PE32 entry point
|
|
||||||
fdescr:
|
|
||||||
|
|
||||||
```
|
|
||||||
#define IMAGE_REL_BASED_DIR64<->10
|
|
||||||
.section .reloc, "a"
|
|
||||||
data4 _start_plabel // Page RVA
|
|
||||||
data4 12 // Block Size (2*4+2*2)
|
|
||||||
data2 (IMAGE_REL_BASED_DIR64<<12) + 0 // reloc for plabel's entry point
|
|
||||||
data2 (IMAGE_REL_BASED_DIR64<<12) + 8 // reloc for plabel's global pointer
|
|
||||||
```
|
|
||||||
|
|
||||||
These refer ImageBase.
|
|
||||||
|
|
||||||
The change adds '.gnu.hash' collection (follows existing '.hash'
|
|
||||||
collection).
|
|
||||||
|
|
||||||
Tested on IA-64 by successfully booting elilo-3.16.
|
|
||||||
|
|
||||||
Bug: https://bugs.gentoo.org/575300
|
|
||||||
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
|
|
||||||
---
|
|
||||||
README.gnuefi | 8 +++++++-
|
|
||||||
gnuefi/elf_ia32_efi.lds | 4 +++-
|
|
||||||
gnuefi/elf_ia32_fbsd_efi.lds | 4 +++-
|
|
||||||
gnuefi/elf_ia64_efi.lds | 4 +++-
|
|
||||||
gnuefi/elf_x86_64_efi.lds | 4 +++-
|
|
||||||
gnuefi/elf_x86_64_fbsd_efi.lds | 4 +++-
|
|
||||||
6 files changed, 22 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README.gnuefi b/README.gnuefi
|
|
||||||
index a7feec0ba28..512698c28b4 100644
|
|
||||||
--- a/README.gnuefi
|
|
||||||
+++ b/README.gnuefi
|
|
||||||
@@ -231,11 +231,17 @@ and page sized.These eight sections are used to group together the much
|
|
||||||
greater number of sections that are typically present in ELF object files.
|
|
||||||
Specifically:
|
|
||||||
|
|
||||||
- .hash
|
|
||||||
+ .hash (and/or .gnu.hash)
|
|
||||||
Collects the ELF .hash info (this section _must_ be the first
|
|
||||||
section in order to build a shared object file; the section is
|
|
||||||
not actually loaded or used at runtime).
|
|
||||||
|
|
||||||
+ GNU binutils provides a mechanism to generate different hash info
|
|
||||||
+ via --hash-style=<sysv|gnu|both> option. In this case output
|
|
||||||
+ shared object will contain .hash section, .gnu.hash section or
|
|
||||||
+ both. In order to generate correct output linker script preserves
|
|
||||||
+ both types of hash sections.
|
|
||||||
+
|
|
||||||
.text
|
|
||||||
Collects all sections containing executable code.
|
|
||||||
|
|
||||||
diff --git a/gnuefi/elf_ia32_efi.lds b/gnuefi/elf_ia32_efi.lds
|
|
||||||
index 6cc4ce1b8c7..f27fe5fc6e6 100644
|
|
||||||
--- a/gnuefi/elf_ia32_efi.lds
|
|
||||||
+++ b/gnuefi/elf_ia32_efi.lds
|
|
||||||
@@ -5,7 +5,9 @@ SECTIONS
|
|
||||||
{
|
|
||||||
. = 0;
|
|
||||||
ImageBase = .;
|
|
||||||
- .hash : { *(.hash) } /* this MUST come first! */
|
|
||||||
+ /* .hash and/or .gnu.hash MUST come first! */
|
|
||||||
+ .hash : { *(.hash) }
|
|
||||||
+ .gnu.hash : { *(.gnu.hash) }
|
|
||||||
. = ALIGN(4096);
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
diff --git a/gnuefi/elf_ia32_fbsd_efi.lds b/gnuefi/elf_ia32_fbsd_efi.lds
|
|
||||||
index 77d6fade1a5..cd309e24f7f 100644
|
|
||||||
--- a/gnuefi/elf_ia32_fbsd_efi.lds
|
|
||||||
+++ b/gnuefi/elf_ia32_fbsd_efi.lds
|
|
||||||
@@ -5,7 +5,9 @@ SECTIONS
|
|
||||||
{
|
|
||||||
. = 0;
|
|
||||||
ImageBase = .;
|
|
||||||
- .hash : { *(.hash) } /* this MUST come first! */
|
|
||||||
+ /* .hash and/or .gnu.hash MUST come first! */
|
|
||||||
+ .hash : { *(.hash) }
|
|
||||||
+ .gnu.hash : { *(.gnu.hash) }
|
|
||||||
. = ALIGN(4096);
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
diff --git a/gnuefi/elf_ia64_efi.lds b/gnuefi/elf_ia64_efi.lds
|
|
||||||
index baca9623b57..190792a0c94 100644
|
|
||||||
--- a/gnuefi/elf_ia64_efi.lds
|
|
||||||
+++ b/gnuefi/elf_ia64_efi.lds
|
|
||||||
@@ -5,7 +5,9 @@ SECTIONS
|
|
||||||
{
|
|
||||||
. = 0;
|
|
||||||
ImageBase = .;
|
|
||||||
- .hash : { *(.hash) } /* this MUST come first! */
|
|
||||||
+ /* .hash and/or .gnu.hash MUST come first! */
|
|
||||||
+ .hash : { *(.hash) }
|
|
||||||
+ .gnu.hash : { *(.gnu.hash) }
|
|
||||||
. = ALIGN(4096);
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
diff --git a/gnuefi/elf_x86_64_efi.lds b/gnuefi/elf_x86_64_efi.lds
|
|
||||||
index 942d1f3eff7..7be59023510 100644
|
|
||||||
--- a/gnuefi/elf_x86_64_efi.lds
|
|
||||||
+++ b/gnuefi/elf_x86_64_efi.lds
|
|
||||||
@@ -6,7 +6,9 @@ SECTIONS
|
|
||||||
{
|
|
||||||
. = 0;
|
|
||||||
ImageBase = .;
|
|
||||||
- .hash : { *(.hash) } /* this MUST come first! */
|
|
||||||
+ /* .hash and/or .gnu.hash MUST come first! */
|
|
||||||
+ .hash : { *(.hash) }
|
|
||||||
+ .gnu.hash : { *(.gnu.hash) }
|
|
||||||
. = ALIGN(4096);
|
|
||||||
.eh_frame :
|
|
||||||
{
|
|
||||||
diff --git a/gnuefi/elf_x86_64_fbsd_efi.lds b/gnuefi/elf_x86_64_fbsd_efi.lds
|
|
||||||
index 6fd2031c13b..fe1f3342cae 100644
|
|
||||||
--- a/gnuefi/elf_x86_64_fbsd_efi.lds
|
|
||||||
+++ b/gnuefi/elf_x86_64_fbsd_efi.lds
|
|
||||||
@@ -6,7 +6,9 @@ SECTIONS
|
|
||||||
{
|
|
||||||
. = 0;
|
|
||||||
ImageBase = .;
|
|
||||||
- .hash : { *(.hash) } /* this MUST come first! */
|
|
||||||
+ /* .hash and/or .gnu.hash MUST come first! */
|
|
||||||
+ .hash : { *(.hash) }
|
|
||||||
+ .gnu.hash : { *(.gnu.hash) }
|
|
||||||
. = ALIGN(4096);
|
|
||||||
.eh_frame :
|
|
||||||
{
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
37
0010-Do-not-include-efisetjmp.h-on-efi.h.patch
Normal file
37
0010-Do-not-include-efisetjmp.h-on-efi.h.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: leo <leo.sartre@geebol.fr>
|
||||||
|
Date: Wed, 15 May 2019 05:32:21 +0200
|
||||||
|
Subject: [PATCH] Do not include efisetjmp.h on efi.h
|
||||||
|
|
||||||
|
People than really want to use efisetjmp implementation can include
|
||||||
|
the header on their own.
|
||||||
|
|
||||||
|
Signed-off-by: leo <leo.sartre@geebol.fr>
|
||||||
|
---
|
||||||
|
apps/setjmp.c | 1 +
|
||||||
|
inc/efi.h | 1 -
|
||||||
|
2 files changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/apps/setjmp.c b/apps/setjmp.c
|
||||||
|
index b20070e7c95..d9e0f290dd2 100644
|
||||||
|
--- a/apps/setjmp.c
|
||||||
|
+++ b/apps/setjmp.c
|
||||||
|
@@ -1,6 +1,7 @@
|
||||||
|
|
||||||
|
#include <efi.h>
|
||||||
|
#include <efilib.h>
|
||||||
|
+#include <efisetjmp.h>
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
efi_main(
|
||||||
|
diff --git a/inc/efi.h b/inc/efi.h
|
||||||
|
index 9cbc22dc370..2ddd53e0d95 100644
|
||||||
|
--- a/inc/efi.h
|
||||||
|
+++ b/inc/efi.h
|
||||||
|
@@ -57,6 +57,5 @@ Revision History
|
||||||
|
#include "efiudp.h"
|
||||||
|
#include "efitcp.h"
|
||||||
|
#include "efipoint.h"
|
||||||
|
-#include "efisetjmp.h"
|
||||||
|
|
||||||
|
#endif
|
@ -1,161 +0,0 @@
|
|||||||
From 0e6995a96b0f5867c8d85fbd251cfbc295a3fc4d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Sergei Trofimovich <slyfox@gentoo.org>
|
|
||||||
Date: Sun, 28 Jan 2018 16:44:21 +0000
|
|
||||||
Subject: [PATCH 10/25] gnu-efi: fix lib/ia64/setjmp.S IA-64 build failure
|
|
||||||
|
|
||||||
The build failed as:
|
|
||||||
lib/ia64/setjmp.S:171: Error: Unknown opcode `ldf.nt1 f26=[r10],8'
|
|
||||||
lib/ia64/setjmp.S:178: Error: Operand 1 of `ldf.fill.nt1' should be a floating-point register
|
|
||||||
|
|
||||||
The change syncs longjmp definition with
|
|
||||||
edk2/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s
|
|
||||||
pulling in:
|
|
||||||
- branch in the end of function
|
|
||||||
- registers used wrong instruction for float restore
|
|
||||||
|
|
||||||
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
|
|
||||||
---
|
|
||||||
lib/ia64/setjmp.S | 61 +++++++++++++++++++++++++++----------------------------
|
|
||||||
1 file changed, 30 insertions(+), 31 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/ia64/setjmp.S b/lib/ia64/setjmp.S
|
|
||||||
index c806fbc82b6..bbb29d8b8f5 100644
|
|
||||||
--- a/lib/ia64/setjmp.S
|
|
||||||
+++ b/lib/ia64/setjmp.S
|
|
||||||
@@ -16,11 +16,11 @@ BASIS,
|
|
||||||
.globl setjmp
|
|
||||||
.type setjmp, @function
|
|
||||||
setjmp:
|
|
||||||
- alloc loc = ar.pfs, 1, 2, 1, 0
|
|
||||||
+ alloc loc0 = ar.pfs, 1, 2, 1, 0
|
|
||||||
;;
|
|
||||||
mov r14 = ar.unat
|
|
||||||
mov r15 = ar.bsp
|
|
||||||
- add r10 = 0x10 * 20, in0
|
|
||||||
+ add r10 = 0x10*20, in0
|
|
||||||
;;
|
|
||||||
stf.spill.nta [in0] = f2, 0x10
|
|
||||||
st8.spill.nta [r10] = r4, 8
|
|
||||||
@@ -98,29 +98,25 @@ setjmp:
|
|
||||||
|
|
||||||
.globl longjmp
|
|
||||||
.type longjmp, @function
|
|
||||||
- .regstk
|
|
||||||
+ .regstk 2, 0, 0, 0
|
|
||||||
longjmp:
|
|
||||||
- add r10 = 0x10 * 20 + 8*14, in0
|
|
||||||
- movl r2 = ~(((1<<14) - 1) << 16) | 3)
|
|
||||||
+ add r10 = 0x10*20 + 8*14, in0
|
|
||||||
+ movl r2 = ~((((1<<14) - 1) << 16) | 3)
|
|
||||||
;;
|
|
||||||
ld8.nt1 r14 = [r10], -8*2
|
|
||||||
mov r15 = ar.bspstore
|
|
||||||
;;
|
|
||||||
ld8.nt1 r17 = [r10], -8
|
|
||||||
mov r16 = ar.rsc
|
|
||||||
- cmp.leu p6 = r14, r15
|
|
||||||
+ cmp.leu p6 = r14, r15
|
|
||||||
;;
|
|
||||||
ld8.nt1 r18 = [r10], -8
|
|
||||||
ld8.nt1 r25 = [r10], -8
|
|
||||||
- and r2 = r16, r2
|
|
||||||
+ and r2 = r16, r2
|
|
||||||
;;
|
|
||||||
- ldf.fill.nt1 f2 = [in0], 0x10
|
|
||||||
+ ldf.fill.nt1 f2 = [in0], 0x10
|
|
||||||
ld8.nt1 r24 = [r10], -8
|
|
||||||
- mov b5 = r25
|
|
||||||
- ;;
|
|
||||||
- mov ar.rsc = r2
|
|
||||||
- ld8.nt1 r23 = [r10], -8
|
|
||||||
- mov b5 = r25
|
|
||||||
+ mov b5 = r25
|
|
||||||
;;
|
|
||||||
mov ar.rsc = r2
|
|
||||||
ld8.nt1 r23 = [r10], -8
|
|
||||||
@@ -137,51 +133,51 @@ _skip_flushrs:
|
|
||||||
mov r31 = ar.rnat
|
|
||||||
loadrs
|
|
||||||
;;
|
|
||||||
- ldf.fill.nt1 f4 = [in0], 0x10
|
|
||||||
+ ldf.fill.nt1 f4 = [in0], 0x10
|
|
||||||
ld8.nt1 r22 = [r10], -8
|
|
||||||
- dep r2 = -1, r14, 3, 6
|
|
||||||
+ dep r2 = -1, r14, 3, 6
|
|
||||||
;;
|
|
||||||
- ldf.fill.nt1 f5 = [in0], 0x10
|
|
||||||
- ld8.nt1 f21 = [r10], -8
|
|
||||||
- cmp p6 = r2, r15
|
|
||||||
+ ldf.fill.nt1 f5 = [in0], 0x10
|
|
||||||
+ ld8.nt1 r21 = [r10], -8
|
|
||||||
+ cmp.ltu p6 = r2, r15
|
|
||||||
;;
|
|
||||||
ld8.nt1 r20 = [r10], -0x10
|
|
||||||
(p6) ld8.nta r31 = [r2]
|
|
||||||
- mov b3 = r23
|
|
||||||
+ mov b3 = r23
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f16 = [in0], 0x10
|
|
||||||
- ld8.fill.nt1 r7 = [r10], -8
|
|
||||||
- mov b2 = r22
|
|
||||||
+ ld8.fill.nt1 r7 = [r10], -8
|
|
||||||
+ mov b2 = r22
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f17 = [in0], 0x10
|
|
||||||
- ld8.fill.nt1 r6 = [r10], -8
|
|
||||||
- mov b1 = r21
|
|
||||||
+ ld8.fill.nt1 r6 = [r10], -8
|
|
||||||
+ mov b1 = r21
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f18 = [in0], 0x10
|
|
||||||
- ld8.fill.nt1 r5 = [r10], -8
|
|
||||||
- mov b0 = r20
|
|
||||||
+ ld8.fill.nt1 r5 = [r10], -8
|
|
||||||
+ mov b0 = r20
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f19 = [in0], 0x10
|
|
||||||
- ld8.fill.nt1 r4 = [r10], 8*13
|
|
||||||
+ ld8.fill.nt1 r4 = [r10], 8*13
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f20 = [in0], 0x10
|
|
||||||
ld8.nt1 r19 = [r10], 0x10
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f21 = [in0], 0x10
|
|
||||||
- ldf.nt1 f26 = [r10], 8
|
|
||||||
+ ld8.nt1 r26 = [r10], 8
|
|
||||||
mov ar.pfs = r19
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f22 = [in0], 0x10
|
|
||||||
ld8.nt1 r27 = [r10], 8
|
|
||||||
- mov pr = r26, -1
|
|
||||||
+ mov pr = r26, -1
|
|
||||||
;;
|
|
||||||
- ldf.fill.nt1 r23 = [in0], 0x10
|
|
||||||
+ ldf.fill.nt1 f23 = [in0], 0x10
|
|
||||||
ld8.nt1 r28 = [r10], -17*8 - 0x10
|
|
||||||
mov ar.lc = r27
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f24 = [in0], 0x10
|
|
||||||
ldf.fill.nt1 f25 = [in0], 0x10
|
|
||||||
- mov r8 = in1
|
|
||||||
+ mov r8 = in1
|
|
||||||
;;
|
|
||||||
ldf.fill.nt1 f26 = [in0], 0x10
|
|
||||||
ldf.fill.nt1 f31 = [r10], -0x10
|
|
||||||
@@ -192,9 +188,12 @@ _skip_flushrs:
|
|
||||||
ldf.fill.nt1 f28 = [in0]
|
|
||||||
ldf.fill.nt1 f29 = [r10], 0x10*3 + 8*4
|
|
||||||
;;
|
|
||||||
- ld8.fill.nt1 sp = [r10]
|
|
||||||
+ ld8.fill.nt1 sp = [r10]
|
|
||||||
mov ar.unat = r18
|
|
||||||
;;
|
|
||||||
mov ar.bspstore = r14
|
|
||||||
mov ar.rnat = r31
|
|
||||||
;;
|
|
||||||
+ invala
|
|
||||||
+ mov ar.rsc = r16
|
|
||||||
+ br.ret.sptk b0
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,26 +1,22 @@
|
|||||||
From f99001cd7d4c27d1b365b70ac45b14f84ee46237 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
Date: Mon, 6 Nov 2017 09:44:21 -0500
|
Date: Thu, 3 Oct 2019 12:05:00 -0400
|
||||||
Subject: [PATCH 07/25] Bump revision from VERSION = 3.0.6 to VERSION = 3.0.7
|
Subject: [PATCH] Bump revision to VERSION = 3.0.10
|
||||||
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
---
|
||||||
Makefile | 2 +-
|
Makefile | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
diff --git a/Makefile b/Makefile
|
||||||
index 37592bd6930..a9f7e134e14 100644
|
index 01d1a01369e..a15513dcbba 100644
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -34,7 +34,7 @@
|
@@ -34,7 +34,7 @@
|
||||||
# SUCH DAMAGE.
|
# SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
|
|
||||||
-VERSION = 3.0.6
|
-VERSION = 3.0.9
|
||||||
+VERSION = 3.0.7
|
+VERSION = 3.0.10
|
||||||
|
|
||||||
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
SRCDIR = $(dir $(MKFILE_PATH))
|
SRCDIR = $(dir $(MKFILE_PATH))
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
|||||||
From a46a62b12b58139c31d4288384808365c4053bf2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:21 -0400
|
|
||||||
Subject: [PATCH 11/25] Fix some types gcc doesn't like
|
|
||||||
|
|
||||||
Most of these come from building on i386 with -Wextra, but they're still
|
|
||||||
incorrect everywhere else; they just happen to have identical typedefs
|
|
||||||
at other places, so the compiler doesn't care.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
apps/AllocPages.c | 2 +-
|
|
||||||
apps/FreePages.c | 2 +-
|
|
||||||
apps/route80h.c | 2 +-
|
|
||||||
inc/efilink.h | 2 +-
|
|
||||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/apps/AllocPages.c b/apps/AllocPages.c
|
|
||||||
index 77a082ec0a3..bb81849c26e 100644
|
|
||||||
--- a/apps/AllocPages.c
|
|
||||||
+++ b/apps/AllocPages.c
|
|
||||||
@@ -116,7 +116,7 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
|
||||||
INTN AllocType = -1;
|
|
||||||
INTN MemType = -1;
|
|
||||||
INTN NumPages = -1;
|
|
||||||
- UINTN Addr = 0;
|
|
||||||
+ EFI_PHYSICAL_ADDRESS Addr = 0;
|
|
||||||
|
|
||||||
InitializeLib(image, systab);
|
|
||||||
|
|
||||||
diff --git a/apps/FreePages.c b/apps/FreePages.c
|
|
||||||
index bbf2f52b4cf..247c75dc2be 100644
|
|
||||||
--- a/apps/FreePages.c
|
|
||||||
+++ b/apps/FreePages.c
|
|
||||||
@@ -89,7 +89,7 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
|
||||||
INTN err = 0;
|
|
||||||
|
|
||||||
INTN PgCnt = -1;
|
|
||||||
- UINTN PhysAddr = 0;
|
|
||||||
+ EFI_PHYSICAL_ADDRESS PhysAddr = 0;
|
|
||||||
|
|
||||||
InitializeLib(image, systab);
|
|
||||||
|
|
||||||
diff --git a/apps/route80h.c b/apps/route80h.c
|
|
||||||
index 8df860c1232..e1f62f06824 100644
|
|
||||||
--- a/apps/route80h.c
|
|
||||||
+++ b/apps/route80h.c
|
|
||||||
@@ -129,7 +129,7 @@ efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
|
||||||
lpcif.rcba &= ~1UL;
|
|
||||||
|
|
||||||
Print(L"rcba: 0x%8x\n", lpcif.rcba, lpcif.rcba);
|
|
||||||
- set_bit((uint32_t *)(uint64_t)(lpcif.rcba + GCS_OFFSET_ADDR),
|
|
||||||
+ set_bit((uint32_t *)(intptr_t)(lpcif.rcba + GCS_OFFSET_ADDR),
|
|
||||||
GCS_RPR_SHIFT, GCS_RPR_PCI);
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
diff --git a/inc/efilink.h b/inc/efilink.h
|
|
||||||
index b2ff4fa2f87..cc5aa2dc57b 100644
|
|
||||||
--- a/inc/efilink.h
|
|
||||||
+++ b/inc/efilink.h
|
|
||||||
@@ -142,7 +142,7 @@ typedef struct _LIST_ENTRY {
|
|
||||||
// EFI_FIELD_OFFSET - returns the byte offset to a field within a structure
|
|
||||||
//
|
|
||||||
|
|
||||||
-#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))
|
|
||||||
+#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(intptr_t)(&(((TYPE *) 0)->Field)))
|
|
||||||
|
|
||||||
//
|
|
||||||
// CONTAINING_RECORD - returns a pointer to the structure
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From 5fa13d4609ae6187f68928c6e0834cdf716442f9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:22 -0400
|
|
||||||
Subject: [PATCH 12/25] 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>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index 446e676dc14..6d300fb0f24 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.15.0
|
|
||||||
|
|
31
0012-Revert-efilink-fix-build-with-gcc-4.8.patch
Normal file
31
0012-Revert-efilink-fix-build-with-gcc-4.8.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Mon, 28 Oct 2019 07:45:38 -0400
|
||||||
|
Subject: [PATCH] Revert "efilink: fix build with gcc 4.8"
|
||||||
|
|
||||||
|
Breaks gcc builds with '-nostdinc' flag.
|
||||||
|
|
||||||
|
The fix in 1a53d8f88a452847b25f9689f9a08dbcf82c86e4
|
||||||
|
(Fix for problem with undeclared intptr_t type), which is also merged
|
||||||
|
fixes the same problem, without causing breakage.
|
||||||
|
|
||||||
|
This reverts commit 6335e5c697c57d8b5854b8202de3733bcb151ca6.
|
||||||
|
---
|
||||||
|
inc/efilink.h | 4 ----
|
||||||
|
1 file changed, 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/inc/efilink.h b/inc/efilink.h
|
||||||
|
index b69a6fd5cf5..cc5aa2dc57b 100644
|
||||||
|
--- a/inc/efilink.h
|
||||||
|
+++ b/inc/efilink.h
|
||||||
|
@@ -1,10 +1,6 @@
|
||||||
|
#ifndef _EFI_LINK_H
|
||||||
|
#define _EFI_LINK_H
|
||||||
|
|
||||||
|
-#if defined(__GNUC__)
|
||||||
|
-#include <stdint.h>
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 1998 Intel Corporation
|
22
0013-Bump-revision-to-VERSION-3.0.11.patch
Normal file
22
0013-Bump-revision-to-VERSION-3.0.11.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Mon, 28 Oct 2019 07:48:52 -0400
|
||||||
|
Subject: [PATCH] Bump revision to VERSION = 3.0.11
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index a15513dcbba..84f07d33a48 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -34,7 +34,7 @@
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
-VERSION = 3.0.10
|
||||||
|
+VERSION = 3.0.11
|
||||||
|
|
||||||
|
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
|
SRCDIR = $(dir $(MKFILE_PATH))
|
@ -1,32 +0,0 @@
|
|||||||
From e861bb3861cca6c6d7b4d42fa915e9e9fa3dc9fc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:23 -0400
|
|
||||||
Subject: [PATCH 13/25] 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>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
apps/route80h.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/apps/route80h.c b/apps/route80h.c
|
|
||||||
index e1f62f06824..5272dd3cd44 100644
|
|
||||||
--- a/apps/route80h.c
|
|
||||||
+++ b/apps/route80h.c
|
|
||||||
@@ -93,7 +93,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.15.0
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 25cebcee2ae0b92829841321220ec9837479c118 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:24 -0400
|
|
||||||
Subject: [PATCH 14/25] 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>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
apps/debughook.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/apps/debughook.c b/apps/debughook.c
|
|
||||||
index 93cd0cf7eb0..78e4a767b1d 100644
|
|
||||||
--- a/apps/debughook.c
|
|
||||||
+++ b/apps/debughook.c
|
|
||||||
@@ -50,7 +50,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)
|
|
||||||
@@ -71,7 +71,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.15.0
|
|
||||||
|
|
108
0014-efibind-Fix-usage-of-efi-headers-from-C-code.patch
Normal file
108
0014-efibind-Fix-usage-of-efi-headers-from-C-code.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexander von Gluck IV <kallisti5@unixzen.com>
|
||||||
|
Date: Wed, 27 Nov 2019 17:03:42 -0600
|
||||||
|
Subject: [PATCH] efibind: Fix usage of efi headers from C++ code
|
||||||
|
|
||||||
|
* __STDC_VERSION__ is undefined when headers are called from C++
|
||||||
|
code resulting in not using stdint.h and efibind.h
|
||||||
|
"making a guess" on what they are. extern "C" will not define
|
||||||
|
__STDC_VERSION__.
|
||||||
|
* Always leverage stdint.h on C++.
|
||||||
|
* Honestly, gnu-efi should always use stdint.h, or find a better
|
||||||
|
way to detect it. (or platforms without it need to catch up to 2007)
|
||||||
|
---
|
||||||
|
inc/aarch64/efibind.h | 2 +-
|
||||||
|
inc/arm/efibind.h | 2 +-
|
||||||
|
inc/ia32/efibind.h | 2 +-
|
||||||
|
inc/ia64/efibind.h | 2 +-
|
||||||
|
inc/mips64el/efibind.h | 2 +-
|
||||||
|
inc/x86_64/efibind.h | 4 ++--
|
||||||
|
6 files changed, 7 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h
|
||||||
|
index 3c8cf963c31..c2c546b892a 100644
|
||||||
|
--- a/inc/aarch64/efibind.h
|
||||||
|
+++ b/inc/aarch64/efibind.h
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
* either version 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ))
|
||||||
|
+#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h
|
||||||
|
index 7a22b9c8458..012d3d2f8c9 100644
|
||||||
|
--- a/inc/arm/efibind.h
|
||||||
|
+++ b/inc/arm/efibind.h
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
* either version 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ))
|
||||||
|
+#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h
|
||||||
|
index dd0138573d9..27459e454d1 100644
|
||||||
|
--- a/inc/ia32/efibind.h
|
||||||
|
+++ b/inc/ia32/efibind.h
|
||||||
|
@@ -25,7 +25,7 @@ Revision History
|
||||||
|
// Basic int types of various widths
|
||||||
|
//
|
||||||
|
|
||||||
|
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
||||||
|
+#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// No ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h
|
||||||
|
index b9b2e624657..3ace8d59190 100644
|
||||||
|
--- a/inc/ia64/efibind.h
|
||||||
|
+++ b/inc/ia64/efibind.h
|
||||||
|
@@ -24,7 +24,7 @@ Revision History
|
||||||
|
// Basic int types of various widths
|
||||||
|
//
|
||||||
|
|
||||||
|
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
||||||
|
+#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// No ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h
|
||||||
|
index 32241e5ad46..1f08cd346d0 100644
|
||||||
|
--- a/inc/mips64el/efibind.h
|
||||||
|
+++ b/inc/mips64el/efibind.h
|
||||||
|
@@ -17,7 +17,7 @@
|
||||||
|
* either version 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
||||||
|
+#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h
|
||||||
|
index ae40595be0b..31e9e119d74 100644
|
||||||
|
--- a/inc/x86_64/efibind.h
|
||||||
|
+++ b/inc/x86_64/efibind.h
|
||||||
|
@@ -34,7 +34,7 @@ Revision History
|
||||||
|
// Basic int types of various widths
|
||||||
|
//
|
||||||
|
|
||||||
|
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )
|
||||||
|
+#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// No ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
|
||||||
|
@@ -86,7 +86,7 @@ Revision History
|
||||||
|
#endif
|
||||||
|
typedef uint64_t uintptr_t;
|
||||||
|
typedef int64_t intptr_t;
|
||||||
|
-#elif defined(__GNUC__)
|
||||||
|
+#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
32
0015-Fix-ARCH-on-ARMv6.patch
Normal file
32
0015-Fix-ARCH-on-ARMv6.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ben Wolsieffer <benwolsieffer@gmail.com>
|
||||||
|
Date: Tue, 5 Nov 2019 00:09:12 -0500
|
||||||
|
Subject: [PATCH] Fix ARCH on ARMv6.
|
||||||
|
|
||||||
|
Extends the armv7 ARCH sed expression to work correctly on armv6.
|
||||||
|
|
||||||
|
Signed-off-by: Ben Wolsieffer <benwolsieffer@gmail.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index ba743f17893..5695b2ac1ab 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 -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
||||||
|
-ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
||||||
|
+HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
+ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
|
||||||
|
# Get ARCH from the compiler if cross compiling
|
||||||
|
ifneq ($(CROSS_COMPILE),)
|
||||||
|
- override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
||||||
|
+ override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
endif
|
||||||
|
|
||||||
|
# FreeBSD (and possibly others) reports amd64 instead of x86_64
|
@ -1,50 +0,0 @@
|
|||||||
From 28b487d1ae66c7311e13c07c802276ea26f026e9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:25 -0400
|
|
||||||
Subject: [PATCH 15/25] 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>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
inc/efipxebc.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/inc/efipxebc.h b/inc/efipxebc.h
|
|
||||||
index 035a853a7ef..3760c7cbb78 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 EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
|
|
||||||
+typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Call Back Definitions
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
27
0016-Re-add-back-the-original-symbol-typeo.patch
Normal file
27
0016-Re-add-back-the-original-symbol-typeo.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
Date: Thu, 16 Jan 2020 14:35:56 -0500
|
||||||
|
Subject: [PATCH] Re-add back the original symbol, typeo.
|
||||||
|
|
||||||
|
Fix breaking code by restoring original typeo in efierr.h
|
||||||
|
EFI_WARN_UNKOWN_GLYPH definition.
|
||||||
|
|
||||||
|
Fixes: commit 5d0d538c2574dfe32e87e87ff977f2830ae2990c
|
||||||
|
|
||||||
|
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
||||||
|
---
|
||||||
|
inc/efierr.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/inc/efierr.h b/inc/efierr.h
|
||||||
|
index d351c1ca225..5a66e1a0676 100644
|
||||||
|
--- a/inc/efierr.h
|
||||||
|
+++ b/inc/efierr.h
|
||||||
|
@@ -58,6 +58,7 @@ Revision History
|
||||||
|
#define EFI_INVALID_LANGUAGE EFIERR(32)
|
||||||
|
#define EFI_COMPROMISED_DATA EFIERR(33)
|
||||||
|
|
||||||
|
+#define EFI_WARN_UNKOWN_GLYPH EFIWARN(1)
|
||||||
|
#define EFI_WARN_UNKNOWN_GLYPH EFIWARN(1)
|
||||||
|
#define EFI_WARN_DELETE_FAILURE EFIWARN(2)
|
||||||
|
#define EFI_WARN_WRITE_FAILURE EFIWARN(3)
|
@ -1,32 +0,0 @@
|
|||||||
From f0bf464a37d740a9539e8356a2e8611da63455df Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:26 -0400
|
|
||||||
Subject: [PATCH 16/25] make clang not complain about -fno-merge-all-constants
|
|
||||||
|
|
||||||
Make clang not complain about -fno-merge-all-constants
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index 6d300fb0f24..a457190aa3a 100755
|
|
||||||
--- a/Make.defaults
|
|
||||||
+++ b/Make.defaults
|
|
||||||
@@ -170,8 +170,9 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
|
||||||
else
|
|
||||||
CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
|
||||||
-fshort-wchar -fno-strict-aliasing \
|
|
||||||
- -fno-merge-all-constants -ffreestanding -fno-stack-protector \
|
|
||||||
- -fno-stack-check
|
|
||||||
+ -ffreestanding -fno-stack-protector -fno-stack-check \
|
|
||||||
+ -fno-stack-check \
|
|
||||||
+ $(if $(findstring gcc,$(CC)),-fno-merge-all-constants,)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ARFLAGS += -U
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
4040
0017-Add-elf.h-for-cross-building-without-a-system-libelf.patch
Normal file
4040
0017-Add-elf.h-for-cross-building-without-a-system-libelf.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@
|
|||||||
From 5abc3858a25fa6774c6e2d89cc5d1d14a9c9f7cb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:27 -0400
|
|
||||||
Subject: [PATCH 17/25] Fix another place clang complains about
|
|
||||||
|
|
||||||
Fix another place clang complains about.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/guid.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/guid.c b/lib/guid.c
|
|
||||||
index 8daa505ed97..6498e9063cf 100644
|
|
||||||
--- a/lib/guid.c
|
|
||||||
+++ b/lib/guid.c
|
|
||||||
@@ -97,7 +97,7 @@ static struct {
|
|
||||||
{ &SMapId, L"ShellDevPathMap" },
|
|
||||||
{ &SAliasId, L"ShellAlias" },
|
|
||||||
|
|
||||||
- { NULL, NULL }
|
|
||||||
+ { NULL, L"" }
|
|
||||||
};
|
|
||||||
|
|
||||||
//
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,345 +0,0 @@
|
|||||||
From 9485c65f6d28b71ff697849c1c8d47fd077ccd07 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:28 -0400
|
|
||||||
Subject: [PATCH 18/25] gnu-efi: add some more common string functions.
|
|
||||||
|
|
||||||
This adds bounded string helper functions:
|
|
||||||
|
|
||||||
StrnLen()
|
|
||||||
StrnCpy()
|
|
||||||
StrnCat()
|
|
||||||
StpnCpy()
|
|
||||||
|
|
||||||
And the unbounded function StpCpy().
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/runtime/rtstr.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++--
|
|
||||||
lib/str.c | 53 ++++++++++++++++++++++++++++++
|
|
||||||
inc/efilib.h | 33 +++++++++++++++++++
|
|
||||||
inc/efirtlib.h | 38 ++++++++++++++++++++++
|
|
||||||
4 files changed, 213 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
|
||||||
index e283c09582e..80ff4891199 100644
|
|
||||||
--- a/lib/runtime/rtstr.c
|
|
||||||
+++ b/lib/runtime/rtstr.c
|
|
||||||
@@ -57,6 +57,61 @@ RtStrCpy (
|
|
||||||
*Dest = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef __GNUC__
|
|
||||||
+#pragma RUNTIME_CODE(RtStrnCpy)
|
|
||||||
+#endif
|
|
||||||
+VOID
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ UINTN Size = RtStrnLen(Src, Len);
|
|
||||||
+ if (Size != Len)
|
|
||||||
+ RtSetMem(Dest + Len, '\0', (Len - Size) * sizeof(CHAR16));
|
|
||||||
+ RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#ifndef __GNUC__
|
|
||||||
+#pragma RUNTIME_CODE(RtStrCpy)
|
|
||||||
+#endif
|
|
||||||
+CHAR16 *
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStpCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ while (*Src) {
|
|
||||||
+ *(Dest++) = *(Src++);
|
|
||||||
+ }
|
|
||||||
+ *Dest = 0;
|
|
||||||
+ return Dest;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#ifndef __GNUC__
|
|
||||||
+#pragma RUNTIME_CODE(RtStrnCpy)
|
|
||||||
+#endif
|
|
||||||
+CHAR16 *
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStpnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ UINTN Size = RtStrnLen(Src, Len);
|
|
||||||
+ if (Size != Len)
|
|
||||||
+ RtSetMem(Dest + Len, '\0', (Len - Size) * sizeof(CHAR16));
|
|
||||||
+ RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
|
||||||
+ return Dest + Size;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#ifndef __GNUC__
|
|
||||||
#pragma RUNTIME_CODE(RtStrCat)
|
|
||||||
#endif
|
|
||||||
@@ -66,10 +121,24 @@ RtStrCat (
|
|
||||||
IN CHAR16 *Dest,
|
|
||||||
IN CONST CHAR16 *Src
|
|
||||||
)
|
|
||||||
-{
|
|
||||||
+{
|
|
||||||
RtStrCpy(Dest+StrLen(Dest), Src);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef __GNUC__
|
|
||||||
+#pragma RUNTIME_CODE(RtStrCat)
|
|
||||||
+#endif
|
|
||||||
+VOID
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnCat (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+{
|
|
||||||
+ RtStrnCpy(Dest+StrLen(Dest), Src, Len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#ifndef __GNUC__
|
|
||||||
#pragma RUNTIME_CODE(RtStrLen)
|
|
||||||
#endif
|
|
||||||
@@ -81,11 +150,28 @@ RtStrLen (
|
|
||||||
// string length
|
|
||||||
{
|
|
||||||
UINTN len;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
for (len=0; *s1; s1+=1, len+=1) ;
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef __GNUC__
|
|
||||||
+#pragma RUNTIME_CODE(RtStrnLen)
|
|
||||||
+#endif
|
|
||||||
+UINTN
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnLen (
|
|
||||||
+ IN CONST CHAR16 *s1,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ UINTN i;
|
|
||||||
+ for (i = 0; *s1 && i < Len; i++)
|
|
||||||
+ s1++;
|
|
||||||
+ return i;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#ifndef __GNUC__
|
|
||||||
#pragma RUNTIME_CODE(RtStrSize)
|
|
||||||
#endif
|
|
||||||
@@ -97,7 +183,7 @@ RtStrSize (
|
|
||||||
// string size
|
|
||||||
{
|
|
||||||
UINTN len;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
for (len=0; *s1; s1+=1, len+=1) ;
|
|
||||||
return (len + 1) * sizeof(CHAR16);
|
|
||||||
}
|
|
||||||
diff --git a/lib/str.c b/lib/str.c
|
|
||||||
index cf1495c1fc8..9a89f30ee55 100644
|
|
||||||
--- a/lib/str.c
|
|
||||||
+++ b/lib/str.c
|
|
||||||
@@ -113,6 +113,38 @@ StrCpy (
|
|
||||||
RtStrCpy (Dest, Src);
|
|
||||||
}
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+StrnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ RtStrnCpy (Dest, Src, Len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+StpCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ return RtStpCpy (Dest, Src);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+StpnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// copy strings
|
|
||||||
+{
|
|
||||||
+ return RtStpnCpy (Dest, Src, Len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
VOID
|
|
||||||
StrCat (
|
|
||||||
IN CHAR16 *Dest,
|
|
||||||
@@ -122,6 +154,27 @@ StrCat (
|
|
||||||
RtStrCat(Dest, Src);
|
|
||||||
}
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+StrnCat (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+{
|
|
||||||
+ RtStrnCat(Dest, Src, Len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+UINTN
|
|
||||||
+StrnLen (
|
|
||||||
+ IN CONST CHAR16 *s1,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ )
|
|
||||||
+// string length
|
|
||||||
+{
|
|
||||||
+ return RtStrnLen(s1, Len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
UINTN
|
|
||||||
StrLen (
|
|
||||||
IN CONST CHAR16 *s1
|
|
||||||
diff --git a/inc/efilib.h b/inc/efilib.h
|
|
||||||
index 22da65bbc27..8a507aff7cd 100644
|
|
||||||
--- a/inc/efilib.h
|
|
||||||
+++ b/inc/efilib.h
|
|
||||||
@@ -313,17 +313,50 @@ StrCpy (
|
|
||||||
IN CONST CHAR16 *Src
|
|
||||||
);
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+StrnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+StpCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+StpnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
VOID
|
|
||||||
StrCat (
|
|
||||||
IN CHAR16 *Dest,
|
|
||||||
IN CONST CHAR16 *Src
|
|
||||||
);
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+StrnCat (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
UINTN
|
|
||||||
StrLen (
|
|
||||||
IN CONST CHAR16 *s1
|
|
||||||
);
|
|
||||||
|
|
||||||
+UINTN
|
|
||||||
+StrnLen (
|
|
||||||
+ IN CONST CHAR16 *s1,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
UINTN
|
|
||||||
StrSize (
|
|
||||||
IN CONST CHAR16 *s1
|
|
||||||
diff --git a/inc/efirtlib.h b/inc/efirtlib.h
|
|
||||||
index c073ead97a7..49d0b4d3ae0 100644
|
|
||||||
--- a/inc/efirtlib.h
|
|
||||||
+++ b/inc/efirtlib.h
|
|
||||||
@@ -69,6 +69,29 @@ RtStrCpy (
|
|
||||||
IN CONST CHAR16 *Src
|
|
||||||
);
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStpCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+CHAR16 *
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStpnCpy (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
VOID
|
|
||||||
RUNTIMEFUNCTION
|
|
||||||
RtStrCat (
|
|
||||||
@@ -76,12 +99,27 @@ RtStrCat (
|
|
||||||
IN CONST CHAR16 *Src
|
|
||||||
);
|
|
||||||
|
|
||||||
+VOID
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnCat (
|
|
||||||
+ IN CHAR16 *Dest,
|
|
||||||
+ IN CONST CHAR16 *Src,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
UINTN
|
|
||||||
RUNTIMEFUNCTION
|
|
||||||
RtStrLen (
|
|
||||||
IN CONST CHAR16 *s1
|
|
||||||
);
|
|
||||||
|
|
||||||
+UINTN
|
|
||||||
+RUNTIMEFUNCTION
|
|
||||||
+RtStrnLen (
|
|
||||||
+ IN CONST CHAR16 *s1,
|
|
||||||
+ IN UINTN Len
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
UINTN
|
|
||||||
RUNTIMEFUNCTION
|
|
||||||
RtStrSize (
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: sgerwk <sgerwk@aol.com>
|
||||||
|
Date: Thu, 2 May 2019 12:57:16 +0200
|
||||||
|
Subject: [PATCH] make parameter to compile apps + add example output directory
|
||||||
|
|
||||||
|
---
|
||||||
|
README.gnuefi | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README.gnuefi b/README.gnuefi
|
||||||
|
index 512698c28b4..a65e5f9042a 100644
|
||||||
|
--- a/README.gnuefi
|
||||||
|
+++ b/README.gnuefi
|
||||||
|
@@ -108,10 +108,10 @@ the make command line (e.g., "make ARCH=ia64").
|
||||||
|
** Building
|
||||||
|
|
||||||
|
To build the sample EFI applications provided in subdirectory "apps",
|
||||||
|
-simply invoke "make" in the toplevel directory (the directory
|
||||||
|
+simply invoke "make apps" in the toplevel directory (the directory
|
||||||
|
containing this README file). This should build lib/libefi.a and
|
||||||
|
gnuefi/libgnuefi.a first and then all the EFI applications such as a
|
||||||
|
-apps/t6.efi.
|
||||||
|
+x86_64/apps/t6.efi.
|
||||||
|
|
||||||
|
|
||||||
|
** Running
|
@ -1,47 +0,0 @@
|
|||||||
From 28793041d7f26a6771837967c495f3ae7ba1134a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:29 -0400
|
|
||||||
Subject: [PATCH 19/25] Add %D to print device paths
|
|
||||||
|
|
||||||
Add %D to print device paths.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
lib/print.c | 13 +++++++++++++
|
|
||||||
1 file changed, 13 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/lib/print.c b/lib/print.c
|
|
||||||
index ed79c43825b..35e43c03db5 100644
|
|
||||||
--- a/lib/print.c
|
|
||||||
+++ b/lib/print.c
|
|
||||||
@@ -1005,6 +1005,7 @@ Routine Description:
|
|
||||||
t - EFI time structure
|
|
||||||
g - Pointer to GUID
|
|
||||||
r - EFI status code (result code)
|
|
||||||
+ D - pointer to Device Path with normal ending.
|
|
||||||
|
|
||||||
N - Set output attribute to normal
|
|
||||||
H - Set output attribute to highlight
|
|
||||||
@@ -1167,6 +1168,18 @@ Returns:
|
|
||||||
Item.Item.pw = Item.Scratch;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case 'D':
|
|
||||||
+ {
|
|
||||||
+ EFI_DEVICE_PATH *dp = va_arg(ps->args, EFI_DEVICE_PATH *);
|
|
||||||
+ CHAR16 *dpstr = DevicePathToStr(dp);
|
|
||||||
+ StrnCpy(Item.Scratch, dpstr, PRINT_ITEM_BUFFER_LEN);
|
|
||||||
+ Item.Scratch[PRINT_ITEM_BUFFER_LEN-1] = L'\0';
|
|
||||||
+ FreePool(dpstr);
|
|
||||||
+
|
|
||||||
+ Item.Item.pw = Item.Scratch;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
case 'f':
|
|
||||||
FloatToString (
|
|
||||||
Item.Scratch,
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
86
0019-Support-for-building-on-macOS-systems.patch
Normal file
86
0019-Support-for-building-on-macOS-systems.patch
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rick Mark <rickmark@outlook.com>
|
||||||
|
Date: Fri, 27 Oct 2017 14:05:39 -0700
|
||||||
|
Subject: [PATCH] Support for building on macOS systems
|
||||||
|
|
||||||
|
---
|
||||||
|
Make.defaults | 12 ++++++++++--
|
||||||
|
lib/x86_64/setjmp.S | 15 +++++++++++----
|
||||||
|
2 files changed, 21 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 5695b2ac1ab..5d34ff47157 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -65,7 +65,7 @@ OS := $(shell uname -s)
|
||||||
|
HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
|
||||||
|
-# Get ARCH from the compiler if cross compiling
|
||||||
|
+# Get ARCH from the compiler if cross compiling
|
||||||
|
ifneq ($(CROSS_COMPILE),)
|
||||||
|
override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
endif
|
||||||
|
@@ -165,7 +165,10 @@ ifneq (mingw32,$(findstring mingw32, $(GCCMACHINE)))
|
||||||
|
CFLAGS += -fpic
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifeq (FreeBSD, $(findstring FreeBSD, $(OS)))
|
||||||
|
+IS_FREEBSD = $(findstring FreeBSD, $(OS))
|
||||||
|
+IS_DARWIN = $(findstring Darwin, $(OS))
|
||||||
|
+
|
||||||
|
+ifneq "$(or $(IS_FREEBSD), $(IS_DARWIN))" ""
|
||||||
|
CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
||||||
|
-fshort-wchar -fno-strict-aliasing \
|
||||||
|
-ffreestanding -fno-stack-protector
|
||||||
|
@@ -177,7 +180,12 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
||||||
|
$(if $(findstring gcc,$(CC)),-fno-merge-all-constants,)
|
||||||
|
endif
|
||||||
|
|
||||||
|
+ifeq "$(IS_DARWIN)" ""
|
||||||
|
+ARFLAGS += -U
|
||||||
|
+else
|
||||||
|
ARFLAGS := rDv
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
ASFLAGS += $(ARCH3264)
|
||||||
|
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \
|
||||||
|
--build-id=sha1
|
||||||
|
diff --git a/lib/x86_64/setjmp.S b/lib/x86_64/setjmp.S
|
||||||
|
index e870aef703a..e3e51959719 100644
|
||||||
|
--- a/lib/x86_64/setjmp.S
|
||||||
|
+++ b/lib/x86_64/setjmp.S
|
||||||
|
@@ -1,10 +1,14 @@
|
||||||
|
.text
|
||||||
|
.globl setjmp
|
||||||
|
-#ifndef __MINGW32__
|
||||||
|
+
|
||||||
|
+#ifndef __APPLE__
|
||||||
|
+# ifndef __MINGW32__
|
||||||
|
.type setjmp, @function
|
||||||
|
-#else
|
||||||
|
+# else
|
||||||
|
.def setjmp; .scl 2; .type 32; .endef
|
||||||
|
+# endif
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
setjmp:
|
||||||
|
pop %rsi
|
||||||
|
movq %rbx,0x00(%rdi)
|
||||||
|
@@ -20,11 +24,14 @@ setjmp:
|
||||||
|
ret
|
||||||
|
|
||||||
|
.globl longjmp
|
||||||
|
-#ifndef __MINGW32__
|
||||||
|
+#ifndef __APPLE__
|
||||||
|
+# ifndef __MINGW32__
|
||||||
|
.type longjmp, @function
|
||||||
|
-#else
|
||||||
|
+# else
|
||||||
|
.def longjmp; .scl 2; .type 32; .endef
|
||||||
|
+# endif
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
longjmp:
|
||||||
|
movl %esi, %eax
|
||||||
|
movq 0x00(%rdi), %rbx
|
@ -1,31 +0,0 @@
|
|||||||
From 2c624c22fe873099d398e86b9f09cffcae9f0af8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:30 -0400
|
|
||||||
Subject: [PATCH 20/25] Make ARCH overrideable on the command line
|
|
||||||
|
|
||||||
Make ARCH overrideable on the command line.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index a457190aa3a..4aa57ac5f7c 100755
|
|
||||||
--- a/Make.defaults
|
|
||||||
+++ b/Make.defaults
|
|
||||||
@@ -62,8 +62,8 @@ OBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy
|
|
||||||
|
|
||||||
# Host/target identification
|
|
||||||
OS := $(shell uname -s)
|
|
||||||
-HOSTARCH := $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
|
||||||
-ARCH := $(HOSTARCH)
|
|
||||||
+HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
|
||||||
+ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )
|
|
||||||
|
|
||||||
# Get ARCH from the compiler if cross compiling
|
|
||||||
ifneq ($(CROSS_COMPILE),)
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Soop <sebastian_osorio@outlook.cl>
|
||||||
|
Date: Wed, 16 Dec 2015 22:33:33 -0300
|
||||||
|
Subject: [PATCH] Make apps link against the local gnuefi and crt objects
|
||||||
|
|
||||||
|
---
|
||||||
|
apps/Makefile | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index 4e1b69a38c8..310c6fdb5fc 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -45,14 +45,14 @@ TOPDIR = $(SRCDIR)/..
|
||||||
|
CDIR=$(TOPDIR)/..
|
||||||
|
LINUX_HEADERS = /usr/src/sys/build
|
||||||
|
CPPFLAGS += -D__KERNEL__ -I$(LINUX_HEADERS)/include
|
||||||
|
-CRTOBJS = ../gnuefi/crt0-efi-$(ARCH).o
|
||||||
|
+CRTOBJS = $(TOPDIR)/$(ARCH)/gnuefi/crt0-efi-$(ARCH).o
|
||||||
|
|
||||||
|
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_efi.lds
|
||||||
|
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds
|
||||||
|
endif
|
||||||
|
|
||||||
|
-LDFLAGS += -shared -Bsymbolic -L../lib -L../gnuefi $(CRTOBJS)
|
||||||
|
+LDFLAGS += -shared -Bsymbolic -L$(TOPDIR)/$(ARCH)/lib -L$(TOPDIR)/$(ARCH)/gnuefi $(CRTOBJS)
|
||||||
|
|
||||||
|
LOADLIBES += -lefi -lgnuefi
|
||||||
|
LOADLIBES += $(LIBGCC)
|
34
0021-Add-.travis.yml.patch
Normal file
34
0021-Add-.travis.yml.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 11 Apr 2018 16:49:36 -0400
|
||||||
|
Subject: [PATCH] Add .travis.yml
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
.travis.yml | 17 +++++++++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
create mode 100644 .travis.yml
|
||||||
|
|
||||||
|
diff --git a/.travis.yml b/.travis.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..eb9be1e46f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/.travis.yml
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+language: c
|
||||||
|
+cache: ccache
|
||||||
|
+branches:
|
||||||
|
+ except:
|
||||||
|
+ - travis
|
||||||
|
+
|
||||||
|
+matrix:
|
||||||
|
+ include:
|
||||||
|
+ - os: linux
|
||||||
|
+ dist: trusty
|
||||||
|
+ services: docker
|
||||||
|
+
|
||||||
|
+before_install:
|
||||||
|
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull vathpela/efi-ci-rawhide:v0 ; fi
|
||||||
|
+
|
||||||
|
+script:
|
||||||
|
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run vathpela/efi-ci-rawhide:v0 /bin/sh -c "cd /root/ && ./build.sh --branch \"$TRAVIS_BRANCH\" --commit \"$TRAVIS_COMMIT\" --commit-range \"$TRAVIS_COMMIT_RANGE\" --event-type \"$TRAVIS_EVENT_TYPE\" --pull-request \"$TRAVIS_PULL_REQUEST\" --pr-branch \"$TRAVIS_PULL_REQUEST_BRANCH\" --pr-sha \"$TRAVIS_PULL_REQUEST_SHA\" --remote \"$TRAVIS_PULL_REQUEST_SLUG\" --repo \"$TRAVIS_REPO_SLUG\" --test-subject gnu-efi" ; fi
|
@ -1,447 +0,0 @@
|
|||||||
From 5ec879ace760faacfa940a1933e0339e8f3811bd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:31 -0400
|
|
||||||
Subject: [PATCH 21/25] apps: Add bltgrid and lfbgrid, and add error checks to
|
|
||||||
modelist
|
|
||||||
|
|
||||||
This adds bltgrid and lfbgrid, which draw checkerboards using GOP's
|
|
||||||
Blt() and linear framebuffer, respectively, and adds some error checks
|
|
||||||
to modelist.efi.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
apps/bltgrid.c | 131 +++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
apps/lfbgrid.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
apps/modelist.c | 56 +++++++++----------
|
|
||||||
apps/Makefile | 3 +-
|
|
||||||
4 files changed, 328 insertions(+), 32 deletions(-)
|
|
||||||
create mode 100644 apps/bltgrid.c
|
|
||||||
create mode 100644 apps/lfbgrid.c
|
|
||||||
|
|
||||||
diff --git a/apps/bltgrid.c b/apps/bltgrid.c
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..2adde6a3211
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/apps/bltgrid.c
|
|
||||||
@@ -0,0 +1,131 @@
|
|
||||||
+#include <efi.h>
|
|
||||||
+#include <efilib.h>
|
|
||||||
+
|
|
||||||
+extern EFI_GUID GraphicsOutputProtocol;
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+fill_boxes(UINT32 *PixelBuffer, UINT32 Width, UINT32 Height)
|
|
||||||
+{
|
|
||||||
+ UINT32 y, x = 0;
|
|
||||||
+ /*
|
|
||||||
+ * This assums BGRR, but it doesn't really matter; we pick red and
|
|
||||||
+ * green so it'll just be blue/green if the pixel format is backwards.
|
|
||||||
+ */
|
|
||||||
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Red = {0, 0, 0xff, 0},
|
|
||||||
+ Green = {0, 0xff, 0, 0},
|
|
||||||
+ *Color;
|
|
||||||
+
|
|
||||||
+ for (y = 0; y < Height; y++) {
|
|
||||||
+ Color = ((y / 32) % 2 == 0) ? &Red : &Green;
|
|
||||||
+ for (x = 0; x < Width; x++) {
|
|
||||||
+ if (x % 32 == 0 && x != 0)
|
|
||||||
+ Color = (Color == &Red) ? &Green : &Red;
|
|
||||||
+ PixelBuffer[y * Width + x] = *(UINT32 *)Color;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
|
||||||
+{
|
|
||||||
+ int i, imax;
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
|
||||||
+ UINTN NumPixels;
|
|
||||||
+ UINT32 *PixelBuffer;
|
|
||||||
+ UINT32 BufferSize;
|
|
||||||
+
|
|
||||||
+ if (gop->Mode) {
|
|
||||||
+ imax = gop->Mode->MaxMode;
|
|
||||||
+ } else {
|
|
||||||
+ Print(L"gop->Mode is NULL\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < imax; i++) {
|
|
||||||
+ UINTN SizeOfInfo;
|
|
||||||
+ rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
|
||||||
+ &info);
|
|
||||||
+ if (EFI_ERROR(rc) && rc == EFI_NOT_STARTED) {
|
|
||||||
+ Print(L"gop->QueryMode() returned %r\n", rc);
|
|
||||||
+ Print(L"Trying to start GOP with SetMode().\n");
|
|
||||||
+ rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
|
||||||
+ gop->Mode ? gop->Mode->Mode : 0);
|
|
||||||
+ rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
|
||||||
+ &SizeOfInfo, &info);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ Print(L"%d: Bad response from QueryMode: %r (%d)\n",
|
|
||||||
+ i, rc, rc);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ NumPixels = info->VerticalResolution * info->HorizontalResolution;
|
|
||||||
+ BufferSize = NumPixels * sizeof(UINT32);
|
|
||||||
+
|
|
||||||
+ PixelBuffer = AllocatePool(BufferSize);
|
|
||||||
+ if (!PixelBuffer) {
|
|
||||||
+ Print(L"Allocation of 0x%08lx bytes failed.\n",
|
|
||||||
+ sizeof(UINT32) * NumPixels);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ fill_boxes(PixelBuffer,
|
|
||||||
+ info->HorizontalResolution, info->VerticalResolution);
|
|
||||||
+
|
|
||||||
+ uefi_call_wrapper(gop->Blt, 10, gop,
|
|
||||||
+ (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)PixelBuffer,
|
|
||||||
+ EfiBltBufferToVideo,
|
|
||||||
+ 0, 0, 0, 0,
|
|
||||||
+ info->HorizontalResolution,
|
|
||||||
+ info->VerticalResolution,
|
|
||||||
+ 0);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ Print(L"Never found the active video mode?\n");
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static EFI_STATUS
|
|
||||||
+SetWatchdog(UINTN seconds)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ rc = uefi_call_wrapper(BS->SetWatchdogTimer, 4, seconds, 0x1ffff,
|
|
||||||
+ 0, NULL);
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ CHAR16 Buffer[64];
|
|
||||||
+ StatusToString(Buffer, rc);
|
|
||||||
+ Print(L"Bad response from QueryMode: %s (%d)\n", Buffer, rc);
|
|
||||||
+ }
|
|
||||||
+ return rc;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+EFI_STATUS
|
|
||||||
+efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
|
|
||||||
+
|
|
||||||
+ InitializeLib(image_handle, systab);
|
|
||||||
+
|
|
||||||
+ SetWatchdog(10);
|
|
||||||
+
|
|
||||||
+ rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ Print(L"Could not locate GOP: %r\n", rc);
|
|
||||||
+ return rc;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!gop) {
|
|
||||||
+ Print(L"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
|
||||||
+ return EFI_UNSUPPORTED;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ draw_boxes(gop);
|
|
||||||
+
|
|
||||||
+ SetWatchdog(0);
|
|
||||||
+ return EFI_SUCCESS;
|
|
||||||
+}
|
|
||||||
diff --git a/apps/lfbgrid.c b/apps/lfbgrid.c
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..53a255afbb9
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/apps/lfbgrid.c
|
|
||||||
@@ -0,0 +1,170 @@
|
|
||||||
+#include <efi.h>
|
|
||||||
+#include <efilib.h>
|
|
||||||
+
|
|
||||||
+extern EFI_GUID GraphicsOutputProtocol;
|
|
||||||
+
|
|
||||||
+#define be32_to_cpu(x) __builtin_bswap32(x)
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+fill_boxes(UINT32 *PixelBuffer, UINT32 Width, UINT32 Height, UINT32 Pitch,
|
|
||||||
+ EFI_GRAPHICS_PIXEL_FORMAT Format, EFI_PIXEL_BITMASK Info )
|
|
||||||
+{
|
|
||||||
+ UINT32 Red, Green;
|
|
||||||
+ UINT32 y, x, color;
|
|
||||||
+
|
|
||||||
+ switch(Format) {
|
|
||||||
+ case PixelRedGreenBlueReserved8BitPerColor:
|
|
||||||
+ Red = be32_to_cpu(0xff000000);
|
|
||||||
+ Green = be32_to_cpu(0x00ff0000);
|
|
||||||
+ break;
|
|
||||||
+ case PixelBlueGreenRedReserved8BitPerColor:
|
|
||||||
+ Red = be32_to_cpu(0x0000ff00);
|
|
||||||
+ Green = be32_to_cpu(0x00ff0000);
|
|
||||||
+ break;
|
|
||||||
+ case PixelBitMask:
|
|
||||||
+ Red = Info.RedMask;
|
|
||||||
+ Green = Info.GreenMask;
|
|
||||||
+ break;
|
|
||||||
+ case PixelBltOnly:
|
|
||||||
+ return;
|
|
||||||
+ default:
|
|
||||||
+ Print(L"Invalid pixel format\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (y = 0; y < Height; y++) {
|
|
||||||
+ color = ((y / 32) % 2 == 0) ? Red : Green;
|
|
||||||
+ for (x = 0; x < Width; x++) {
|
|
||||||
+ if (x % 32 == 0 && x != 0)
|
|
||||||
+ color = (color == Red) ? Green : Red;
|
|
||||||
+ PixelBuffer[y * Pitch + x] = color;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
|
||||||
+{
|
|
||||||
+ int i, imax;
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
|
||||||
+ UINTN NumPixels;
|
|
||||||
+ UINT32 *PixelBuffer;
|
|
||||||
+ UINT32 CopySize, BufferSize;
|
|
||||||
+#if defined(__x86_64__) || defined(__aarch64__)
|
|
||||||
+ UINT64 FrameBufferAddr;
|
|
||||||
+#elif defined(__i386__) || defined(__arm__)
|
|
||||||
+ UINT32 FrameBufferAddr;
|
|
||||||
+#else
|
|
||||||
+#error YOUR ARCH HERE
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ if (gop->Mode) {
|
|
||||||
+ imax = gop->Mode->MaxMode;
|
|
||||||
+ } else {
|
|
||||||
+ Print(L"gop->Mode is NULL\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < imax; i++) {
|
|
||||||
+ UINTN SizeOfInfo;
|
|
||||||
+ rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
|
||||||
+ &info);
|
|
||||||
+ if (EFI_ERROR(rc) && rc == EFI_NOT_STARTED) {
|
|
||||||
+ Print(L"gop->QueryMode() returned %r\n", rc);
|
|
||||||
+ Print(L"Trying to start GOP with SetMode().\n");
|
|
||||||
+ rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
|
||||||
+ gop->Mode ? gop->Mode->Mode : 0);
|
|
||||||
+ rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
|
||||||
+ &SizeOfInfo, &info);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ Print(L"%d: Bad response from QueryMode: %r (%d)\n",
|
|
||||||
+ i, rc, rc);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ NumPixels = info->VerticalResolution * info->PixelsPerScanLine;
|
|
||||||
+ BufferSize = NumPixels * sizeof(UINT32);
|
|
||||||
+ if (BufferSize == gop->Mode->FrameBufferSize) {
|
|
||||||
+ CopySize = BufferSize;
|
|
||||||
+ } else {
|
|
||||||
+ CopySize = BufferSize < gop->Mode->FrameBufferSize ?
|
|
||||||
+ BufferSize : gop->Mode->FrameBufferSize;
|
|
||||||
+ Print(L"height * pitch * pixelsize = %lu buf fb size is %lu; using %lu\n",
|
|
||||||
+ BufferSize, gop->Mode->FrameBufferSize, CopySize);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ PixelBuffer = AllocatePool(BufferSize);
|
|
||||||
+ if (!PixelBuffer) {
|
|
||||||
+ Print(L"Allocation of 0x%08lx bytes failed.\n",
|
|
||||||
+ sizeof(UINT32) * NumPixels);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ fill_boxes(PixelBuffer, info->HorizontalResolution,
|
|
||||||
+ info->VerticalResolution, info->PixelsPerScanLine,
|
|
||||||
+ info->PixelFormat, info->PixelInformation);
|
|
||||||
+
|
|
||||||
+ if (info->PixelFormat == PixelBltOnly) {
|
|
||||||
+ Print(L"No linear framebuffer on this device.\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+#if defined(__x86_64__) || defined(__aarch64__)
|
|
||||||
+ FrameBufferAddr = (UINT64)gop->Mode->FrameBufferBase;
|
|
||||||
+#elif defined(__i386__) || defined(__arm__)
|
|
||||||
+ FrameBufferAddr = (UINT32)(UINT64)gop->Mode->FrameBufferBase;
|
|
||||||
+#else
|
|
||||||
+#error YOUR ARCH HERE
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ CopyMem((VOID *)FrameBufferAddr, PixelBuffer, CopySize);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ Print(L"Never found the active video mode?\n");
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static EFI_STATUS
|
|
||||||
+SetWatchdog(UINTN seconds)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ rc = uefi_call_wrapper(BS->SetWatchdogTimer, 4, seconds, 0x1ffff,
|
|
||||||
+ 0, NULL);
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ CHAR16 Buffer[64];
|
|
||||||
+ StatusToString(Buffer, rc);
|
|
||||||
+ Print(L"Bad response from QueryMode: %s (%d)\n", Buffer, rc);
|
|
||||||
+ }
|
|
||||||
+ return rc;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+EFI_STATUS
|
|
||||||
+efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS rc;
|
|
||||||
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
|
|
||||||
+
|
|
||||||
+ InitializeLib(image_handle, systab);
|
|
||||||
+
|
|
||||||
+ SetWatchdog(10);
|
|
||||||
+
|
|
||||||
+ rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ Print(L"Could not locate GOP: %r\n", rc);
|
|
||||||
+ return rc;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!gop) {
|
|
||||||
+ Print(L"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
|
||||||
+ return EFI_UNSUPPORTED;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ draw_boxes(gop);
|
|
||||||
+
|
|
||||||
+ SetWatchdog(0);
|
|
||||||
+ return EFI_SUCCESS;
|
|
||||||
+}
|
|
||||||
diff --git a/apps/modelist.c b/apps/modelist.c
|
|
||||||
index 8d816d1d9da..26892e1d5f5 100644
|
|
||||||
--- a/apps/modelist.c
|
|
||||||
+++ b/apps/modelist.c
|
|
||||||
@@ -3,57 +3,44 @@
|
|
||||||
|
|
||||||
extern EFI_GUID GraphicsOutputProtocol;
|
|
||||||
|
|
||||||
-static int memcmp(const void *s1, const void *s2, UINTN n)
|
|
||||||
-{
|
|
||||||
- const unsigned char *c1 = s1, *c2 = s2;
|
|
||||||
- int d = 0;
|
|
||||||
-
|
|
||||||
- if (!s1 && !s2)
|
|
||||||
- return 0;
|
|
||||||
- if (s1 && !s2)
|
|
||||||
- return 1;
|
|
||||||
- if (!s1 && s2)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
- while (n--) {
|
|
||||||
- d = (int)*c1++ - (int)*c2++;
|
|
||||||
- if (d)
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- return d;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void
|
|
||||||
print_modes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
|
||||||
{
|
|
||||||
int i, imax;
|
|
||||||
EFI_STATUS rc;
|
|
||||||
|
|
||||||
- imax = gop->Mode->MaxMode;
|
|
||||||
+ if (gop->Mode) {
|
|
||||||
+ imax = gop->Mode->MaxMode;
|
|
||||||
+ Print(L"GOP reports MaxMode %d\n", imax);
|
|
||||||
+ } else {
|
|
||||||
+ Print(L"gop->Mode is NULL\n");
|
|
||||||
+ imax = 1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- Print(L"GOP reports MaxMode %d\n", imax);
|
|
||||||
for (i = 0; i < imax; i++) {
|
|
||||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
|
||||||
UINTN SizeOfInfo;
|
|
||||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
|
||||||
&info);
|
|
||||||
if (EFI_ERROR(rc) && rc == EFI_NOT_STARTED) {
|
|
||||||
+ Print(L"gop->QueryMode() returned %r\n", rc);
|
|
||||||
+ Print(L"Trying to start GOP with SetMode().\n");
|
|
||||||
rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
|
||||||
- gop->Mode->Mode);
|
|
||||||
+ gop->Mode ? gop->Mode->Mode : 0);
|
|
||||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
|
||||||
&SizeOfInfo, &info);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EFI_ERROR(rc)) {
|
|
||||||
- CHAR16 Buffer[64];
|
|
||||||
- StatusToString(Buffer, rc);
|
|
||||||
- Print(L"%d: Bad response from QueryMode: %s (%d)\n",
|
|
||||||
- i, Buffer, rc);
|
|
||||||
+ Print(L"%d: Bad response from QueryMode: %r (%d)\n",
|
|
||||||
+ i, rc, rc);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
- Print(L"%c%d: %dx%d ", memcmp(info,gop->Mode->Info,sizeof(*info)) == 0 ? '*' : ' ', i,
|
|
||||||
- info->HorizontalResolution,
|
|
||||||
- info->VerticalResolution);
|
|
||||||
+ Print(L"%c%d: %dx%d ",
|
|
||||||
+ (gop->Mode &&
|
|
||||||
+ CompareMem(info,gop->Mode->Info,sizeof(*info)) == 0
|
|
||||||
+ ) ? '*' : ' ',
|
|
||||||
+ i, info->HorizontalResolution, info->VerticalResolution);
|
|
||||||
switch(info->PixelFormat) {
|
|
||||||
case PixelRedGreenBlueReserved8BitPerColor:
|
|
||||||
Print(L"RGBR");
|
|
||||||
@@ -104,8 +91,15 @@ efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
|
||||||
SetWatchdog(10);
|
|
||||||
|
|
||||||
rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
|
||||||
- if (EFI_ERROR(rc))
|
|
||||||
+ if (EFI_ERROR(rc)) {
|
|
||||||
+ Print(L"Could not locate GOP: %r\n", rc);
|
|
||||||
return rc;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!gop) {
|
|
||||||
+ Print(L"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
|
||||||
+ return EFI_UNSUPPORTED;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
print_modes(gop);
|
|
||||||
|
|
||||||
diff --git a/apps/Makefile b/apps/Makefile
|
|
||||||
index 5fffd4254c8..4e26444c469 100644
|
|
||||||
--- a/apps/Makefile
|
|
||||||
+++ b/apps/Makefile
|
|
||||||
@@ -61,7 +61,8 @@ LOADLIBES += -T $(LDSCRIPT)
|
|
||||||
TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi \
|
|
||||||
printenv.efi t7.efi t8.efi tcc.efi modelist.efi \
|
|
||||||
route80h.efi drv0_use.efi AllocPages.efi exit.efi \
|
|
||||||
- FreePages.efi setjmp.efi debughook.efi debughook.efi.debug
|
|
||||||
+ FreePages.efi setjmp.efi debughook.efi debughook.efi.debug \
|
|
||||||
+ bltgrid.efi lfbgrid.efi
|
|
||||||
TARGET_BSDRIVERS = drv0.efi
|
|
||||||
TARGET_RTDRIVERS =
|
|
||||||
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From be57aadba6092027d21c04d4ededb2e83abe9016 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:32 -0400
|
|
||||||
Subject: [PATCH 22/25] Nerf -Werror=pragma away
|
|
||||||
|
|
||||||
Nerf -Werror=-pragma away
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index 4aa57ac5f7c..ed4b60c2423 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.15.0
|
|
||||||
|
|
482
0022-Use-EFI-canonical-names-everywhere-the-compiler-does.patch
Normal file
482
0022-Use-EFI-canonical-names-everywhere-the-compiler-does.patch
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Tue, 1 May 2018 14:12:01 -0400
|
||||||
|
Subject: [PATCH] Use EFI canonical names everywhere the compiler doesn't care.
|
||||||
|
|
||||||
|
Always use x64/X64 and aa64/AA64 unless the toolchain cares about
|
||||||
|
"x86_64" or whatnot.
|
||||||
|
|
||||||
|
Note that we still have mips64el as an arch name, which is not actually
|
||||||
|
defined in the UEFI specs.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 39 +++++++++++++++-------
|
||||||
|
README.gnuefi | 6 ++--
|
||||||
|
apps/Makefile | 6 ++--
|
||||||
|
gnuefi/Makefile | 6 ++--
|
||||||
|
gnuefi/{crt0-efi-aarch64.S => crt0-efi-aa64.S} | 2 +-
|
||||||
|
gnuefi/{crt0-efi-x86_64.S => crt0-efi-x64.S} | 2 +-
|
||||||
|
gnuefi/{elf_aarch64_efi.lds => elf_aa64_efi.lds} | 0
|
||||||
|
gnuefi/{elf_x86_64_efi.lds => elf_x64_efi.lds} | 2 +-
|
||||||
|
...lf_x86_64_fbsd_efi.lds => elf_x64_fbsd_efi.lds} | 2 +-
|
||||||
|
gnuefi/{reloc_aarch64.c => reloc_aa64.c} | 2 +-
|
||||||
|
gnuefi/{reloc_x86_64.c => reloc_x64.c} | 2 +-
|
||||||
|
inc/{aarch64 => aa64}/efibind.h | 3 ++
|
||||||
|
inc/{aarch64 => aa64}/efilibplat.h | 0
|
||||||
|
inc/{aarch64 => aa64}/efisetjmp_arch.h | 6 ++--
|
||||||
|
inc/efiapi.h | 5 ++-
|
||||||
|
inc/efidebug.h | 2 +-
|
||||||
|
inc/{x86_64 => x64}/efibind.h | 4 +--
|
||||||
|
inc/{x86_64 => x64}/efilibplat.h | 0
|
||||||
|
inc/{x86_64 => x64}/efisetjmp_arch.h | 6 ++--
|
||||||
|
inc/{x86_64 => x64}/pe.h | 0
|
||||||
|
lib/Makefile | 4 +--
|
||||||
|
lib/{aarch64 => aa64}/efi_stub.S | 0
|
||||||
|
lib/{aarch64 => aa64}/initplat.c | 0
|
||||||
|
lib/{aarch64 => aa64}/math.c | 0
|
||||||
|
lib/{aarch64 => aa64}/setjmp.S | 0
|
||||||
|
lib/{x86_64 => x64}/callwrap.c | 0
|
||||||
|
lib/{x86_64 => x64}/efi_stub.S | 0
|
||||||
|
lib/{x86_64 => x64}/initplat.c | 0
|
||||||
|
lib/{x86_64 => x64}/math.c | 0
|
||||||
|
lib/{x86_64 => x64}/setjmp.S | 0
|
||||||
|
30 files changed, 60 insertions(+), 39 deletions(-)
|
||||||
|
rename gnuefi/{crt0-efi-aarch64.S => crt0-efi-aa64.S} (98%)
|
||||||
|
rename gnuefi/{crt0-efi-x86_64.S => crt0-efi-x64.S} (97%)
|
||||||
|
rename gnuefi/{elf_aarch64_efi.lds => elf_aa64_efi.lds} (100%)
|
||||||
|
rename gnuefi/{elf_x86_64_efi.lds => elf_x64_efi.lds} (93%)
|
||||||
|
rename gnuefi/{elf_x86_64_fbsd_efi.lds => elf_x64_fbsd_efi.lds} (93%)
|
||||||
|
rename gnuefi/{reloc_aarch64.c => reloc_aa64.c} (97%)
|
||||||
|
rename gnuefi/{reloc_x86_64.c => reloc_x64.c} (97%)
|
||||||
|
rename inc/{aarch64 => aa64}/efibind.h (98%)
|
||||||
|
rename inc/{aarch64 => aa64}/efilibplat.h (100%)
|
||||||
|
rename inc/{aarch64 => aa64}/efisetjmp_arch.h (78%)
|
||||||
|
rename inc/{x86_64 => x64}/efibind.h (99%)
|
||||||
|
rename inc/{x86_64 => x64}/efilibplat.h (100%)
|
||||||
|
rename inc/{x86_64 => x64}/efisetjmp_arch.h (72%)
|
||||||
|
rename inc/{x86_64 => x64}/pe.h (100%)
|
||||||
|
rename lib/{aarch64 => aa64}/efi_stub.S (100%)
|
||||||
|
rename lib/{aarch64 => aa64}/initplat.c (100%)
|
||||||
|
rename lib/{aarch64 => aa64}/math.c (100%)
|
||||||
|
rename lib/{aarch64 => aa64}/setjmp.S (100%)
|
||||||
|
rename lib/{x86_64 => x64}/callwrap.c (100%)
|
||||||
|
rename lib/{x86_64 => x64}/efi_stub.S (100%)
|
||||||
|
rename lib/{x86_64 => x64}/initplat.c (100%)
|
||||||
|
rename lib/{x86_64 => x64}/math.c (100%)
|
||||||
|
rename lib/{x86_64 => x64}/setjmp.S (100%)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 5d34ff47157..585f3a00aa5 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -62,17 +62,32 @@ OBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy
|
||||||
|
|
||||||
|
# Host/target identification
|
||||||
|
OS := $(shell uname -s)
|
||||||
|
-HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
-ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
+HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
+ -e s,aarch64,aa64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
+ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
+ -e s,aarch64,aa64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
+BFD_ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x86_64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
|
||||||
|
# Get ARCH from the compiler if cross compiling
|
||||||
|
ifneq ($(CROSS_COMPILE),)
|
||||||
|
- override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-# FreeBSD (and possibly others) reports amd64 instead of x86_64
|
||||||
|
-ifeq ($(ARCH),amd64)
|
||||||
|
- override ARCH := x86_64
|
||||||
|
+ override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
+ -e s,aarch64,aa64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
@@ -95,12 +110,12 @@ endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH),ia32)
|
||||||
|
CFLAGS += -mno-mmx -mno-sse
|
||||||
|
- ifeq ($(HOSTARCH),x86_64)
|
||||||
|
+ ifeq ($(HOSTARCH),x64)
|
||||||
|
ARCH3264 = -m32
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifeq ($(ARCH),x86_64)
|
||||||
|
+ifeq ($(ARCH),x64)
|
||||||
|
GCCVERSION := $(shell $(CC) -dumpversion | cut -f1 -d.)
|
||||||
|
GCCMINOR := $(shell $(CC) -dumpversion | cut -f2 -d.)
|
||||||
|
USING_CLANG := $(shell $(CC) -v 2>&1 | grep -q 'clang version' && echo clang)
|
||||||
|
@@ -122,7 +137,7 @@ ifeq ($(ARCH),x86_64)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifneq (,$(filter $(ARCH),ia32 x86_64))
|
||||||
|
+ifneq (,$(filter $(ARCH),ia32 x64))
|
||||||
|
# Disable AVX, if the compiler supports that.
|
||||||
|
CC_CAN_DISABLE_AVX=$(shell $(CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo 1)
|
||||||
|
ifeq ($(CC_CAN_DISABLE_AVX), 1)
|
||||||
|
@@ -139,7 +154,7 @@ endif
|
||||||
|
# Set HAVE_EFI_OBJCOPY if objcopy understands --target efi-[app|bsdrv|rtdrv],
|
||||||
|
# otherwise we need to compose the PE/COFF header using the assembler
|
||||||
|
#
|
||||||
|
-ifneq ($(ARCH),aarch64)
|
||||||
|
+ifneq ($(ARCH),aa64)
|
||||||
|
ifneq ($(ARCH),arm)
|
||||||
|
ifneq ($(ARCH),mips64el)
|
||||||
|
export HAVE_EFI_OBJCOPY=y
|
||||||
|
diff --git a/README.gnuefi b/README.gnuefi
|
||||||
|
index a65e5f9042a..dd714de116d 100644
|
||||||
|
--- a/README.gnuefi
|
||||||
|
+++ b/README.gnuefi
|
||||||
|
@@ -100,7 +100,7 @@ the appropriate compiler, assembler, linker, ar, and ranlib binaries,
|
||||||
|
respectively.
|
||||||
|
|
||||||
|
If you're working in a cross-development environment, be sure to set
|
||||||
|
-macro ARCH to the desired target architecture ("ia32" for x86, "x86_64" for
|
||||||
|
+macro ARCH to the desired target architecture ("ia32" for x86, "x64" for
|
||||||
|
x86_64 and "ia64" for IA-64). For convenience, this can also be done from
|
||||||
|
the make command line (e.g., "make ARCH=ia64").
|
||||||
|
|
||||||
|
@@ -225,7 +225,7 @@ environment addresses each of these issues.
|
||||||
|
In order to satisfy the COFF constraint of page-sized and page-aligned
|
||||||
|
sections, the GNU EFI build environment uses the special linker script
|
||||||
|
in gnuefi/elf_$(ARCH)_efi.lds where $(ARCH) is the target architecture
|
||||||
|
-("ia32" for x86, "x86_64" for x86_64 and "ia64" for IA-64).
|
||||||
|
+("ia32" for x86, "x64" for x86_64 and "ia64" for IA-64).
|
||||||
|
This script is set up to create only eight COFF section, each page aligned
|
||||||
|
and page sized.These eight sections are used to group together the much
|
||||||
|
greater number of sections that are typically present in ELF object files.
|
||||||
|
@@ -319,7 +319,7 @@ environment is to:
|
||||||
|
|
||||||
|
The self-relocator is of course architecture dependent. The x86
|
||||||
|
version can be found in gnuefi/reloc_ia32.c, the x86_64 version
|
||||||
|
-can be found in gnuefi/reloc_x86_64.c and the IA-64 version can be
|
||||||
|
+can be found in gnuefi/reloc_x64.c and the IA-64 version can be
|
||||||
|
found in gnuefi/reloc_ia64.S.
|
||||||
|
|
||||||
|
The self-relocator operates as follows: the startup code invokes it
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index 310c6fdb5fc..a95620cba2d 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -68,9 +68,9 @@ TARGET_RTDRIVERS =
|
||||||
|
|
||||||
|
ifneq ($(HAVE_EFI_OBJCOPY),)
|
||||||
|
|
||||||
|
-FORMAT := --target efi-app-$(ARCH)
|
||||||
|
-$(TARGET_BSDRIVERS): FORMAT=--target efi-bsdrv-$(ARCH)
|
||||||
|
-$(TARGET_RTDRIVERS): FORMAT=--target efi-rtdrv-$(ARCH)
|
||||||
|
+FORMAT := --target efi-app-$(BFD_ARCH)
|
||||||
|
+$(TARGET_BSDRIVERS): FORMAT=--target efi-bsdrv-$(BFD_ARCH)
|
||||||
|
+$(TARGET_RTDRIVERS): FORMAT=--target efi-rtdrv-$(BFD_ARCH)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index 10d4e7addd0..df67ee83911 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -47,8 +47,8 @@ FILES = reloc_$(ARCH)
|
||||||
|
|
||||||
|
OBJS = $(FILES:%=%.o)
|
||||||
|
|
||||||
|
-# on aarch64, avoid jump tables before all relocations have been processed
|
||||||
|
-reloc_aarch64.o: CFLAGS += -fno-jump-tables
|
||||||
|
+# on aa64, avoid jump tables before all relocations have been processed
|
||||||
|
+reloc_aa64.o: CFLAGS += -fno-jump-tables
|
||||||
|
|
||||||
|
TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
|
||||||
|
|
||||||
|
@@ -65,7 +65,7 @@ install:
|
||||||
|
mkdir -p $(INSTALLROOT)$(LIBDIR)
|
||||||
|
$(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(LIBDIR)
|
||||||
|
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
- ifeq ($(ARCH),x86_64)
|
||||||
|
+ ifeq ($(ARCH),x64)
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)
|
||||||
|
else
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)
|
||||||
|
diff --git a/gnuefi/crt0-efi-aarch64.S b/gnuefi/crt0-efi-aa64.S
|
||||||
|
similarity index 98%
|
||||||
|
rename from gnuefi/crt0-efi-aarch64.S
|
||||||
|
rename to gnuefi/crt0-efi-aa64.S
|
||||||
|
index c300d89bdfd..d6e610b8c79 100644
|
||||||
|
--- a/gnuefi/crt0-efi-aarch64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-aa64.S
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/*
|
||||||
|
- * crt0-efi-aarch64.S - PE/COFF header for AArch64 EFI applications
|
||||||
|
+ * crt0-efi-aa64.S - PE/COFF header for AArch64 EFI applications
|
||||||
|
*
|
||||||
|
* Copright (C) 2014 Linaro Ltd. <ard.biesheuvel@linaro.org>
|
||||||
|
*
|
||||||
|
diff --git a/gnuefi/crt0-efi-x86_64.S b/gnuefi/crt0-efi-x64.S
|
||||||
|
similarity index 97%
|
||||||
|
rename from gnuefi/crt0-efi-x86_64.S
|
||||||
|
rename to gnuefi/crt0-efi-x64.S
|
||||||
|
index 6839150a72e..6533af7461f 100644
|
||||||
|
--- a/gnuefi/crt0-efi-x86_64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-x64.S
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* crt0-efi-x86_64.S - x86_64 EFI startup code.
|
||||||
|
+/* crt0-efi-x64.S - x86_64 EFI startup code.
|
||||||
|
Copyright (C) 1999 Hewlett-Packard Co.
|
||||||
|
Contributed by David Mosberger <davidm@hpl.hp.com>.
|
||||||
|
Copyright (C) 2005 Intel Co.
|
||||||
|
diff --git a/gnuefi/elf_aarch64_efi.lds b/gnuefi/elf_aa64_efi.lds
|
||||||
|
similarity index 100%
|
||||||
|
rename from gnuefi/elf_aarch64_efi.lds
|
||||||
|
rename to gnuefi/elf_aa64_efi.lds
|
||||||
|
diff --git a/gnuefi/elf_x86_64_efi.lds b/gnuefi/elf_x64_efi.lds
|
||||||
|
similarity index 93%
|
||||||
|
rename from gnuefi/elf_x86_64_efi.lds
|
||||||
|
rename to gnuefi/elf_x64_efi.lds
|
||||||
|
index 7be59023510..c7a105898c8 100644
|
||||||
|
--- a/gnuefi/elf_x86_64_efi.lds
|
||||||
|
+++ b/gnuefi/elf_x64_efi.lds
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* Same as elf_x86_64_fbsd_efi.lds, except for OUTPUT_FORMAT below - KEEP IN SYNC */
|
||||||
|
+/* Same as elf_x64_fbsd_efi.lds, except for OUTPUT_FORMAT below - KEEP IN SYNC */
|
||||||
|
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||||
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
|
ENTRY(_start)
|
||||||
|
diff --git a/gnuefi/elf_x86_64_fbsd_efi.lds b/gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
similarity index 93%
|
||||||
|
rename from gnuefi/elf_x86_64_fbsd_efi.lds
|
||||||
|
rename to gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
index fe1f3342cae..705719bf68b 100644
|
||||||
|
--- a/gnuefi/elf_x86_64_fbsd_efi.lds
|
||||||
|
+++ b/gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* Same as elf_x86_64_efi.lds, except for OUTPUT_FORMAT below - KEEP IN SYNC */
|
||||||
|
+/* Same as elf_x64_efi.lds, except for OUTPUT_FORMAT below - KEEP IN SYNC */
|
||||||
|
OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
|
||||||
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
|
ENTRY(_start)
|
||||||
|
diff --git a/gnuefi/reloc_aarch64.c b/gnuefi/reloc_aa64.c
|
||||||
|
similarity index 97%
|
||||||
|
rename from gnuefi/reloc_aarch64.c
|
||||||
|
rename to gnuefi/reloc_aa64.c
|
||||||
|
index 086727961c2..f2ac52b1269 100644
|
||||||
|
--- a/gnuefi/reloc_aarch64.c
|
||||||
|
+++ b/gnuefi/reloc_aa64.c
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* reloc_aarch64.c - position independent x86 ELF shared object relocator
|
||||||
|
+/* reloc_aa64.c - position independent ARM Aarch64 ELF shared object relocator
|
||||||
|
Copyright (C) 2014 Linaro Ltd. <ard.biesheuvel@linaro.org>
|
||||||
|
Copyright (C) 1999 Hewlett-Packard Co.
|
||||||
|
Contributed by David Mosberger <davidm@hpl.hp.com>.
|
||||||
|
diff --git a/gnuefi/reloc_x86_64.c b/gnuefi/reloc_x64.c
|
||||||
|
similarity index 97%
|
||||||
|
rename from gnuefi/reloc_x86_64.c
|
||||||
|
rename to gnuefi/reloc_x64.c
|
||||||
|
index 04b75b29fda..09493227a7b 100644
|
||||||
|
--- a/gnuefi/reloc_x86_64.c
|
||||||
|
+++ b/gnuefi/reloc_x64.c
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* reloc_x86_64.c - position independent x86_64 ELF shared object relocator
|
||||||
|
+/* reloc_x64.c - position independent x86_64 ELF shared object relocator
|
||||||
|
Copyright (C) 1999 Hewlett-Packard Co.
|
||||||
|
Contributed by David Mosberger <davidm@hpl.hp.com>.
|
||||||
|
Copyright (C) 2005 Intel Co.
|
||||||
|
diff --git a/inc/aarch64/efibind.h b/inc/aa64/efibind.h
|
||||||
|
similarity index 98%
|
||||||
|
rename from inc/aarch64/efibind.h
|
||||||
|
rename to inc/aa64/efibind.h
|
||||||
|
index c2c546b892a..c4eafa0d8a8 100644
|
||||||
|
--- a/inc/aarch64/efibind.h
|
||||||
|
+++ b/inc/aa64/efibind.h
|
||||||
|
@@ -15,6 +15,8 @@
|
||||||
|
* either version 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#ifndef GNU_EFI_AA64_EFI_BIND_H
|
||||||
|
+#define GNU_EFI_AA64_EFI_BIND_H
|
||||||
|
#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && !defined(__cplusplus)
|
||||||
|
|
||||||
|
// ANSI C 1999/2000 stdint.h integer width declarations
|
||||||
|
@@ -156,3 +158,4 @@ typedef uint64_t UINTN;
|
||||||
|
|
||||||
|
#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
|
||||||
|
#define EFI_FUNCTION
|
||||||
|
+#endif /* GNU_EFI_AA64_EFI_BIND_H */
|
||||||
|
diff --git a/inc/aarch64/efilibplat.h b/inc/aa64/efilibplat.h
|
||||||
|
similarity index 100%
|
||||||
|
rename from inc/aarch64/efilibplat.h
|
||||||
|
rename to inc/aa64/efilibplat.h
|
||||||
|
diff --git a/inc/aarch64/efisetjmp_arch.h b/inc/aa64/efisetjmp_arch.h
|
||||||
|
similarity index 78%
|
||||||
|
rename from inc/aarch64/efisetjmp_arch.h
|
||||||
|
rename to inc/aa64/efisetjmp_arch.h
|
||||||
|
index 8dbce07821f..8ec3eeb9a47 100644
|
||||||
|
--- a/inc/aarch64/efisetjmp_arch.h
|
||||||
|
+++ b/inc/aa64/efisetjmp_arch.h
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
-#ifndef GNU_EFI_AARCH64_SETJMP_H
|
||||||
|
-#define GNU_EFI_AARCH64_SETJMP_H
|
||||||
|
+#ifndef GNU_EFI_AA64_SETJMP_H
|
||||||
|
+#define GNU_EFI_AA64_SETJMP_H
|
||||||
|
|
||||||
|
#define JMPBUF_ALIGN 8
|
||||||
|
|
||||||
|
@@ -30,4 +30,4 @@ typedef struct {
|
||||||
|
UINT64 D15;
|
||||||
|
} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
-#endif /* GNU_EFI_AARCH64_SETJMP_H */
|
||||||
|
+#endif /* GNU_EFI_AA64_SETJMP_H */
|
||||||
|
diff --git a/inc/efiapi.h b/inc/efiapi.h
|
||||||
|
index bdf5de26a3f..2f6ff582252 100644
|
||||||
|
--- a/inc/efiapi.h
|
||||||
|
+++ b/inc/efiapi.h
|
||||||
|
@@ -338,8 +338,11 @@ EFI_STATUS
|
||||||
|
#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if !defined(EFI_IMAGE_MACHINE_AA64)
|
||||||
|
+#define EFI_IMAGE_MACHINE_AA64 0xAA64
|
||||||
|
+#endif
|
||||||
|
#if !defined(EFI_IMAGE_MACHINE_AARCH64)
|
||||||
|
-#define EFI_IMAGE_MACHINE_AARCH64 0xAA64
|
||||||
|
+#define EFI_IMAGE_MACHINE_AARCH64 EFI_IMAGE_MACHINE_AA64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Image Entry prototype
|
||||||
|
diff --git a/inc/efidebug.h b/inc/efidebug.h
|
||||||
|
index 8e54dcda842..3649edf26d1 100644
|
||||||
|
--- a/inc/efidebug.h
|
||||||
|
+++ b/inc/efidebug.h
|
||||||
|
@@ -533,7 +533,7 @@ typedef enum {
|
||||||
|
IsaIpf = EFI_IMAGE_MACHINE_IA64,
|
||||||
|
IsaEbc = EFI_IMAGE_MACHINE_EBC,
|
||||||
|
IsaArm = EFI_IMAGE_MACHINE_ARMTHUMB_MIXED,
|
||||||
|
-// IsaArm64 = EFI_IMAGE_MACHINE_AARCH64
|
||||||
|
+// IsaArm64 = EFI_IMAGE_MACHINE_AA64
|
||||||
|
} EFI_INSTRUCTION_SET_ARCHITECTURE;
|
||||||
|
|
||||||
|
//
|
||||||
|
diff --git a/inc/x86_64/efibind.h b/inc/x64/efibind.h
|
||||||
|
similarity index 99%
|
||||||
|
rename from inc/x86_64/efibind.h
|
||||||
|
rename to inc/x64/efibind.h
|
||||||
|
index 31e9e119d74..2750ab9be7d 100644
|
||||||
|
--- a/inc/x86_64/efibind.h
|
||||||
|
+++ b/inc/x64/efibind.h
|
||||||
|
@@ -16,8 +16,8 @@ Abstract:
|
||||||
|
Revision History
|
||||||
|
|
||||||
|
--*/
|
||||||
|
-#ifndef X86_64_EFI_BIND
|
||||||
|
-#define X86_64_EFI_BIND
|
||||||
|
+#ifndef X64_EFI_BIND
|
||||||
|
+#define X64_EFI_BIND
|
||||||
|
#ifndef __GNUC__
|
||||||
|
#pragma pack()
|
||||||
|
#endif
|
||||||
|
diff --git a/inc/x86_64/efilibplat.h b/inc/x64/efilibplat.h
|
||||||
|
similarity index 100%
|
||||||
|
rename from inc/x86_64/efilibplat.h
|
||||||
|
rename to inc/x64/efilibplat.h
|
||||||
|
diff --git a/inc/x86_64/efisetjmp_arch.h b/inc/x64/efisetjmp_arch.h
|
||||||
|
similarity index 72%
|
||||||
|
rename from inc/x86_64/efisetjmp_arch.h
|
||||||
|
rename to inc/x64/efisetjmp_arch.h
|
||||||
|
index b1ad1fe3087..cc8fd350517 100644
|
||||||
|
--- a/inc/x86_64/efisetjmp_arch.h
|
||||||
|
+++ b/inc/x64/efisetjmp_arch.h
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
-#ifndef GNU_EFI_X86_64_SETJMP_H
|
||||||
|
-#define GNU_EFI_X86_64_SETJMP_H
|
||||||
|
+#ifndef GNU_EFI_X64_SETJMP_H
|
||||||
|
+#define GNU_EFI_X64_SETJMP_H
|
||||||
|
|
||||||
|
#define JMPBUF_ALIGN 8
|
||||||
|
|
||||||
|
@@ -19,4 +19,4 @@ typedef struct {
|
||||||
|
UINT8 XmmBuffer[160]; // XMM6 - XMM15
|
||||||
|
} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
|
||||||
|
|
||||||
|
-#endif /* GNU_EFI_X86_64_SETJMP_H */
|
||||||
|
+#endif /* GNU_EFI_X64_SETJMP_H */
|
||||||
|
diff --git a/inc/x86_64/pe.h b/inc/x64/pe.h
|
||||||
|
similarity index 100%
|
||||||
|
rename from inc/x86_64/pe.h
|
||||||
|
rename to inc/x64/pe.h
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 0e6410dac55..8bf94000e33 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -53,7 +53,7 @@ ifeq ($(ARCH),ia64)
|
||||||
|
FILES += $(ARCH)/salpal $(ARCH)/palproc
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifeq ($(ARCH),x86_64)
|
||||||
|
+ifeq ($(ARCH),x64)
|
||||||
|
FILES += $(ARCH)/callwrap $(ARCH)/efi_stub
|
||||||
|
endif
|
||||||
|
|
||||||
|
@@ -64,7 +64,7 @@ endif
|
||||||
|
|
||||||
|
OBJS = $(FILES:%=%.o)
|
||||||
|
|
||||||
|
-SUBDIRS = ia32 x86_64 ia64 aarch64 arm mips64el runtime
|
||||||
|
+SUBDIRS = ia32 x64 ia64 aa64 arm mips64el runtime
|
||||||
|
|
||||||
|
LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)
|
||||||
|
|
||||||
|
diff --git a/lib/aarch64/efi_stub.S b/lib/aa64/efi_stub.S
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/aarch64/efi_stub.S
|
||||||
|
rename to lib/aa64/efi_stub.S
|
||||||
|
diff --git a/lib/aarch64/initplat.c b/lib/aa64/initplat.c
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/aarch64/initplat.c
|
||||||
|
rename to lib/aa64/initplat.c
|
||||||
|
diff --git a/lib/aarch64/math.c b/lib/aa64/math.c
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/aarch64/math.c
|
||||||
|
rename to lib/aa64/math.c
|
||||||
|
diff --git a/lib/aarch64/setjmp.S b/lib/aa64/setjmp.S
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/aarch64/setjmp.S
|
||||||
|
rename to lib/aa64/setjmp.S
|
||||||
|
diff --git a/lib/x86_64/callwrap.c b/lib/x64/callwrap.c
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/x86_64/callwrap.c
|
||||||
|
rename to lib/x64/callwrap.c
|
||||||
|
diff --git a/lib/x86_64/efi_stub.S b/lib/x64/efi_stub.S
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/x86_64/efi_stub.S
|
||||||
|
rename to lib/x64/efi_stub.S
|
||||||
|
diff --git a/lib/x86_64/initplat.c b/lib/x64/initplat.c
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/x86_64/initplat.c
|
||||||
|
rename to lib/x64/initplat.c
|
||||||
|
diff --git a/lib/x86_64/math.c b/lib/x64/math.c
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/x86_64/math.c
|
||||||
|
rename to lib/x64/math.c
|
||||||
|
diff --git a/lib/x86_64/setjmp.S b/lib/x64/setjmp.S
|
||||||
|
similarity index 100%
|
||||||
|
rename from lib/x86_64/setjmp.S
|
||||||
|
rename to lib/x64/setjmp.S
|
@ -1,72 +0,0 @@
|
|||||||
From 656e495d515b0fc1f01add164aa4bba9a49ceb31 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:34 -0400
|
|
||||||
Subject: [PATCH 23/25] 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>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Make.defaults | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Make.defaults b/Make.defaults
|
|
||||||
index ed4b60c2423..ba743f17893 100755
|
|
||||||
--- a/Make.defaults
|
|
||||||
+++ b/Make.defaults
|
|
||||||
@@ -177,7 +177,7 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
|
||||||
$(if $(findstring gcc,$(CC)),-fno-merge-all-constants,)
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ARFLAGS += -U
|
|
||||||
+ARFLAGS := rDv
|
|
||||||
ASFLAGS += $(ARCH3264)
|
|
||||||
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \
|
|
||||||
--build-id=sha1
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
56
0023-Fix-a-minor-coverity-complaint-in-some-apps.patch
Normal file
56
0023-Fix-a-minor-coverity-complaint-in-some-apps.patch
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Mon, 11 Jun 2018 13:41:05 -0400
|
||||||
|
Subject: [PATCH] Fix a minor coverity complaint in some apps
|
||||||
|
|
||||||
|
Coverity added a new kind of check, and it noticed some minor errors
|
||||||
|
with some types in two of the apps here, both of the same form:
|
||||||
|
|
||||||
|
1. gnu-efi-3.0.6/apps/lfbgrid.c:91: overflow_before_widen: Potentially
|
||||||
|
overflowing expression "info->VerticalResolution *
|
||||||
|
info->PixelsPerScanLine" with type "unsigned int" (32 bits, unsigned) is
|
||||||
|
evaluated using 32-bit arithmetic, and then used in a context that
|
||||||
|
expects an expression of type "UINTN" (64 bits, unsigned).
|
||||||
|
|
||||||
|
1. gnu-efi-3.0.6/apps/bltgrid.c:67: overflow_before_widen: Potentially
|
||||||
|
overflowing expression "info->VerticalResolution *
|
||||||
|
info->HorizontalResolution" with type "unsigned int" (32 bits, unsigned)
|
||||||
|
is evaluated using 32-bit arithmetic, and then used in a context that
|
||||||
|
expects an expression of type "UINTN" (64 bits, unsigned).
|
||||||
|
|
||||||
|
This resolves both issues.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
apps/bltgrid.c | 3 ++-
|
||||||
|
apps/lfbgrid.c | 3 ++-
|
||||||
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/apps/bltgrid.c b/apps/bltgrid.c
|
||||||
|
index 2adde6a3211..a0eb8c779e4 100644
|
||||||
|
--- a/apps/bltgrid.c
|
||||||
|
+++ b/apps/bltgrid.c
|
||||||
|
@@ -64,7 +64,8 @@ draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||||
|
if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
- NumPixels = info->VerticalResolution * info->HorizontalResolution;
|
||||||
|
+ NumPixels = (UINTN)info->VerticalResolution
|
||||||
|
+ * (UINTN)info->HorizontalResolution;
|
||||||
|
BufferSize = NumPixels * sizeof(UINT32);
|
||||||
|
|
||||||
|
PixelBuffer = AllocatePool(BufferSize);
|
||||||
|
diff --git a/apps/lfbgrid.c b/apps/lfbgrid.c
|
||||||
|
index 53a255afbb9..ac50f4eafa9 100644
|
||||||
|
--- a/apps/lfbgrid.c
|
||||||
|
+++ b/apps/lfbgrid.c
|
||||||
|
@@ -88,7 +88,8 @@ draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||||
|
if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
- NumPixels = info->VerticalResolution * info->PixelsPerScanLine;
|
||||||
|
+ NumPixels = (UINTN)info->VerticalResolution
|
||||||
|
+ * (UINTN)info->PixelsPerScanLine;
|
||||||
|
BufferSize = NumPixels * sizeof(UINT32);
|
||||||
|
if (BufferSize == gop->Mode->FrameBufferSize) {
|
||||||
|
CopySize = BufferSize;
|
@ -1,119 +0,0 @@
|
|||||||
From b030bfce35fe4b9a4eec88442e2027e4d6ec60de Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Tue, 13 Mar 2018 15:20:35 -0400
|
|
||||||
Subject: [PATCH 24/25] Add debug helper applications
|
|
||||||
|
|
||||||
Add debug helper applications.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
apps/setdbg.c | 37 +++++++++++++++++++++++++++++++++++++
|
|
||||||
apps/unsetdbg.c | 37 +++++++++++++++++++++++++++++++++++++
|
|
||||||
apps/Makefile | 2 +-
|
|
||||||
3 files changed, 75 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 apps/setdbg.c
|
|
||||||
create mode 100644 apps/unsetdbg.c
|
|
||||||
|
|
||||||
diff --git a/apps/setdbg.c b/apps/setdbg.c
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..897140ec342
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/apps/setdbg.c
|
|
||||||
@@ -0,0 +1,37 @@
|
|
||||||
+#include <efi.h>
|
|
||||||
+#include <efilib.h>
|
|
||||||
+
|
|
||||||
+EFI_GUID GRUB_EFI_GRUB_VARIABLE_GUID = {0x91376aff,0xcba6,0x42be,{0x94,0x9d,0x06,0xfd,0xe8,0x11,0x28,0xe8}};
|
|
||||||
+EFI_GUID SHIM_GUID = {0x605dab50,0xe046,0x4300,{0xab,0xb6,0x3d,0xd8,0x10,0xdd,0x8b,0x23}};
|
|
||||||
+
|
|
||||||
+char grubenv[] = "# GRUB Environment Block\n\
|
|
||||||
+debug=tcp,http,net\n\
|
|
||||||
+####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################";
|
|
||||||
+
|
|
||||||
+EFI_STATUS
|
|
||||||
+efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS status;
|
|
||||||
+ InitializeLib(image, systab);
|
|
||||||
+#if 0
|
|
||||||
+ UINT8 data = 1;
|
|
||||||
+
|
|
||||||
+ status = RT->SetVariable(L"SHIM_DEBUG", &SHIM_GUID,
|
|
||||||
+ EFI_VARIABLE_NON_VOLATILE |
|
|
||||||
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
|
||||||
+ EFI_VARIABLE_RUNTIME_ACCESS,
|
|
||||||
+ sizeof(data), &data);
|
|
||||||
+ if (EFI_ERROR(status))
|
|
||||||
+ Print(L"SetVariable failed: %r\n", status);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ status = RT->SetVariable(L"GRUB_ENV", &SHIM_GUID,
|
|
||||||
+ EFI_VARIABLE_NON_VOLATILE |
|
|
||||||
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
|
||||||
+ EFI_VARIABLE_RUNTIME_ACCESS,
|
|
||||||
+ sizeof(grubenv)-1, grubenv);
|
|
||||||
+ if (EFI_ERROR(status))
|
|
||||||
+ Print(L"SetVariable(GRUB_ENV) failed: %r\n", status);
|
|
||||||
+
|
|
||||||
+ return EFI_SUCCESS;
|
|
||||||
+}
|
|
||||||
diff --git a/apps/unsetdbg.c b/apps/unsetdbg.c
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..731e09b1343
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/apps/unsetdbg.c
|
|
||||||
@@ -0,0 +1,37 @@
|
|
||||||
+#include <efi.h>
|
|
||||||
+#include <efilib.h>
|
|
||||||
+
|
|
||||||
+EFI_GUID GRUB_EFI_GRUB_VARIABLE_GUID = {0x91376aff,0xcba6,0x42be,{0x94,0x9d,0x06,0xfd,0xe8,0x11,0x28,0xe8}};
|
|
||||||
+EFI_GUID SHIM_GUID = {0x605dab50,0xe046,0x4300,{0xab,0xb6,0x3d,0xd8,0x10,0xdd,0x8b,0x23}};
|
|
||||||
+
|
|
||||||
+char grubenv[] = "# GRUB Environment Block\n\
|
|
||||||
+debug=all\n\
|
|
||||||
+#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################";
|
|
||||||
+
|
|
||||||
+EFI_STATUS
|
|
||||||
+efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
|
||||||
+{
|
|
||||||
+ EFI_STATUS status;
|
|
||||||
+ UINT8 data = 1;
|
|
||||||
+ InitializeLib(image, systab);
|
|
||||||
+
|
|
||||||
+ status = RT->SetVariable(L"SHIM_DEBUG", &SHIM_GUID,
|
|
||||||
+ EFI_VARIABLE_NON_VOLATILE |
|
|
||||||
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
|
||||||
+ EFI_VARIABLE_RUNTIME_ACCESS,
|
|
||||||
+ 0, &data);
|
|
||||||
+ if (EFI_ERROR(status))
|
|
||||||
+ Print(L"SetVariable failed: %r\n", status);
|
|
||||||
+
|
|
||||||
+#if 0
|
|
||||||
+ status = RT->SetVariable(L"GRUB_ENV", &SHIM_GUID,
|
|
||||||
+ EFI_VARIABLE_NON_VOLATILE |
|
|
||||||
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
|
||||||
+ EFI_VARIABLE_RUNTIME_ACCESS,
|
|
||||||
+ sizeof(grubenv)-1, grubenv);
|
|
||||||
+ if (EFI_ERROR(status))
|
|
||||||
+ Print(L"SetVariable(GRUB_ENV) failed: %r\n", status);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ return EFI_SUCCESS;
|
|
||||||
+}
|
|
||||||
diff --git a/apps/Makefile b/apps/Makefile
|
|
||||||
index 4e26444c469..4e1b69a38c8 100644
|
|
||||||
--- a/apps/Makefile
|
|
||||||
+++ b/apps/Makefile
|
|
||||||
@@ -62,7 +62,7 @@ TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi \
|
|
||||||
printenv.efi t7.efi t8.efi tcc.efi modelist.efi \
|
|
||||||
route80h.efi drv0_use.efi AllocPages.efi exit.efi \
|
|
||||||
FreePages.efi setjmp.efi debughook.efi debughook.efi.debug \
|
|
||||||
- bltgrid.efi lfbgrid.efi
|
|
||||||
+ bltgrid.efi lfbgrid.efi setdbg.efi unsetdbg.efi
|
|
||||||
TARGET_BSDRIVERS = drv0.efi
|
|
||||||
TARGET_RTDRIVERS =
|
|
||||||
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:45:38 -0400
|
||||||
|
Subject: [PATCH] Add stuff that's got weird characters to .gitattributes
|
||||||
|
|
||||||
|
Some of these files will be removed in a later patch, but they need to
|
||||||
|
stay in .gitattributes until after the next release, because they make
|
||||||
|
patch application break in weird ways.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
.gitattributes | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
create mode 100644 .gitattributes
|
||||||
|
|
||||||
|
diff --git a/.gitattributes b/.gitattributes
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..b9c1467125b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/.gitattributes
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+inc/inc.mak binary
|
||||||
|
+inc/make.inf binary
|
||||||
|
+inc/makefile.hdr binary
|
||||||
|
+inc/protocol/efidbg.h binary
|
||||||
|
+inc/protocol/ia64/eficontext.h binary
|
||||||
|
+inc/protocol/make.inf binary
|
||||||
|
+inc/protocol/makefile.hdr binary
|
@ -1,26 +0,0 @@
|
|||||||
From fc5af9e47fb63fbadf6acd218abc60352ce41e31 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
Date: Wed, 14 Mar 2018 14:54:51 -0400
|
|
||||||
Subject: [PATCH 25/25] Bump revision from VERSION = 3.0.7 to VERSION = 3.0.8
|
|
||||||
|
|
||||||
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index a9f7e134e14..4e58e029e7f 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -34,7 +34,7 @@
|
|
||||||
# SUCH DAMAGE.
|
|
||||||
#
|
|
||||||
|
|
||||||
-VERSION = 3.0.7
|
|
||||||
+VERSION = 3.0.8
|
|
||||||
|
|
||||||
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
||||||
SRCDIR = $(dir $(MKFILE_PATH))
|
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
148
0025-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
Normal file
148
0025-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Thu, 19 Jul 2018 13:12:44 -0400
|
||||||
|
Subject: [PATCH] Get rid of some unused junk that has the BSD 4-clause
|
||||||
|
license.
|
||||||
|
|
||||||
|
We don't need any of this, and its license is not GPL compatible.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
inc/Makefile | 4 ----
|
||||||
|
inc/protocol/efidbg.h | Bin 6634 -> 0 bytes
|
||||||
|
inc/protocol/ia64/eficontext.h | Bin 5111 -> 0 bytes
|
||||||
|
inc/protocol/makefile.hdr | Bin 640 -> 0 bytes
|
||||||
|
4 files changed, 4 deletions(-)
|
||||||
|
delete mode 100644 inc/protocol/efidbg.h
|
||||||
|
delete mode 100644 inc/protocol/ia64/eficontext.h
|
||||||
|
delete mode 100644 inc/protocol/makefile.hdr
|
||||||
|
|
||||||
|
diff --git a/inc/Makefile b/inc/Makefile
|
||||||
|
index 273d30307ae..dd36bb0103d 100644
|
||||||
|
--- a/inc/Makefile
|
||||||
|
+++ b/inc/Makefile
|
||||||
|
@@ -19,9 +19,5 @@ install:
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/*.h $(INSTALLROOT)$(PREFIX)/include/efi
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/$(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
|
||||||
|
-ifeq ($(ARCH),ia64)
|
||||||
|
- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/protocol/ia64/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64
|
||||||
|
-endif
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
diff --git a/inc/protocol/efidbg.h b/inc/protocol/efidbg.h
|
||||||
|
deleted file mode 100644
|
||||||
|
index 1f95a70bb42f7b2669fa362f80bc50fe2663aaa8..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 6634
|
||||||
|
zcmcIpS##P*7k!3b(KUIPgaR95AZGH^NDWpEMvNr9RDD&9j2cH3j3`NXnN<G!oZDJi
|
||||||
|
zyd*WBDwag+_PJ}HUUFQkvKrHZ^>gUoeT~`2`6qVL>-Fla)oeEDo3V=J5)$D$2;JBZ
|
||||||
|
zR!7vzmrJI4L@bn%3?HPY+Uc7mJwJ*=|8_&-%w2hG6G`T;SQKo+xl}E;{>lxX*&+z<
|
||||||
|
zqdI%^<F70T)ic<{gmNEv{=%Otm38KZlC5QU@5iz9*g6azd=D@2S2xB@0%y4l9{trF
|
||||||
|
zn+Ge;C&dw=P``T_|3UBccXG62Uc`b$X4gFMAiarV_!PUamyq4t;6Va4jSzw0S_QE`
|
||||||
|
zmvu<^5nIAtf+<uh7q{&~Oy*11zn5VisMfwQP+E#iW(@rGHVEAR#~#WIkW<gRV7|GR
|
||||||
|
zt5^k|{5VEl0(=kIy&KEWcb8F-0F^j0tDN%O!P6sED6aP)!`P1~Jp~3SL7J#>A>DX`
|
||||||
|
zI-(MwQb8<LV549WKO%*xX(}~Pv|hT;Di%f7-TAjw@VJ!Tog~~m-$<21DM}(3!`1n6
|
||||||
|
z<3Upf%{=)am%$pvbo;zt>=b}hyB|lC;iRyGFv`7bAF;7S0V6^biIsb=JlGpJ<lQa^
|
||||||
|
z;_=LGGY8>2YC2$Y<v{^ZLNfe5h*A8i1Ym-P6kxQm1wI^%5~T!Vh(&8TrxAp%K7bxW
|
||||||
|
z8au0G6h%=skjXjc+_0H#4xB4)35NHHWnLP(&{_Y68DmF`m}XiN)8dX{ju{{8_&s(k
|
||||||
|
zqd#>_%VvN7&24o1{dWSRuY7#N#P!4yw#`h785fh00W`o{eC!y)t^-yZO?6{DtTUjn
|
||||||
|
zvFWgpabY+RbIdwS5(Kv2lbHi{AuR12K)i2^4Ch9v92m}+)D57IvkA8xLz|Ac#U@i&
|
||||||
|
zZYwnMPB(0A#ElD~A2ApK#Y|j^vBT_hJ{leH7I<6E_7&8~;Qf(Ew82^3u!QE2SH+u#
|
||||||
|
z2*Souo!Jwi8T2Bq1wz5Cn>xZm{sGw*e@!8W?@Z?xd?;-8@r~dhJ=)X~7i6|MARK$z
|
||||||
|
zw;jWoI)V*NQ&&;9g>`9Y!v4ZWCgowkrnaa<iNi@fB^g1(XT0~Pwn5=jF-O8JYdWD^
|
||||||
|
ze`4q672<;!aP+3k>P(fu4W-DmZU~oxp)yftSLXulNclK*&#^cK#zwVhl;T_xT2VYs
|
||||||
|
z$yqiQ!;vu*V@;4vCIMX;w)jL)+%jO|kWxm~b;Y3>bp!1XBhQl8QXwPUNGvl3jO&+x
|
||||||
|
zf#E7vB#(-)jkJ0IVNbR5H2T@7KCV`)AN<A2lM6Nz14Hi*XXmr(2mJO|vfKo*gjCpX
|
||||||
|
z_(lvNpW>shziqc;j-<9~{0yoACML+uJZ3Xp^ru4%EoXMp?R1(mRK&m-&L~UldzGdd
|
||||||
|
zx~3R~r>#nIO@c7yo(H~+zHCW!+llm{d*9u77Wg~qQAq%I1Oac!xdgoo{6(P4b^P@W
|
||||||
|
zaR>7mxMtgovmMy-&xs2fdVasW?#6B(r1}0Hb{wpe9u-o2(9z7Iibi}MEHB*XTcM$E
|
||||||
|
znj^u-X|%04(&9+0+}ox6QmGstGs^*gX^x%D2EnrWgT0c)FK_2u7c@|36YiXsa*m=y
|
||||||
|
zbrfGRqqFC^bTJncX1`)Xg&bY@cNEPp2h1(0DVe)j(emxPDzUeWA)|EpFmbbz*|nym
|
||||||
|
zB6EOE-7qa3MAh{?wvvyG28ddedGdC1hec;hQ#2M^Yz^>;rbo3lP}UtC9c{S-Eh>!g
|
||||||
|
zqI!Ice=rIt%-*aO5@yjjm<LPtz4f`%>GYafqdPd&8tvAAH+q7%8~n7-JMB|V=dI2U
|
||||||
|
z!pMib@@QsHCu+2UJsndsN9=#q@2vTh!PW6ji1ci?7A`$|VBO{uZ>#$$-TPqR=2J(t
|
||||||
|
zB(l0{X?55SSe|hN)$SORh9(pl&zzfyDDqRiG!4D_u~vM?oT!h4^@)9~R=|_R2kOYg
|
||||||
|
z(;OojDRmIxy2>hq>>Jw=7eqUbxOQ00evV>!PvZhCri4C~R8kq(4tJ(@^&{T-#9%dQ
|
||||||
|
zv&7H<jx}>Iv(jDrbEaWF?Q`u<GKW$QWf|!u)db?p!%3?QYrw($tVRpA+`htz)H^k*
|
||||||
|
z^Af@faZu>^^KY8FT;5_K`14lpDJj`Zs(!(4>b3_<jk{N#mUApMmom&fC&2<irEs@z
|
||||||
|
z@;gVM#J<~kW1=!NqX}C4vcI{ye3-nFTa*bVVp>Ad)qKJZ^8|m*qT=5Z=!B47<#nKA
|
||||||
|
zCVRk+BUmK_`Bsra{0_S~Dx{riI?%t!N?MajUD7{KMw-r|`&PhJ1d3b5SX1>np*zP6
|
||||||
|
z{e!&{#2so=wB`r2KS-HP^m$vH>8-};S?8?LJ`q}jx6V!)t#12spZB`mrrtcjY>L$k
|
||||||
|
zbGA)v*BKfJ>zV-RNtpEHExMnb(7n}FUp~`a(c5)TwRD@*qBlWoEYEY5{5!-W#jF8K
|
||||||
|
zuze6tsWSJ9BQv=~9u>tNc~z!N`d)opFR7#Kysa`(m=9W7lP0uXBsYJnRBHXrVj)A@
|
||||||
|
z|0iW&k|!R|Wp-ckKELMEm4z+UPdl~4!9VL1nEoey%9ho6-S4Hg%pLDyjy;5QCG#e6
|
||||||
|
z9AJ)}vgEp28(LU^6~lW=MulAoU17bOF1q)eQw5$vMG{M)(!k#{|IoOfa?4TMhHNQX
|
||||||
|
zqJeJfOz_@kFo4$THrm~0r_tA%tp;zmc)Qo_oqX2ymuMizRqF!F9PP3~2Cl|D@YNG4
|
||||||
|
z)aX~-pr}Eud9GWuwz+QOOtE?0RreD`6S}TQ0gJRTPB{L+K@E<PXnU0$-_hBiB0_BD
|
||||||
|
zvCCJhAMEKAbC{D^AA8rdjZPS8t%n^iw$U?C$Azg2b@rET&C=r%fUAAj+eB1E030;q
|
||||||
|
zPIA~G?9xy=%ne0Hb!vdn?Xgo%7F3Ea?%68Yj%`c)w6#kR>F>Rr+dI3ZJGfk$;#&%M
|
||||||
|
zhF+;8JGWepY=3d1SIM?*x%htC2pP4XZP(sSZ$*G9Gg*+S8vgU#yd3Ow-}nng5C21>
|
||||||
|
z%X3f0(J$FtsqNZ)m~)HpW}(gN_tz-+6~Om0a<P=FP#qPB+hY^OBx4>Y2ecAL1_z`w
|
||||||
|
zr>I_(d>WNK;oUr;R);b!qzk&=JGVhq*Dmm13Hy9rSf1ID2RE5WXi$`QocZp*I43Hd
|
||||||
|
aHI!CssuET24>&yb7wouJI-_E><LbXng#q*c
|
||||||
|
|
||||||
|
diff --git a/inc/protocol/ia64/eficontext.h b/inc/protocol/ia64/eficontext.h
|
||||||
|
deleted file mode 100644
|
||||||
|
index 1a39a6db1e45c8bdf96348e5e2fa82567e61df89..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 5111
|
||||||
|
zcmcIoU2mgE7JcqW`46|X4>R3zCjqB3lkF#L;{**c9>ATBRx1x5MH-C_2yimdYXAG3
|
||||||
|
zTlll6);_IUO1myqr_MR|UMPI|@%)TF(zvYN>iqe8OFt(c$hf_|9gul-btNx4MJraA
|
||||||
|
zQdeaiwRu@w$gs6qkzCVIEgDh3h_t&Pulgd*o3_s54X>c6NNLju$_r}BO`QlCiSr_=
|
||||||
|
z-zY2Vbu*yXy!}pPE&ne!t%O;ZX`bbY+;%`wEvORpI&WK%QdO5Pd5SOX_o&4m0ie~Y
|
||||||
|
ze9enzO3EV5dFMvL@WQod|0xIZk8we#6dNkD9k--RF@MvvP}WA^%-~U6z6bzsosuX-
|
||||||
|
zRFrL=hykYL4XvP=aSq!{ou}MjOtOmdwWyE$GW&e6?~y?}K2V)*;NSm=5@!g|J9TN9
|
||||||
|
zY}TS^Wdc~sB@$F(LQU(a6?Go1nnNOF2ASA#?vF$cFNmuqN?%0X<_#z6fWq4#VI0gv
|
||||||
|
z)NW8zTn$_`a8%mclv(?VT<+M(6k)Gw6}?GA4h0Y;e-`EIN~F(%fsZneoQ0gL&d3&m
|
||||||
|
zlhr20W;=9B#fw;#6)G!!qh9s13p)aN+i<SCIxp+yNbB_l%>*hMPO&3Jw3a&haL}m2
|
||||||
|
zz?C<O_cCDtio7IIq}T&6HIrYLExJKg16ZWU1v-#2T+o}v$w6CDQ;CFo3Tty9z1G}K
|
||||||
|
zMb}qNvu|%HF}!yI3cP9fX!$nb``q`wIum<BqbG7^q3zPx^XHy#g^o8PYc|1n7W&R;
|
||||||
|
z5qf?=fBazuSoYIT5{)lgvnR5@&3!uv$n(j0n7a<(fbUzg(6NI7aL4Xq;>_*_1Q?om
|
||||||
|
zA-T?j6JlEE4Jf>~C0c(ec~g3@{qa4JtdZk7;gh5^b;23%H^qh)%`HE4#tYZ-X}$pW
|
||||||
|
zpo3$96DJtEmh)gwE(kQRHQ8V7SxCXX<+>Wd06ft<>abkL8o742AM{Qf-yVl7?C@<2
|
||||||
|
z7s1jUP%yX04u7$~*>J=1p9XM7N(6Rb|GvOPOrVMNVBOgP{ro=+LXO4@-+o}?-c$kw
|
||||||
|
zi%}3d;Ucu@&hsYH`oQ+TI%7NdLaxWjn9?G!2iPUFm;k35#^Ex)j~0Q$7IwxX@4mm7
|
||||||
|
zbIL!^z4r)@;Dd$boZkt_N_gT#dHxdvvmY`Y1A4r-5l7-@JB6Wdu{i;%X3Ux1PsP3{
|
||||||
|
zqVPyB&FnkZxwB_un^}2`^ymck2Z?3*4p`oC;<(BlE$of@!Ty-X;<~R#6%EgkUUH^n
|
||||||
|
zO}+vL)H}a;0V*SKwp9d-U@^Ymrr^-!m*;2v?;m+qq#~oGJ$1Mq>~G=neu+4Oc_Dgn
|
||||||
|
zUUP}HmzO9r>(k9O_i-Yc2K^}hN<<}}neAI8@c811J0RS<>~G_FxU}4GISJhn0{hRk
|
||||||
|
zX5Iu@L*p!ur+(JV8~L{N+uTD-@8JwXGY`sae`dK$Zhlz=?+jBj4>?+bsXag7nL2(m
|
||||||
|
zD_nAwFCJt$@#f}@25(}I7I&wJ=B;Ml0^FRt85CP%)OG;8Ax<$p|EBZh)LOU)c9^Hr
|
||||||
|
zfqAIU`Q8-98*1=E>o+JK;U0!6={`f9&s?Ccy+ls-m_z9OaXIkQMf}y`{*FqLCmQ<H
|
||||||
|
z9R*@RpA8d_C_DzDRsLLv^!@wy9TJxgR-B*V2)0RD`p@~<y9H8)O52^)zPv;A6@sgd
|
||||||
|
z&tQ1GRNG4(8b3ApWG0_pNm<tdI59t|a6*91VRy1AF>LUxrm0DIs2VpXgf1?)SMcfn
|
||||||
|
z?kE^vPRFJ)9xCH&W&Bwg-zei>l<}|1_*NMkS870IXs8qom7}4OG*p&`O4Cqz8Y)pk
|
||||||
|
zWooKSO_iysGBs7ErpnY*nVKq7Q)OzZOih*PP-QyYF+ItBX8z0k_o@5Yupheahd%d1
|
||||||
|
zH~r8r{m`%d&}~0tTxnv4CZ-W!XcQP435G_4p%GzdR2Ui=hDL{}(P3(Im>M0XMu(}<
|
||||||
|
zVQO@k8XcxahpEwFYIF=WI)+C&PO7S^w<UEFjg^v&cNMw4FU3mh#7gJHO5?;z-^5DW
|
||||||
|
z#JjHPSm1seRn=<yHj5kaGu{?O&2OmqY&k^rvTl;ohCnQCDqXB;%Ubj<)J4=HsN!Y`
|
||||||
|
zyP`%#wu+v65J{8vVvQ!2WUKz-tl8Or5S8VcSgIqGBrh78n;&SZ_Is(qs;ucrSoNJ1
|
||||||
|
zyHK|tNs=#gC4St{CMc<wsWkE^X^7?R`gAvry+plO)%IigLB!TDUc47}6w8$=;CYz_
|
||||||
|
zuvOjWiFu`&shT7wYNUMMt=-#{ig@$<1C!FYR(cH)rP~lOPwhcO={Q7`o<l_GIz*Jd
|
||||||
|
zL*%scwhrb!R){F95K&kmqOd|lVTFjo3K4}BBB!iSYA<=+ZlWKRT3)nEE_-=W!%tlD
|
||||||
|
z^u<Rq-}vMYaXjY|JU{y{1y49oKJY=BUp-(dPN?{?AkXOXqkQ?;UBX)leZ>33-@2VK
|
||||||
|
AYXATM
|
||||||
|
|
||||||
|
diff --git a/inc/protocol/makefile.hdr b/inc/protocol/makefile.hdr
|
||||||
|
deleted file mode 100644
|
||||||
|
index 118d6ba3a08df254b3cf4eeecce923bdac063f3a..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 640
|
||||||
|
zcmb7>PiurQ5XJ9;-(l){&_fschtfTGDC(BbMHlrbNYtpIF_CDO_1iaTcS}n_FyxS7
|
||||||
|
z=J)3DVj3IM*g)3N5!A)d<Eo>aKub80cp^14lo7avAciQ;APi8Z33Xn7M#@>w_xPP`
|
||||||
|
z$(j6XH&XOUSam6HE?r*?v!rb|fm69~x7$4fAU+WWzL0}ZtEu2>)-+55MSc;4#}quU
|
||||||
|
zoonGjZW`K#?WDn5fub~fIUI@rC2mf6#Xf41lZNJl6qBd~)5QtPZMT+Vq{Y=-3Nfu`
|
||||||
|
zPYPvt9M_Y|ZC$qCoX+3|?ZL90V-oven#PH1f#-pR@WZ{el+YI&MgiLE*MiQ|<D$-*
|
||||||
|
Sq<`Dgu~$NU?D-PkUqhea3AS$l
|
||||||
|
|
@ -1,472 +0,0 @@
|
|||||||
From 1dac05a1674c42def54d77f17ca2ba73b31beaf8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Jones <pjones@redhat.com>
|
|
||||||
Date: Thu, 19 Jul 2018 13:12:44 -0400
|
|
||||||
Subject: [PATCH] Get rid of some unused junk that has the BSD 4-clause
|
|
||||||
license.
|
|
||||||
|
|
||||||
We don't need any of this, and its license is not GPL compatible.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
||||||
---
|
|
||||||
inc/protocol/efidbg.h | 210 ---------------------------------
|
|
||||||
inc/protocol/ia64/eficontext.h | 208 --------------------------------
|
|
||||||
inc/protocol/makefile.hdr | 4 +-
|
|
||||||
3 files changed, 1 insertion(+), 421 deletions(-)
|
|
||||||
delete mode 100644 inc/protocol/efidbg.h
|
|
||||||
delete mode 100644 inc/protocol/ia64/eficontext.h
|
|
||||||
|
|
||||||
diff --git a/inc/protocol/efidbg.h b/inc/protocol/efidbg.h
|
|
||||||
deleted file mode 100644
|
|
||||||
index 1f95a70bb42..00000000000
|
|
||||||
--- a/inc/protocol/efidbg.h
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,210 +0,0 @@
|
|
||||||
-/*
|
|
||||||
- * Copyright (c) 1999, 2000
|
|
||||||
- * Intel Corporation.
|
|
||||||
- * All rights reserved.
|
|
||||||
- *
|
|
||||||
- * Redistribution and use in source and binary forms, with or without
|
|
||||||
- * modification, are permitted provided that the following conditions
|
|
||||||
- * are met:
|
|
||||||
- *
|
|
||||||
- * 1. Redistributions of source code must retain the above copyright
|
|
||||||
- * notice, this list of conditions and the following disclaimer.
|
|
||||||
- *
|
|
||||||
- * 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
- * notice, this list of conditions and the following disclaimer in the
|
|
||||||
- * documentation and/or other materials provided with the distribution.
|
|
||||||
- *
|
|
||||||
- * 3. All advertising materials mentioning features or use of this software
|
|
||||||
- * must display the following acknowledgement:
|
|
||||||
- *
|
|
||||||
- * This product includes software developed by Intel Corporation and
|
|
||||||
- * its contributors.
|
|
||||||
- *
|
|
||||||
- * 4. Neither the name of Intel Corporation or its contributors may be
|
|
||||||
- * used to endorse or promote products derived from this software
|
|
||||||
- * without specific prior written permission.
|
|
||||||
- *
|
|
||||||
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
|
|
||||||
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
- * ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
|
|
||||||
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
- * THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
- *
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-#ifndef _EFIDBG_H_
|
|
||||||
-#define _EFIDBG_H_
|
|
||||||
-
|
|
||||||
-#include "eficontext.h"
|
|
||||||
-#include "efiser.h"
|
|
||||||
-
|
|
||||||
-typedef struct _DEBUGPORT_16550_CONFIG_DATA {
|
|
||||||
- UINT32 PortAddress;
|
|
||||||
- UINT64 BaudRate;
|
|
||||||
- UINT32 ReceiveFifoDepth;
|
|
||||||
- UINT32 Timeout;
|
|
||||||
- UINT8 Parity;
|
|
||||||
- UINT8 DataBits;
|
|
||||||
- UINT8 StopBits;
|
|
||||||
- UINT32 ControlMask;
|
|
||||||
- BOOLEAN RtsCtsEnable; // RTS, CTS control
|
|
||||||
-} DEBUGPORT_16550_CONFIG_DATA;
|
|
||||||
-
|
|
||||||
-typedef struct _DEBUGPORT_16550_DEVICE_PATH {
|
|
||||||
- EFI_DEVICE_PATH Header;
|
|
||||||
- DEBUGPORT_16550_CONFIG_DATA ConfigData;
|
|
||||||
-} DEBUGPORT_16550_DEVICE_PATH;
|
|
||||||
-
|
|
||||||
-typedef union {
|
|
||||||
- EFI_DEVICE_PATH DevPath;
|
|
||||||
- DEBUGPORT_16550_DEVICE_PATH Uart;
|
|
||||||
- // add new types of debugport device paths to this union...
|
|
||||||
-} DEBUGPORT_DEV_PATH;
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-//
|
|
||||||
-// Debug Support protocol {2755590C-6F3C-42FA-9EA4-A3BA543CDA25}
|
|
||||||
-//
|
|
||||||
-
|
|
||||||
-#define DEBUG_SUPPORT_PROTOCOL \
|
|
||||||
-{ 0x2755590C, 0x6F3C, 0x42fa, 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 }
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-typedef UINTN EXCEPTION_TYPE;
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-VOID
|
|
||||||
-(*EXCEPTION_HANDLER) (
|
|
||||||
- IN EXCEPTION_TYPE ExceptionType,
|
|
||||||
- IN SYSTEM_CONTEXT *SystemContext
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_REGISTER_TIMER_TICK_CALLBACK) (
|
|
||||||
- IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This,
|
|
||||||
- IN EXCEPTION_HANDLER TimerTickCallback
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_REGISTER_EXCEPTION_HANDLER) (
|
|
||||||
- IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This,
|
|
||||||
- IN EXCEPTION_HANDLER ExceptionHandler,
|
|
||||||
- IN EXCEPTION_TYPE ExceptionType
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_IP_CALL_TRACE) (
|
|
||||||
- IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-#define EFI_DEBUG_SUPPORT_INTERFACE_REVISION 0x00010000
|
|
||||||
-
|
|
||||||
-typedef struct _EFI_DEBUG_SUPPORT_INTERFACE {
|
|
||||||
- UINT32 Revision;
|
|
||||||
- EFI_REGISTER_TIMER_TICK_CALLBACK RegisterTimerTickCallback;
|
|
||||||
- EFI_REGISTER_EXCEPTION_HANDLER RegisterExceptionHandler;
|
|
||||||
- EFI_IP_CALL_TRACE IpCallTrace;
|
|
||||||
-} EFI_DEBUG_SUPPORT_INTERFACE;
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-//
|
|
||||||
-// Debugport io protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0}
|
|
||||||
-//
|
|
||||||
-
|
|
||||||
-#define DEBUGPORT_IO_PROTOCOL \
|
|
||||||
-{ 0XEBA4E8D2, 0X3858, 0X41EC, 0XA2, 0X81, 0X26, 0X47, 0XBA, 0X96, 0X60, 0XD0 }
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_DEBUGPORT_IO_RESET) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_IO_INTERFACE *This
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_DEBUGPORT_IO_READ) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_IO_INTERFACE *This,
|
|
||||||
- IN OUT UINTN *BufferSize,
|
|
||||||
- OUT VOID *Buffer
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_DEBUGPORT_IO_WRITE) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_IO_INTERFACE *This,
|
|
||||||
- IN OUT UINTN *BufferSize,
|
|
||||||
- IN VOID *Buffer
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-#define EFI_DEBUGPORT_IO_INTERFACE_REVISION 0x00010000
|
|
||||||
-
|
|
||||||
-typedef struct _EFI_DEBUGPORT_IO_INTERFACE {
|
|
||||||
- UINT32 Revision;
|
|
||||||
- EFI_DEBUGPORT_IO_READ Read;
|
|
||||||
- EFI_DEBUGPORT_IO_WRITE Write;
|
|
||||||
- EFI_DEBUGPORT_IO_RESET Reset;
|
|
||||||
-} EFI_DEBUGPORT_IO_INTERFACE;
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-//
|
|
||||||
-// Debugport UART16550 control protocol {628EA978-4C26-4605-BC02-A42A496917DD}
|
|
||||||
-//
|
|
||||||
-
|
|
||||||
-#define DEBUGPORT_UART16550_CONTROL_PROTOCOL \
|
|
||||||
-{ 0X628EA978, 0X4C26, 0X4605, 0XBC, 0X2, 0XA4, 0X2A, 0X49, 0X69, 0X17, 0XDD }
|
|
||||||
-
|
|
||||||
-// Note: The definitions for EFI_PARITY_TYPE, EFI_STOP_BITS_TYPE, and
|
|
||||||
-// SERIAL_IO_MODE are included from efiser.h
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_UART16550_SET_ATTRIBUTES) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This,
|
|
||||||
- IN UINT64 BaudRate,
|
|
||||||
- IN UINT32 ReceiveFifoDepth,
|
|
||||||
- IN UINT32 Timeout,
|
|
||||||
- IN EFI_PARITY_TYPE Parity,
|
|
||||||
- IN UINT8 DataBits,
|
|
||||||
- IN EFI_STOP_BITS_TYPE StopBits
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_UART16550_SET_CONTROL_BITS) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This,
|
|
||||||
- IN UINT32 Control
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-typedef
|
|
||||||
-EFI_STATUS
|
|
||||||
-(EFIAPI *EFI_UART16550_GET_CONTROL_BITS) (
|
|
||||||
- IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This,
|
|
||||||
- OUT UINT32 *Control
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
-#define EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE_REVISION 0x00010000
|
|
||||||
-
|
|
||||||
-typedef struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE {
|
|
||||||
- UINT32 Revision;
|
|
||||||
- EFI_UART16550_SET_ATTRIBUTES SetAttributes;
|
|
||||||
- EFI_UART16550_SET_CONTROL_BITS SetControl;
|
|
||||||
- EFI_UART16550_GET_CONTROL_BITS GetControl;
|
|
||||||
- DEBUGPORT_16550_CONFIG_DATA *Mode;
|
|
||||||
-} EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE;
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-#define DEVICE_PATH_DEBUGPORT DEBUGPORT_IO_PROTOCOL
|
|
||||||
-
|
|
||||||
-#endif /* _EFIDBG_H_ */
|
|
||||||
diff --git a/inc/protocol/ia64/eficontext.h b/inc/protocol/ia64/eficontext.h
|
|
||||||
deleted file mode 100644
|
|
||||||
index 1a39a6db1e4..00000000000
|
|
||||||
--- a/inc/protocol/ia64/eficontext.h
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,208 +0,0 @@
|
|
||||||
-/*
|
|
||||||
- * Copyright (c) 1999, 2000
|
|
||||||
- * Intel Corporation.
|
|
||||||
- * All rights reserved.
|
|
||||||
- *
|
|
||||||
- * Redistribution and use in source and binary forms, with or without
|
|
||||||
- * modification, are permitted provided that the following conditions
|
|
||||||
- * are met:
|
|
||||||
- *
|
|
||||||
- * 1. Redistributions of source code must retain the above copyright
|
|
||||||
- * notice, this list of conditions and the following disclaimer.
|
|
||||||
- *
|
|
||||||
- * 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
- * notice, this list of conditions and the following disclaimer in the
|
|
||||||
- * documentation and/or other materials provided with the distribution.
|
|
||||||
- *
|
|
||||||
- * 3. All advertising materials mentioning features or use of this software
|
|
||||||
- * must display the following acknowledgement:
|
|
||||||
- *
|
|
||||||
- * This product includes software developed by Intel Corporation and
|
|
||||||
- * its contributors.
|
|
||||||
- *
|
|
||||||
- * 4. Neither the name of Intel Corporation or its contributors may be
|
|
||||||
- * used to endorse or promote products derived from this software
|
|
||||||
- * without specific prior written permission.
|
|
||||||
- *
|
|
||||||
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
|
|
||||||
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
- * ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
|
|
||||||
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
- * THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
- *
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-#ifndef _EFICONTEXT_H_
|
|
||||||
-#define _EFICONTEXT_H_
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-//
|
|
||||||
-// IA-64 processor exception types
|
|
||||||
-//
|
|
||||||
-#define EXCPT_ALT_DTLB 4
|
|
||||||
-#define EXCPT_DNESTED_TLB 5
|
|
||||||
-#define EXCPT_BREAKPOINT 11
|
|
||||||
-#define EXCPT_EXTERNAL_INTERRUPT 12
|
|
||||||
-#define EXCPT_GEN_EXCEPT 24
|
|
||||||
-#define EXCPT_NAT_CONSUMPTION 26
|
|
||||||
-#define EXCPT_DEBUG_EXCEPT 29
|
|
||||||
-#define EXCPT_UNALIGNED_ACCESS 30
|
|
||||||
-#define EXCPT_FP_FAULT 32
|
|
||||||
-#define EXCPT_FP_TRAP 33
|
|
||||||
-#define EXCPT_TAKEN_BRANCH 35
|
|
||||||
-#define EXCPT_SINGLE_STEP 36
|
|
||||||
-
|
|
||||||
-//
|
|
||||||
-// IA-64 processor context definition - must be 512 byte aligned!!!
|
|
||||||
-//
|
|
||||||
-typedef
|
|
||||||
-struct {
|
|
||||||
- UINT64 reserved; // necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned...
|
|
||||||
-
|
|
||||||
- UINT64 r1;
|
|
||||||
- UINT64 r2;
|
|
||||||
- UINT64 r3;
|
|
||||||
- UINT64 r4;
|
|
||||||
- UINT64 r5;
|
|
||||||
- UINT64 r6;
|
|
||||||
- UINT64 r7;
|
|
||||||
- UINT64 r8;
|
|
||||||
- UINT64 r9;
|
|
||||||
- UINT64 r10;
|
|
||||||
- UINT64 r11;
|
|
||||||
- UINT64 r12;
|
|
||||||
- UINT64 r13;
|
|
||||||
- UINT64 r14;
|
|
||||||
- UINT64 r15;
|
|
||||||
- UINT64 r16;
|
|
||||||
- UINT64 r17;
|
|
||||||
- UINT64 r18;
|
|
||||||
- UINT64 r19;
|
|
||||||
- UINT64 r20;
|
|
||||||
- UINT64 r21;
|
|
||||||
- UINT64 r22;
|
|
||||||
- UINT64 r23;
|
|
||||||
- UINT64 r24;
|
|
||||||
- UINT64 r25;
|
|
||||||
- UINT64 r26;
|
|
||||||
- UINT64 r27;
|
|
||||||
- UINT64 r28;
|
|
||||||
- UINT64 r29;
|
|
||||||
- UINT64 r30;
|
|
||||||
- UINT64 r31;
|
|
||||||
-
|
|
||||||
- UINT64 f2[2];
|
|
||||||
- UINT64 f3[2];
|
|
||||||
- UINT64 f4[2];
|
|
||||||
- UINT64 f5[2];
|
|
||||||
- UINT64 f6[2];
|
|
||||||
- UINT64 f7[2];
|
|
||||||
- UINT64 f8[2];
|
|
||||||
- UINT64 f9[2];
|
|
||||||
- UINT64 f10[2];
|
|
||||||
- UINT64 f11[2];
|
|
||||||
- UINT64 f12[2];
|
|
||||||
- UINT64 f13[2];
|
|
||||||
- UINT64 f14[2];
|
|
||||||
- UINT64 f15[2];
|
|
||||||
- UINT64 f16[2];
|
|
||||||
- UINT64 f17[2];
|
|
||||||
- UINT64 f18[2];
|
|
||||||
- UINT64 f19[2];
|
|
||||||
- UINT64 f20[2];
|
|
||||||
- UINT64 f21[2];
|
|
||||||
- UINT64 f22[2];
|
|
||||||
- UINT64 f23[2];
|
|
||||||
- UINT64 f24[2];
|
|
||||||
- UINT64 f25[2];
|
|
||||||
- UINT64 f26[2];
|
|
||||||
- UINT64 f27[2];
|
|
||||||
- UINT64 f28[2];
|
|
||||||
- UINT64 f29[2];
|
|
||||||
- UINT64 f30[2];
|
|
||||||
- UINT64 f31[2];
|
|
||||||
-
|
|
||||||
- UINT64 pr;
|
|
||||||
-
|
|
||||||
- UINT64 b0;
|
|
||||||
- UINT64 b1;
|
|
||||||
- UINT64 b2;
|
|
||||||
- UINT64 b3;
|
|
||||||
- UINT64 b4;
|
|
||||||
- UINT64 b5;
|
|
||||||
- UINT64 b6;
|
|
||||||
- UINT64 b7;
|
|
||||||
-
|
|
||||||
- // application registers
|
|
||||||
- UINT64 ar_rsc;
|
|
||||||
- UINT64 ar_bsp;
|
|
||||||
- UINT64 ar_bspstore;
|
|
||||||
- UINT64 ar_rnat;
|
|
||||||
-
|
|
||||||
- UINT64 ar_fcr;
|
|
||||||
-
|
|
||||||
- UINT64 ar_eflag;
|
|
||||||
- UINT64 ar_csd;
|
|
||||||
- UINT64 ar_ssd;
|
|
||||||
- UINT64 ar_cflg;
|
|
||||||
- UINT64 ar_fsr;
|
|
||||||
- UINT64 ar_fir;
|
|
||||||
- UINT64 ar_fdr;
|
|
||||||
-
|
|
||||||
- UINT64 ar_ccv;
|
|
||||||
-
|
|
||||||
- UINT64 ar_unat;
|
|
||||||
-
|
|
||||||
- UINT64 ar_fpsr;
|
|
||||||
-
|
|
||||||
- UINT64 ar_pfs;
|
|
||||||
- UINT64 ar_lc;
|
|
||||||
- UINT64 ar_ec;
|
|
||||||
-
|
|
||||||
- // control registers
|
|
||||||
- UINT64 cr_dcr;
|
|
||||||
- UINT64 cr_itm;
|
|
||||||
- UINT64 cr_iva;
|
|
||||||
- UINT64 cr_pta;
|
|
||||||
- UINT64 cr_ipsr;
|
|
||||||
- UINT64 cr_isr;
|
|
||||||
- UINT64 cr_iip;
|
|
||||||
- UINT64 cr_ifa;
|
|
||||||
- UINT64 cr_itir;
|
|
||||||
- UINT64 cr_iipa;
|
|
||||||
- UINT64 cr_ifs;
|
|
||||||
- UINT64 cr_iim;
|
|
||||||
- UINT64 cr_iha;
|
|
||||||
-
|
|
||||||
- // debug registers
|
|
||||||
- UINT64 dbr0;
|
|
||||||
- UINT64 dbr1;
|
|
||||||
- UINT64 dbr2;
|
|
||||||
- UINT64 dbr3;
|
|
||||||
- UINT64 dbr4;
|
|
||||||
- UINT64 dbr5;
|
|
||||||
- UINT64 dbr6;
|
|
||||||
- UINT64 dbr7;
|
|
||||||
-
|
|
||||||
- UINT64 ibr0;
|
|
||||||
- UINT64 ibr1;
|
|
||||||
- UINT64 ibr2;
|
|
||||||
- UINT64 ibr3;
|
|
||||||
- UINT64 ibr4;
|
|
||||||
- UINT64 ibr5;
|
|
||||||
- UINT64 ibr6;
|
|
||||||
- UINT64 ibr7;
|
|
||||||
-
|
|
||||||
- // virtual registers
|
|
||||||
- UINT64 int_nat; // nat bits for R1-R31
|
|
||||||
-
|
|
||||||
-} SYSTEM_CONTEXT;
|
|
||||||
-
|
|
||||||
-#endif /* _EFI_CONTEXT_H_ */
|
|
||||||
diff --git a/inc/protocol/makefile.hdr b/inc/protocol/makefile.hdr
|
|
||||||
index 118d6ba3a08..e66e67889c2 100644
|
|
||||||
--- a/inc/protocol/makefile.hdr
|
|
||||||
+++ b/inc/protocol/makefile.hdr
|
|
||||||
@@ -9,8 +9,7 @@
|
|
||||||
INC_DEPS = $(INC_DEPS) \
|
|
||||||
$(SDK_INSTALL_DIR)\include\efi\protocol\efivar.h \
|
|
||||||
$(SDK_INSTALL_DIR)\include\efi\protocol\legacyboot.h \
|
|
||||||
- $(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h \
|
|
||||||
- $(SDK_INSTALL_DIR)\include\efi\protocol\efidbg.h \
|
|
||||||
+ $(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h
|
|
||||||
|
|
||||||
|
|
||||||
!IF "$(PROCESSOR)" == "Ia32"
|
|
||||||
@@ -22,7 +21,6 @@ INC_DEPS = $(INC_DEPS) \
|
|
||||||
|
|
||||||
!IF "$(PROCESSOR)" == "Ia64"
|
|
||||||
INC_DEPS = $(INC_DEPS) \
|
|
||||||
- $(SDK_INSTALL_DIR)\include\efi\protocol\$(PROCESSOR)\eficontext.h \
|
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
75
0026-Get-rid-of-unused-make-like-files-from-yore.patch
Normal file
75
0026-Get-rid-of-unused-make-like-files-from-yore.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:37:17 -0400
|
||||||
|
Subject: [PATCH] Get rid of unused make-like files from yore.
|
||||||
|
|
||||||
|
These files are all edk2-like makefile snippets, and we don't use any of
|
||||||
|
them for anything. They've also got DOS line endings and things like
|
||||||
|
that.
|
||||||
|
|
||||||
|
This patch just gets rid of them.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
inc/inc.mak | Bin 727 -> 0 bytes
|
||||||
|
inc/make.inf | Bin 398 -> 0 bytes
|
||||||
|
inc/makefile.hdr | Bin 1501 -> 0 bytes
|
||||||
|
inc/protocol/make.inf | Bin 113 -> 0 bytes
|
||||||
|
4 files changed, 0 insertions(+), 0 deletions(-)
|
||||||
|
delete mode 100644 inc/inc.mak
|
||||||
|
delete mode 100644 inc/make.inf
|
||||||
|
delete mode 100644 inc/makefile.hdr
|
||||||
|
delete mode 100644 inc/protocol/make.inf
|
||||||
|
|
||||||
|
diff --git a/inc/inc.mak b/inc/inc.mak
|
||||||
|
deleted file mode 100644
|
||||||
|
index 992996becdfebbd03d3dfb9b4c64fd543ed3c5ff..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 727
|
||||||
|
zcmajdy$S*`3<vPN(0AzIpo?$dqz*13xC+uw4ai;T^$s836KvWcIXk80$G>fe6jGed
|
||||||
|
z`}^T|xvHI7t;=SkaNVT9`d9b>+h=n~6CE2x69b*YB%0X1L!oHmycr(_aU>L=*pw-v
|
||||||
|
zp;LTHD43KmRKbuJm}=;YqD~nNLo7gF3`0`?H|6b12G^HKFMm2V3E!EZ-vYI_GodDG
|
||||||
|
SbPXXzwu@rOPN#Ver1$`XL5I}<
|
||||||
|
|
||||||
|
diff --git a/inc/make.inf b/inc/make.inf
|
||||||
|
deleted file mode 100644
|
||||||
|
index f173196f08cc36175a53b58d17e24d4bc6fbab1f..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 398
|
||||||
|
zcmbV|%?biB4216seFtIh9#ni8@z9@C14~=dR(yQBg~}9fh92@U37O8SmbE{%+;Xg9
|
||||||
|
zDc{v{Xhoin&u^;}l8pg0N2Wd|_7lAlAc+9^46v~QN?Hn{Wsb-aC;3grf}D%ff~ErD
|
||||||
|
pI5$h<m(>9jyF&|u_4)J@h~ePIkwl|wNj2+f)BQr<y<Yy>{Qx*pX`BE6
|
||||||
|
|
||||||
|
diff --git a/inc/makefile.hdr b/inc/makefile.hdr
|
||||||
|
deleted file mode 100644
|
||||||
|
index 46ef3876908366b17c77bc3275afcc554fced58b..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 1501
|
||||||
|
zcmbu8QES355XavO{SLS4L;Emco5+0dVYGFGNfp~iLDKeW!)j7u9s2E;sN2gxycrru
|
||||||
|
zx!>JC|0L%+J=f_$R*M~&kHeN1wU7uKl&E=!B~+q8c!X#U$vlHNVwue_<NX)OkCxx^
|
||||||
|
zPaNO@|AZ^8wx+O&3RzvEp=ys>Z0ZjDB7mpy_!WT34jTxSZk3T1N*dO6T!$s$I*J!5
|
||||||
|
zOrY=o`~<La9lMRbpGF^RmZaI+Y_^WrGFS;&H2V@)SP44^_3bQgNqC_orFx0^enU&B
|
||||||
|
zX!uu4;ZbV}UhOD!BXSDfa@~>mLI_1l(26E-z`URc?7EU`()CIt?MR$1_r_PhFDZ0a
|
||||||
|
zoN3!{4{Qov-(M`}VVtJ(W#GYN0v_Wp&)%KgXlvM(%!Mp(KH5`Ki!|Pdm<QN4{Bpu4
|
||||||
|
dV{sC(sa;($IU3$?ay0yhNs~k}c^0{1@*COZxEKHc
|
||||||
|
|
||||||
|
diff --git a/inc/protocol/make.inf b/inc/protocol/make.inf
|
||||||
|
deleted file mode 100644
|
||||||
|
index f3bb9076c6b267dda5429e7515c2243dad79415b..0000000000000000000000000000000000000000
|
||||||
|
GIT binary patch
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
literal 113
|
||||||
|
zcmY%9<x&PCUasik{L-T2)Z$oPE(IV+P0K7xEYi#1<>JgqO;1d&Ov=wM0dvFB6P<Gs
|
||||||
|
hi;F=Vkjl)wlAQd+6c86^N@k+55yB*}fSCzG004;AA3Fd5
|
||||||
|
|
756
0027-Make-ELF-constructors-and-destructors-work.patch
Normal file
756
0027-Make-ELF-constructors-and-destructors-work.patch
Normal file
@ -0,0 +1,756 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 23 Aug 2019 16:23:21 -0400
|
||||||
|
Subject: [PATCH] Make ELF constructors and destructors work.
|
||||||
|
|
||||||
|
This makes setup and teardown functions defined with
|
||||||
|
__attribute__((__constructor__) and __attribute__((__destructor__)) work
|
||||||
|
in normal circumstances in EFI binaries.
|
||||||
|
|
||||||
|
A couple of notes:
|
||||||
|
- it implements both the old-style .ctors/.dtors methods and the newer
|
||||||
|
style .init_array/.fini_array ELF constructor and destructor arrays,
|
||||||
|
processed in the order:
|
||||||
|
.init_array[]
|
||||||
|
.ctors[]
|
||||||
|
efi_main()
|
||||||
|
.dtors[]
|
||||||
|
.fini_array[]
|
||||||
|
- Destructors will only be called if efi_main() exits using "return";
|
||||||
|
any call to Exit() will still longjmp() past them.
|
||||||
|
- InitializeLib() has already been called before constructors run, so
|
||||||
|
they don't need to call it (and neither does anything else.) For
|
||||||
|
compatibility, it has been altered so calling it more than once is
|
||||||
|
safe.
|
||||||
|
- No attempt is made to handle any constructor or destructor with a
|
||||||
|
prototype other than "void func(void);", but note that InitializeLib
|
||||||
|
has been called, so LibImageHandle, ST, BS, and RT are set.
|
||||||
|
- The init_array/ctor/dtor/fini_array lists aren't the using the GNU
|
||||||
|
"CONSTRUCTOR" output section command, so they don't start with a size.
|
||||||
|
- The lists are individually sorted during the link stage via
|
||||||
|
SORT_BY_NAME() in the linker script.
|
||||||
|
- The default (empty) init_array/ctor/dtor/fini_array lists are padded
|
||||||
|
out to 8-byte alignment with ".p2align 3, 0", and each list always has
|
||||||
|
at least one ".long 0" at the end of it (even if it's completely
|
||||||
|
empty). As a result, they can have NULLs that need to be skipped.
|
||||||
|
The sections they're in are mergeable, so the NULLs don't have to be
|
||||||
|
exclusively at the end.
|
||||||
|
- The ia64 and mips64el arches have not been tested.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
apps/Makefile | 5 ++-
|
||||||
|
apps/ctors_fns.c | 26 +++++++++++++
|
||||||
|
apps/ctors_test.c | 20 ++++++++++
|
||||||
|
gnuefi/crt0-efi-aa64.S | 2 +-
|
||||||
|
gnuefi/crt0-efi-arm.S | 2 +-
|
||||||
|
gnuefi/crt0-efi-ia32.S | 8 ++--
|
||||||
|
gnuefi/crt0-efi-ia64.S | 2 +-
|
||||||
|
gnuefi/crt0-efi-mips64el.S | 4 +-
|
||||||
|
gnuefi/crt0-efi-x64.S | 2 +-
|
||||||
|
gnuefi/elf_aa64_efi.lds | 21 +++++++++++
|
||||||
|
gnuefi/elf_arm_efi.lds | 20 ++++++++++
|
||||||
|
gnuefi/elf_ia32_efi.lds | 21 +++++++++++
|
||||||
|
gnuefi/elf_ia32_fbsd_efi.lds | 21 +++++++++++
|
||||||
|
gnuefi/elf_ia64_efi.lds | 21 +++++++++++
|
||||||
|
gnuefi/elf_mips64el_efi.lds | 20 ++++++++++
|
||||||
|
gnuefi/elf_x64_efi.lds | 22 +++++++++++
|
||||||
|
gnuefi/elf_x64_fbsd_efi.lds | 21 +++++++++++
|
||||||
|
lib/Makefile | 6 +--
|
||||||
|
lib/ctors.S | 43 ++++++++++++++++++++++
|
||||||
|
lib/entry.c | 67 ++++++++++++++++++++++++++++++++++
|
||||||
|
lib/init.c | 87 +++++++++++++++++++++-----------------------
|
||||||
|
21 files changed, 381 insertions(+), 60 deletions(-)
|
||||||
|
create mode 100644 apps/ctors_fns.c
|
||||||
|
create mode 100644 apps/ctors_test.c
|
||||||
|
create mode 100644 lib/ctors.S
|
||||||
|
create mode 100644 lib/entry.c
|
||||||
|
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index a95620cba2d..28088370da7 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -62,7 +62,8 @@ TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi \
|
||||||
|
printenv.efi t7.efi t8.efi tcc.efi modelist.efi \
|
||||||
|
route80h.efi drv0_use.efi AllocPages.efi exit.efi \
|
||||||
|
FreePages.efi setjmp.efi debughook.efi debughook.efi.debug \
|
||||||
|
- bltgrid.efi lfbgrid.efi setdbg.efi unsetdbg.efi
|
||||||
|
+ bltgrid.efi lfbgrid.efi setdbg.efi unsetdbg.efi \
|
||||||
|
+ ctors_test.efi
|
||||||
|
TARGET_BSDRIVERS = drv0.efi
|
||||||
|
TARGET_RTDRIVERS =
|
||||||
|
|
||||||
|
@@ -87,6 +88,8 @@ TARGETS = $(TARGET_APPS) $(TARGET_BSDRIVERS) $(TARGET_RTDRIVERS)
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
+ctors_test.so : ctors_fns.o ctors_test.o
|
||||||
|
+
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGETS) *~ *.o *.so
|
||||||
|
|
||||||
|
diff --git a/apps/ctors_fns.c b/apps/ctors_fns.c
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..624190462ea
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/apps/ctors_fns.c
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+/*
|
||||||
|
+ * ctors.c
|
||||||
|
+ * Copyright 2019 Peter Jones <pjones@redhat.com>
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <efi.h>
|
||||||
|
+#include <efilib.h>
|
||||||
|
+
|
||||||
|
+int constructed_value = 0;
|
||||||
|
+
|
||||||
|
+static void __attribute__((__constructor__)) ctor(void)
|
||||||
|
+{
|
||||||
|
+ Print(L"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||||
|
+ constructed_value = 1;
|
||||||
|
+ Print(L"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void __attribute__((__destructor__)) dtor(void)
|
||||||
|
+{
|
||||||
|
+ Print(L"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||||
|
+ constructed_value = 0;
|
||||||
|
+ Print(L"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// vim:fenc=utf-8:tw=75:noet
|
||||||
|
diff --git a/apps/ctors_test.c b/apps/ctors_test.c
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..7e48da8ef35
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/apps/ctors_test.c
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+/*
|
||||||
|
+ * ctors_test.c
|
||||||
|
+ * Copyright 2019 Peter Jones <pjones@redhat.com>
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <efi.h>
|
||||||
|
+#include <efilib.h>
|
||||||
|
+
|
||||||
|
+extern int constructed_value;
|
||||||
|
+
|
||||||
|
+EFI_STATUS
|
||||||
|
+efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||||
|
+{
|
||||||
|
+ Print(L"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||||
|
+
|
||||||
|
+ return EFI_SUCCESS;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// vim:fenc=utf-8:tw=75:noet
|
||||||
|
diff --git a/gnuefi/crt0-efi-aa64.S b/gnuefi/crt0-efi-aa64.S
|
||||||
|
index d6e610b8c79..a9302588b71 100644
|
||||||
|
--- a/gnuefi/crt0-efi-aa64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-aa64.S
|
||||||
|
@@ -124,7 +124,7 @@ _start:
|
||||||
|
cbnz x0, 0f
|
||||||
|
|
||||||
|
ldp x0, x1, [sp, #16]
|
||||||
|
- bl efi_main
|
||||||
|
+ bl _entry
|
||||||
|
|
||||||
|
0: ldp x29, x30, [sp], #32
|
||||||
|
ret
|
||||||
|
diff --git a/gnuefi/crt0-efi-arm.S b/gnuefi/crt0-efi-arm.S
|
||||||
|
index c5bb6d482da..04e75e9481a 100644
|
||||||
|
--- a/gnuefi/crt0-efi-arm.S
|
||||||
|
+++ b/gnuefi/crt0-efi-arm.S
|
||||||
|
@@ -136,7 +136,7 @@ _start:
|
||||||
|
bne 0f
|
||||||
|
|
||||||
|
ldmfd sp, {r0-r1}
|
||||||
|
- bl efi_main
|
||||||
|
+ bl _entry
|
||||||
|
|
||||||
|
0: add sp, sp, #12
|
||||||
|
ldr pc, [sp], #4
|
||||||
|
diff --git a/gnuefi/crt0-efi-ia32.S b/gnuefi/crt0-efi-ia32.S
|
||||||
|
index f9d5191ecb5..8e8e372f551 100644
|
||||||
|
--- a/gnuefi/crt0-efi-ia32.S
|
||||||
|
+++ b/gnuefi/crt0-efi-ia32.S
|
||||||
|
@@ -56,13 +56,13 @@ _start:
|
||||||
|
call _relocate
|
||||||
|
popl %ebx
|
||||||
|
popl %ebx
|
||||||
|
- testl %eax,%eax
|
||||||
|
- jne .exit
|
||||||
|
+ testl %eax,%eax
|
||||||
|
+ jne .exit
|
||||||
|
|
||||||
|
- call efi_main # call app with "image" and "systab" argument
|
||||||
|
+ call _entry # call app with "image" and "systab" argument
|
||||||
|
|
||||||
|
.exit: leave
|
||||||
|
- ret
|
||||||
|
+ ret
|
||||||
|
|
||||||
|
// hand-craft a dummy .reloc section so EFI knows it's a relocatable executable:
|
||||||
|
|
||||||
|
diff --git a/gnuefi/crt0-efi-ia64.S b/gnuefi/crt0-efi-ia64.S
|
||||||
|
index 40c3c837a1c..dacb4c4c658 100644
|
||||||
|
--- a/gnuefi/crt0-efi-ia64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-ia64.S
|
||||||
|
@@ -56,7 +56,7 @@ _start:
|
||||||
|
|
||||||
|
mov out0=in0 // image handle
|
||||||
|
mov out1=in1 // systab
|
||||||
|
- br.call.sptk.few rp=efi_main
|
||||||
|
+ br.call.sptk.few rp=_entry
|
||||||
|
.Lret2:
|
||||||
|
.exit:
|
||||||
|
mov ar.pfs=loc0
|
||||||
|
diff --git a/gnuefi/crt0-efi-mips64el.S b/gnuefi/crt0-efi-mips64el.S
|
||||||
|
index 6a62aca98b4..5ad2503ca79 100644
|
||||||
|
--- a/gnuefi/crt0-efi-mips64el.S
|
||||||
|
+++ b/gnuefi/crt0-efi-mips64el.S
|
||||||
|
@@ -172,8 +172,8 @@ _pc:
|
||||||
|
|
||||||
|
// a0: ImageHandle
|
||||||
|
ld $a0, 16($sp)
|
||||||
|
- // call efi_main
|
||||||
|
- dla $t9, efi_main
|
||||||
|
+ // call _start
|
||||||
|
+ dla $t9, _entry
|
||||||
|
jalr $t9
|
||||||
|
// a1: SystemTable
|
||||||
|
ld $a1, 24($sp)
|
||||||
|
diff --git a/gnuefi/crt0-efi-x64.S b/gnuefi/crt0-efi-x64.S
|
||||||
|
index 6533af7461f..3fe361b7ffd 100644
|
||||||
|
--- a/gnuefi/crt0-efi-x64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-x64.S
|
||||||
|
@@ -56,7 +56,7 @@ _start:
|
||||||
|
popq %rdi
|
||||||
|
popq %rsi
|
||||||
|
|
||||||
|
- call efi_main
|
||||||
|
+ call _entry
|
||||||
|
addq $8, %rsp
|
||||||
|
|
||||||
|
.exit:
|
||||||
|
diff --git a/gnuefi/elf_aa64_efi.lds b/gnuefi/elf_aa64_efi.lds
|
||||||
|
index 836d98255d8..161f5fc5641 100644
|
||||||
|
--- a/gnuefi/elf_aa64_efi.lds
|
||||||
|
+++ b/gnuefi/elf_aa64_efi.lds
|
||||||
|
@@ -26,6 +26,26 @@ SECTIONS
|
||||||
|
*(.got.plt)
|
||||||
|
*(.got)
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
. = ALIGN(16);
|
||||||
|
@@ -36,6 +56,7 @@ SECTIONS
|
||||||
|
*(.bss)
|
||||||
|
*(COMMON)
|
||||||
|
. = ALIGN(16);
|
||||||
|
+
|
||||||
|
_bss_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/gnuefi/elf_arm_efi.lds b/gnuefi/elf_arm_efi.lds
|
||||||
|
index 665bbdbf065..f93f39bc384 100644
|
||||||
|
--- a/gnuefi/elf_arm_efi.lds
|
||||||
|
+++ b/gnuefi/elf_arm_efi.lds
|
||||||
|
@@ -26,6 +26,26 @@ SECTIONS
|
||||||
|
*(.got.plt)
|
||||||
|
*(.got)
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
. = ALIGN(16);
|
||||||
|
diff --git a/gnuefi/elf_ia32_efi.lds b/gnuefi/elf_ia32_efi.lds
|
||||||
|
index f27fe5fc6e6..4b7e3f1df39 100644
|
||||||
|
--- a/gnuefi/elf_ia32_efi.lds
|
||||||
|
+++ b/gnuefi/elf_ia32_efi.lds
|
||||||
|
@@ -40,6 +40,27 @@ SECTIONS
|
||||||
|
*(.sdata)
|
||||||
|
*(.got.plt)
|
||||||
|
*(.got)
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
*(.sbss)
|
||||||
|
diff --git a/gnuefi/elf_ia32_fbsd_efi.lds b/gnuefi/elf_ia32_fbsd_efi.lds
|
||||||
|
index cd309e24f7f..9e9baec2aca 100644
|
||||||
|
--- a/gnuefi/elf_ia32_fbsd_efi.lds
|
||||||
|
+++ b/gnuefi/elf_ia32_fbsd_efi.lds
|
||||||
|
@@ -40,6 +40,27 @@ SECTIONS
|
||||||
|
*(.sdata)
|
||||||
|
*(.got.plt)
|
||||||
|
*(.got)
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
*(.sbss)
|
||||||
|
diff --git a/gnuefi/elf_ia64_efi.lds b/gnuefi/elf_ia64_efi.lds
|
||||||
|
index 190792a0c94..2cda0dd97c7 100644
|
||||||
|
--- a/gnuefi/elf_ia64_efi.lds
|
||||||
|
+++ b/gnuefi/elf_ia64_efi.lds
|
||||||
|
@@ -39,6 +39,27 @@ SECTIONS
|
||||||
|
*(.data*)
|
||||||
|
*(.gnu.linkonce.d*)
|
||||||
|
*(.plabel) /* data whose relocs we want to ignore */
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
*(.dynbss)
|
||||||
|
diff --git a/gnuefi/elf_mips64el_efi.lds b/gnuefi/elf_mips64el_efi.lds
|
||||||
|
index 4d1a077d8f8..0e68084d103 100644
|
||||||
|
--- a/gnuefi/elf_mips64el_efi.lds
|
||||||
|
+++ b/gnuefi/elf_mips64el_efi.lds
|
||||||
|
@@ -27,6 +27,26 @@ SECTIONS
|
||||||
|
HIDDEN (_gp = ALIGN (16) + 0x7ff0);
|
||||||
|
*(.got)
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
. = ALIGN(16);
|
||||||
|
diff --git a/gnuefi/elf_x64_efi.lds b/gnuefi/elf_x64_efi.lds
|
||||||
|
index c7a105898c8..cb2e3dc00aa 100644
|
||||||
|
--- a/gnuefi/elf_x64_efi.lds
|
||||||
|
+++ b/gnuefi/elf_x64_efi.lds
|
||||||
|
@@ -30,6 +30,7 @@ SECTIONS
|
||||||
|
{
|
||||||
|
*(.reloc)
|
||||||
|
}
|
||||||
|
+
|
||||||
|
. = ALIGN(4096);
|
||||||
|
.data :
|
||||||
|
{
|
||||||
|
@@ -39,6 +40,27 @@ SECTIONS
|
||||||
|
*(.got)
|
||||||
|
*(.data*)
|
||||||
|
*(.sdata)
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
*(.sbss)
|
||||||
|
diff --git a/gnuefi/elf_x64_fbsd_efi.lds b/gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
index 705719bf68b..192aa065d8c 100644
|
||||||
|
--- a/gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
+++ b/gnuefi/elf_x64_fbsd_efi.lds
|
||||||
|
@@ -36,6 +36,27 @@ SECTIONS
|
||||||
|
*(.got)
|
||||||
|
*(.data*)
|
||||||
|
*(.sdata)
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ . = ALIGN(16);
|
||||||
|
+ _init_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.init_array))
|
||||||
|
+ _init_array_end = .;
|
||||||
|
+ __CTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.ctors))
|
||||||
|
+ __CTOR_END__ = .;
|
||||||
|
+ __DTOR_LIST__ = .;
|
||||||
|
+ *(SORT_BY_NAME(.dtors))
|
||||||
|
+ __DTOR_END__ = .;
|
||||||
|
+ _fini_array = .;
|
||||||
|
+ *(SORT_BY_NAME(.fini_array))
|
||||||
|
+ _fini_array_end = .;
|
||||||
|
+
|
||||||
|
/* the EFI loader doesn't seem to like a .bss section, so we stick
|
||||||
|
it all into .data: */
|
||||||
|
*(.sbss)
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 8bf94000e33..e7eafc01f1e 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -43,8 +43,8 @@ include $(SRCDIR)/../Make.defaults
|
||||||
|
TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
CDIR = $(TOPDIR)/..
|
||||||
|
-FILES = boxdraw smbios console crc data debug dpath \
|
||||||
|
- error event exit guid hand hw init lock \
|
||||||
|
+FILES = boxdraw smbios console crc data debug dpath \
|
||||||
|
+ entry error event exit guid hand hw init lock \
|
||||||
|
misc print sread str cmdline \
|
||||||
|
runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \
|
||||||
|
$(ARCH)/initplat $(ARCH)/math $(ARCH)/setjmp
|
||||||
|
@@ -62,7 +62,7 @@ FILES += $(ARCH)/uldiv $(ARCH)/ldivmod $(ARCH)/div $(ARCH)/llsl $(ARCH)/llsr \
|
||||||
|
$(ARCH)/mullu
|
||||||
|
endif
|
||||||
|
|
||||||
|
-OBJS = $(FILES:%=%.o)
|
||||||
|
+OBJS = $(FILES:%=%.o) ctors.o
|
||||||
|
|
||||||
|
SUBDIRS = ia32 x64 ia64 aa64 arm mips64el runtime
|
||||||
|
|
||||||
|
diff --git a/lib/ctors.S b/lib/ctors.S
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..522d31b90d2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/lib/ctors.S
|
||||||
|
@@ -0,0 +1,43 @@
|
||||||
|
+/*
|
||||||
|
+ * Try to define the minimal empty init/ctor/dtor/fini_arrays so building with
|
||||||
|
+ * older or out-of-tree linker scripts will still work.
|
||||||
|
+ */
|
||||||
|
+/*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+ .section .init_array, "aM", @init_array
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl _init_array
|
||||||
|
+_init_array:
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl _init_array_end
|
||||||
|
+_init_array_end:
|
||||||
|
+ .long 0
|
||||||
|
+ .section .ctors, "aM", @init_array
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl __CTOR_LIST__
|
||||||
|
+__CTOR_LIST__:
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl __CTOR_END__
|
||||||
|
+__CTOR_END__:
|
||||||
|
+ .long 0
|
||||||
|
+ .section .dtors, "aM", @fini_array
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl __DTOR_LIST__
|
||||||
|
+__DTOR_LIST__:
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl __DTOR_END__
|
||||||
|
+__DTOR_END__:
|
||||||
|
+ .long 0
|
||||||
|
+ .section .fini_array, "aM", @fini_array
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl _fini_array
|
||||||
|
+_fini_array:
|
||||||
|
+ .p2align 3, 0
|
||||||
|
+ .globl _fini_array_end
|
||||||
|
+_fini_array_end:
|
||||||
|
+ .long 0
|
||||||
|
+
|
||||||
|
diff --git a/lib/entry.c b/lib/entry.c
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..d8526084602
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/lib/entry.c
|
||||||
|
@@ -0,0 +1,67 @@
|
||||||
|
+/*
|
||||||
|
+ * ctors.c
|
||||||
|
+ * Copyright 2019 Peter Jones <pjones@redhat.com>
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <efi.h>
|
||||||
|
+#include <efilib.h>
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Note that these aren't the using the GNU "CONSTRUCTOR" output section
|
||||||
|
+ * command, so they don't start with a size. Because of p2align and the
|
||||||
|
+ * end/END definitions, and the fact that they're mergeable, they can also
|
||||||
|
+ * have NULLs which aren't guaranteed to be at the end.
|
||||||
|
+ */
|
||||||
|
+extern UINTN _init_array, _init_array_end;
|
||||||
|
+extern UINTN __CTOR_LIST__, __CTOR_END__;
|
||||||
|
+extern UINTN _fini_array, _fini_array_end;
|
||||||
|
+extern UINTN __DTOR_LIST__, __DTOR_END__;
|
||||||
|
+
|
||||||
|
+typedef void (*funcp)(void);
|
||||||
|
+
|
||||||
|
+static void ctors(void)
|
||||||
|
+{
|
||||||
|
+ for (funcp *location = (void *)&_init_array; location < (funcp *)&_init_array_end; location++) {
|
||||||
|
+ funcp func = *location;
|
||||||
|
+ if (location != NULL)
|
||||||
|
+ func();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (funcp *location = (void *)&__CTOR_LIST__; location < (funcp *)&__CTOR_END__; location++) {
|
||||||
|
+ funcp func = *location;
|
||||||
|
+ if (location != NULL)
|
||||||
|
+ func();
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void dtors(void)
|
||||||
|
+{
|
||||||
|
+ for (funcp *location = (void *)&__DTOR_LIST__; location < (funcp *)&__DTOR_END__; location++) {
|
||||||
|
+ funcp func = *location;
|
||||||
|
+ if (location != NULL)
|
||||||
|
+ func();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (funcp *location = (void *)&_fini_array; location < (funcp *)&_fini_array_end; location++) {
|
||||||
|
+ funcp func = *location;
|
||||||
|
+ if (location != NULL)
|
||||||
|
+ func();
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+extern EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *systab);
|
||||||
|
+
|
||||||
|
+EFI_STATUS _entry(EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||||
|
+{
|
||||||
|
+ EFI_STATUS status;
|
||||||
|
+ InitializeLib(image, systab);
|
||||||
|
+
|
||||||
|
+ ctors();
|
||||||
|
+ status = efi_main(image, systab);
|
||||||
|
+ dtors();
|
||||||
|
+
|
||||||
|
+ return status;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// vim:fenc=utf-8:tw=75:noet
|
||||||
|
diff --git a/lib/init.c b/lib/init.c
|
||||||
|
index 4f238c0a2cc..726e493919a 100644
|
||||||
|
--- a/lib/init.c
|
||||||
|
+++ b/lib/init.c
|
||||||
|
@@ -46,57 +46,52 @@ Returns:
|
||||||
|
EFI_STATUS Status;
|
||||||
|
CHAR8 *LangCode;
|
||||||
|
|
||||||
|
- if (!LibInitialized) {
|
||||||
|
- LibInitialized = TRUE;
|
||||||
|
- LibFwInstance = FALSE;
|
||||||
|
- LibImageHandle = ImageHandle;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- //
|
||||||
|
- // Set up global pointer to the system table, boot services table,
|
||||||
|
- // and runtime services table
|
||||||
|
- //
|
||||||
|
-
|
||||||
|
- ST = SystemTable;
|
||||||
|
- BS = SystemTable->BootServices;
|
||||||
|
- RT = SystemTable->RuntimeServices;
|
||||||
|
-// ASSERT (CheckCrc(0, &ST->Hdr));
|
||||||
|
-// ASSERT (CheckCrc(0, &BS->Hdr));
|
||||||
|
-// ASSERT (CheckCrc(0, &RT->Hdr));
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- //
|
||||||
|
- // Initialize pool allocation type
|
||||||
|
- //
|
||||||
|
-
|
||||||
|
- if (ImageHandle) {
|
||||||
|
- Status = uefi_call_wrapper(
|
||||||
|
- BS->HandleProtocol,
|
||||||
|
- 3,
|
||||||
|
- ImageHandle,
|
||||||
|
- &LoadedImageProtocol,
|
||||||
|
- (VOID*)&LoadedImage
|
||||||
|
- );
|
||||||
|
-
|
||||||
|
- if (!EFI_ERROR(Status)) {
|
||||||
|
- PoolAllocationType = LoadedImage->ImageDataType;
|
||||||
|
- }
|
||||||
|
- EFIDebugVariable ();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- //
|
||||||
|
- // Initialize Guid table
|
||||||
|
- //
|
||||||
|
-
|
||||||
|
- InitializeGuid();
|
||||||
|
-
|
||||||
|
- InitializeLibPlatform(ImageHandle,SystemTable);
|
||||||
|
+ if (LibInitialized)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ LibInitialized = TRUE;
|
||||||
|
+ LibFwInstance = FALSE;
|
||||||
|
+ LibImageHandle = ImageHandle;
|
||||||
|
+
|
||||||
|
+ //
|
||||||
|
+ // Set up global pointer to the system table, boot services table,
|
||||||
|
+ // and runtime services table
|
||||||
|
+ //
|
||||||
|
+
|
||||||
|
+ ST = SystemTable;
|
||||||
|
+ BS = SystemTable->BootServices;
|
||||||
|
+ RT = SystemTable->RuntimeServices;
|
||||||
|
+ // ASSERT (CheckCrc(0, &ST->Hdr));
|
||||||
|
+ // ASSERT (CheckCrc(0, &BS->Hdr));
|
||||||
|
+ // ASSERT (CheckCrc(0, &RT->Hdr));
|
||||||
|
+
|
||||||
|
+ //
|
||||||
|
+ // Initialize pool allocation type
|
||||||
|
+ //
|
||||||
|
+
|
||||||
|
+ if (ImageHandle) {
|
||||||
|
+ Status = uefi_call_wrapper(
|
||||||
|
+ BS->HandleProtocol,
|
||||||
|
+ 3,
|
||||||
|
+ ImageHandle,
|
||||||
|
+ &LoadedImageProtocol,
|
||||||
|
+ (VOID*)&LoadedImage
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
+ if (!EFI_ERROR(Status)) {
|
||||||
|
+ PoolAllocationType = LoadedImage->ImageDataType;
|
||||||
|
+ }
|
||||||
|
+ EFIDebugVariable ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
- //
|
||||||
|
+ // Initialize Guid table
|
||||||
|
//
|
||||||
|
|
||||||
|
+ InitializeGuid();
|
||||||
|
+
|
||||||
|
+ InitializeLibPlatform(ImageHandle,SystemTable);
|
||||||
|
+
|
||||||
|
if (ImageHandle && UnicodeInterface == &LibStubUnicodeInterface) {
|
||||||
|
LangCode = LibGetVariable (VarLanguage, &EfiGlobalVariable);
|
||||||
|
InitializeUnicodeSupport (LangCode);
|
108
0028-Remove-the-accidental-lib-Makefile.orig.patch
Normal file
108
0028-Remove-the-accidental-lib-Makefile.orig.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Thu, 14 Nov 2019 10:08:08 -0500
|
||||||
|
Subject: [PATCH] Remove the accidental lib/Makefile.orig
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
lib/Makefile.orig | 91 -------------------------------------------------------
|
||||||
|
1 file changed, 91 deletions(-)
|
||||||
|
delete mode 100644 lib/Makefile.orig
|
||||||
|
|
||||||
|
diff --git a/lib/Makefile.orig b/lib/Makefile.orig
|
||||||
|
deleted file mode 100644
|
||||||
|
index 65aa8ca5df2..00000000000
|
||||||
|
--- a/lib/Makefile.orig
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,91 +0,0 @@
|
||||||
|
-#
|
||||||
|
-# Copyright (C) 1999-2001 Hewlett-Packard Co.
|
||||||
|
-# Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||||
|
-# Contributed by Stephane Eranian <eranian@hpl.hp.com>
|
||||||
|
-#
|
||||||
|
-# All rights reserved.
|
||||||
|
-#
|
||||||
|
-# Redistribution and use in source and binary forms, with or without
|
||||||
|
-# modification, are permitted provided that the following conditions
|
||||||
|
-# are met:
|
||||||
|
-#
|
||||||
|
-# * Redistributions of source code must retain the above copyright
|
||||||
|
-# notice, this list of conditions and the following disclaimer.
|
||||||
|
-# * Redistributions in binary form must reproduce the above
|
||||||
|
-# copyright notice, this list of conditions and the following
|
||||||
|
-# disclaimer in the documentation and/or other materials
|
||||||
|
-# provided with the distribution.
|
||||||
|
-# * Neither the name of Hewlett-Packard Co. nor the names of its
|
||||||
|
-# contributors may be used to endorse or promote products derived
|
||||||
|
-# from this software without specific prior written permission.
|
||||||
|
-#
|
||||||
|
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
-# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
-# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||||
|
-# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
-# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
-# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
-# SUCH DAMAGE.
|
||||||
|
-#
|
||||||
|
-
|
||||||
|
-SRCDIR = .
|
||||||
|
-
|
||||||
|
-VPATH = $(SRCDIR)
|
||||||
|
-
|
||||||
|
-include $(SRCDIR)/../Make.defaults
|
||||||
|
-
|
||||||
|
-TOPDIR = $(SRCDIR)/..
|
||||||
|
-
|
||||||
|
-CDIR = $(TOPDIR)/..
|
||||||
|
-FILES = boxdraw smbios console crc data debug dpath \
|
||||||
|
- error event guid hand hw init lock \
|
||||||
|
- misc print sread str cmdline \
|
||||||
|
- runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \
|
||||||
|
- $(ARCH)/initplat $(ARCH)/math
|
||||||
|
-
|
||||||
|
-ifeq ($(ARCH),ia64)
|
||||||
|
-FILES += $(ARCH)/salpal $(ARCH)/palproc
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-ifeq ($(ARCH),x86_64)
|
||||||
|
-FILES += $(ARCH)/callwrap $(ARCH)/efi_stub
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-ifeq ($(ARCH),arm)
|
||||||
|
-FILES += $(ARCH)/lib1funcs $(ARCH)/div64
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-OBJS = $(FILES:%=%.o)
|
||||||
|
-
|
||||||
|
-SUBDIRS = ia32 x86_64 ia64 aarch64 arm runtime
|
||||||
|
-
|
||||||
|
-LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)
|
||||||
|
-
|
||||||
|
-all: libsubdirs libefi.a
|
||||||
|
-
|
||||||
|
-.PHONY: libsubdirs
|
||||||
|
-libsubdirs:
|
||||||
|
- for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
|
||||||
|
-
|
||||||
|
-libefi.a: $(patsubst %,libefi.a(%),$(OBJS))
|
||||||
|
-
|
||||||
|
-clean:
|
||||||
|
- rm -f libefi.a *~ $(OBJS) */*.o
|
||||||
|
-
|
||||||
|
-$(LIBDIRINSTALL):
|
||||||
|
- mkdir -p $@
|
||||||
|
-
|
||||||
|
-$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL)
|
||||||
|
- $(INSTALL) -m 644 $< $(dir $@)
|
||||||
|
-
|
||||||
|
-install: $(LIBDIRINSTALL)/libefi.a
|
||||||
|
-
|
||||||
|
-include $(SRCDIR)/../Make.rules
|
||||||
|
-
|
||||||
|
-.PHONY: libsubdirs
|
24
0029-gitignore-add-our-build-directories.patch
Normal file
24
0029-gitignore-add-our-build-directories.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 13 Nov 2019 13:38:20 -0500
|
||||||
|
Subject: [PATCH] gitignore: add our build directories.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
.gitignore | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/.gitignore b/.gitignore
|
||||||
|
index 970b638e0c0..014f7d02f46 100644
|
||||||
|
--- a/.gitignore
|
||||||
|
+++ b/.gitignore
|
||||||
|
@@ -4,3 +4,9 @@
|
||||||
|
*.a
|
||||||
|
*.tar.*
|
||||||
|
*.tar
|
||||||
|
+aa64
|
||||||
|
+arm
|
||||||
|
+ia32
|
||||||
|
+ia64
|
||||||
|
+mips64el
|
||||||
|
+x64
|
50
0030-make-Fix-shell-exit-status-handling.patch
Normal file
50
0030-make-Fix-shell-exit-status-handling.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Thu, 14 Nov 2019 09:54:39 -0500
|
||||||
|
Subject: [PATCH] make: Fix shell exit status handling.
|
||||||
|
|
||||||
|
Right now whenever we have shell commands with loops, errors in the
|
||||||
|
middle are accidentally ignored, and make continues to process commands.
|
||||||
|
|
||||||
|
This adds "set -e" to all of those, so they'll propagate back up.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile | 4 ++--
|
||||||
|
lib/Makefile | 2 +-
|
||||||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 84f07d33a48..a461a5c3483 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -81,14 +81,14 @@ $(SUBDIRS):
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~
|
||||||
|
- @for d in $(SUBDIRS); do \
|
||||||
|
+ @set -e ; for d in $(SUBDIRS); do \
|
||||||
|
if [ -d $(OBJDIR)/$$d ]; then \
|
||||||
|
$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d clean; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install:
|
||||||
|
- @for d in $(SUBDIRS); do \
|
||||||
|
+ @set -e ; for d in $(SUBDIRS); do \
|
||||||
|
mkdir -p $(OBJDIR)/$$d; \
|
||||||
|
$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d install; done
|
||||||
|
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index e7eafc01f1e..6fd472ad1ac 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -72,7 +72,7 @@ all: libsubdirs libefi.a
|
||||||
|
|
||||||
|
.PHONY: libsubdirs
|
||||||
|
libsubdirs:
|
||||||
|
- for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
|
||||||
|
+ @set -e ; for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
|
||||||
|
|
||||||
|
libefi.a: $(OBJS)
|
||||||
|
$(AR) $(ARFLAGS) $@ $^
|
94
0031-make-Make-make-clean-use-and-rm-v-everywhere.patch
Normal file
94
0031-make-Make-make-clean-use-and-rm-v-everywhere.patch
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Thu, 14 Nov 2019 09:55:07 -0500
|
||||||
|
Subject: [PATCH] make: Make "make clean" use @ and rm -v everywhere
|
||||||
|
|
||||||
|
This makes our "make clean" commands show what they've /removed/, rather
|
||||||
|
than what the shell code that will be run is.
|
||||||
|
|
||||||
|
It also consolidates our list of arches into an ARCHES variable defined
|
||||||
|
in Make.defaults
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 2 ++
|
||||||
|
Makefile | 2 +-
|
||||||
|
apps/Makefile | 2 +-
|
||||||
|
gnuefi/Makefile | 2 +-
|
||||||
|
lib/Makefile | 4 ++--
|
||||||
|
5 files changed, 7 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 585f3a00aa5..b8a3e07b681 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -36,6 +36,8 @@
|
||||||
|
|
||||||
|
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||||
|
|
||||||
|
+ARCHES=aa64 arm ia32 ia64 mips64el x64
|
||||||
|
+
|
||||||
|
#
|
||||||
|
# Variables below overridable from command-line:
|
||||||
|
# make VARNAME=value ...
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index a461a5c3483..eecce6d9736 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -80,7 +80,7 @@ $(SUBDIRS):
|
||||||
|
$(MAKE) -C $(OBJDIR)/$@ -f $(SRCDIR)/$@/Makefile SRCDIR=$(SRCDIR)/$@ ARCH=$(ARCH)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f *~
|
||||||
|
+ @rm -vrf *~ $(foreach x,$(ARCHES),$(x)/)
|
||||||
|
@set -e ; for d in $(SUBDIRS); do \
|
||||||
|
if [ -d $(OBJDIR)/$$d ]; then \
|
||||||
|
$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d clean; \
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index 28088370da7..04cf251cb2f 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -91,7 +91,7 @@ all: $(TARGETS)
|
||||||
|
ctors_test.so : ctors_fns.o ctors_test.o
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f $(TARGETS) *~ *.o *.so
|
||||||
|
+ @rm -vf $(TARGETS) *~ *.o *.so
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index df67ee83911..09b40cc421e 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -59,7 +59,7 @@ libgnuefi.a: $(OBJS)
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f $(TARGETS) *~ *.o $(OBJS)
|
||||||
|
+ @rm -vf $(TARGETS) *~ *.o $(OBJS)
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(INSTALLROOT)$(LIBDIR)
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 6fd472ad1ac..4a7619aaacf 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -64,7 +64,7 @@ endif
|
||||||
|
|
||||||
|
OBJS = $(FILES:%=%.o) ctors.o
|
||||||
|
|
||||||
|
-SUBDIRS = ia32 x64 ia64 aa64 arm mips64el runtime
|
||||||
|
+SUBDIRS = $(ARCHES) runtime
|
||||||
|
|
||||||
|
LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ libefi.a: $(OBJS)
|
||||||
|
$(AR) $(ARFLAGS) $@ $^
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f libefi.a *~ $(OBJS) */*.o
|
||||||
|
+ @rm -vf libefi.a *~ $(OBJS) */*.o
|
||||||
|
|
||||||
|
$(LIBDIRINSTALL):
|
||||||
|
mkdir -p $@
|
@ -0,0 +1,79 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Mon, 30 Sep 2019 14:29:45 -0400
|
||||||
|
Subject: [PATCH] Make our dummy .reloc sections not depend on section order.
|
||||||
|
|
||||||
|
Currently on x64 we manually build a dummy .reloc table entry by using a
|
||||||
|
symbol in .text and subtracting its address from another symbol that's
|
||||||
|
inside the .reloc section. On ia32 we just use its location. In either
|
||||||
|
case, if the linker puts either section in a location we're not
|
||||||
|
expecting, the .reloc table winds up having invalid values, and the PE
|
||||||
|
loader will fail to load the binary.
|
||||||
|
|
||||||
|
This changes it to be two symbols that are both in .text, making the
|
||||||
|
result unrelated to the section order or location.
|
||||||
|
|
||||||
|
It's not clear to me that these .reloc entries are actually necessary at
|
||||||
|
all, but I'm going to leave them in place for now, in case they are.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
gnuefi/crt0-efi-ia32.S | 17 +++++++++--------
|
||||||
|
gnuefi/crt0-efi-x64.S | 16 ++++++++--------
|
||||||
|
2 files changed, 17 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gnuefi/crt0-efi-ia32.S b/gnuefi/crt0-efi-ia32.S
|
||||||
|
index 8e8e372f551..031a592ab35 100644
|
||||||
|
--- a/gnuefi/crt0-efi-ia32.S
|
||||||
|
+++ b/gnuefi/crt0-efi-ia32.S
|
||||||
|
@@ -64,13 +64,14 @@ _start:
|
||||||
|
.exit: leave
|
||||||
|
ret
|
||||||
|
|
||||||
|
- // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable:
|
||||||
|
-
|
||||||
|
- .data
|
||||||
|
-dummy: .long 0
|
||||||
|
+ // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable:
|
||||||
|
+ .data
|
||||||
|
+.dummy0:
|
||||||
|
+.dummy1:
|
||||||
|
+ .long 0
|
||||||
|
|
||||||
|
#define IMAGE_REL_ABSOLUTE 0
|
||||||
|
- .section .reloc
|
||||||
|
- .long dummy // Page RVA
|
||||||
|
- .long 10 // Block Size (2*4+2)
|
||||||
|
- .word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
|
||||||
|
+ .section .reloc, "a"
|
||||||
|
+ .long .dummy1-.dummy0 // Page RVA
|
||||||
|
+ .long 10 // Block Size (2*4+2)
|
||||||
|
+ .word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
|
||||||
|
diff --git a/gnuefi/crt0-efi-x64.S b/gnuefi/crt0-efi-x64.S
|
||||||
|
index 3fe361b7ffd..5c86cde12e8 100644
|
||||||
|
--- a/gnuefi/crt0-efi-x64.S
|
||||||
|
+++ b/gnuefi/crt0-efi-x64.S
|
||||||
|
@@ -62,15 +62,15 @@ _start:
|
||||||
|
.exit:
|
||||||
|
ret
|
||||||
|
|
||||||
|
- // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable:
|
||||||
|
-
|
||||||
|
- .data
|
||||||
|
-dummy: .long 0
|
||||||
|
+ // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable:
|
||||||
|
+ .data
|
||||||
|
+.dummy0:
|
||||||
|
+.dummy1:
|
||||||
|
+ .long 0
|
||||||
|
|
||||||
|
#define IMAGE_REL_ABSOLUTE 0
|
||||||
|
- .section .reloc, "a"
|
||||||
|
-label1:
|
||||||
|
- .long dummy-label1 // Page RVA
|
||||||
|
- .long 10 // Block Size (2*4+2)
|
||||||
|
+ .section .reloc, "a"
|
||||||
|
+ .long .dummy1-.dummy0 // Page RVA
|
||||||
|
+ .long 10 // Block Size (2*4+2)
|
||||||
|
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
|
||||||
|
|
204
0033-Make-CHAR8-and-similar-be-defined-the-same-way-edk2-.patch
Normal file
204
0033-Make-CHAR8-and-similar-be-defined-the-same-way-edk2-.patch
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Tue, 27 Aug 2019 13:44:15 -0400
|
||||||
|
Subject: [PATCH] Make CHAR8 and similar be defined the same way edk2 does it.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
inc/aa64/efibind.h | 7 +++++++
|
||||||
|
inc/arm/efibind.h | 7 +++++++
|
||||||
|
inc/efidef.h | 7 +++----
|
||||||
|
inc/ia32/efibind.h | 7 +++++++
|
||||||
|
inc/ia64/efibind.h | 11 +++++++++--
|
||||||
|
inc/mips64el/efibind.h | 7 +++++++
|
||||||
|
inc/x64/efibind.h | 4 ++++
|
||||||
|
7 files changed, 44 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/inc/aa64/efibind.h b/inc/aa64/efibind.h
|
||||||
|
index c4eafa0d8a8..00c7cead486 100644
|
||||||
|
--- a/inc/aa64/efibind.h
|
||||||
|
+++ b/inc/aa64/efibind.h
|
||||||
|
@@ -43,6 +43,9 @@ typedef int64_t intptr_t;
|
||||||
|
#ifndef __WCHAR_TYPE__
|
||||||
|
# define __WCHAR_TYPE__ short
|
||||||
|
#endif
|
||||||
|
+#ifndef __CHAR16_TYPE__
|
||||||
|
+# define __CHAR16_TYPE__ unsigned short
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef uint64_t UINT64;
|
||||||
|
typedef int64_t INT64;
|
||||||
|
@@ -51,9 +54,13 @@ typedef uint32_t UINT32;
|
||||||
|
typedef int32_t INT32;
|
||||||
|
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
#undef VOID
|
||||||
|
diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h
|
||||||
|
index 012d3d2f8c9..42de542257c 100644
|
||||||
|
--- a/inc/arm/efibind.h
|
||||||
|
+++ b/inc/arm/efibind.h
|
||||||
|
@@ -49,6 +49,9 @@ typedef int32_t intptr_t;
|
||||||
|
#ifndef __WCHAR_TYPE__
|
||||||
|
# define __WCHAR_TYPE__ short
|
||||||
|
#endif
|
||||||
|
+#ifndef __CHAR16_TYPE__
|
||||||
|
+# define __CHAR16_TYPE__ unsigned short
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef uint64_t UINT64;
|
||||||
|
typedef int64_t INT64;
|
||||||
|
@@ -57,9 +60,13 @@ typedef uint32_t UINT32;
|
||||||
|
typedef int32_t INT32;
|
||||||
|
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
#undef VOID
|
||||||
|
diff --git a/inc/efidef.h b/inc/efidef.h
|
||||||
|
index 8b70051f43a..a552c7d91c3 100644
|
||||||
|
--- a/inc/efidef.h
|
||||||
|
+++ b/inc/efidef.h
|
||||||
|
@@ -20,9 +20,8 @@ Revision History
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
-typedef UINT16 CHAR16;
|
||||||
|
-typedef UINT8 CHAR8;
|
||||||
|
-typedef UINT8 BOOLEAN;
|
||||||
|
+typedef unsigned char BOOLEAN;
|
||||||
|
+
|
||||||
|
#ifndef CONST
|
||||||
|
#define CONST const
|
||||||
|
#endif
|
||||||
|
@@ -194,7 +193,7 @@ typedef struct {
|
||||||
|
// International Language
|
||||||
|
//
|
||||||
|
|
||||||
|
-typedef UINT8 ISO_639_2;
|
||||||
|
+typedef CHAR8 ISO_639_2;
|
||||||
|
#define ISO_639_2_ENTRY_SIZE 3
|
||||||
|
|
||||||
|
//
|
||||||
|
diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h
|
||||||
|
index 27459e454d1..b0b0d76151f 100644
|
||||||
|
--- a/inc/ia32/efibind.h
|
||||||
|
+++ b/inc/ia32/efibind.h
|
||||||
|
@@ -88,6 +88,9 @@ Revision History
|
||||||
|
#ifndef __WCHAR_TYPE__
|
||||||
|
# define __WCHAR_TYPE__ short
|
||||||
|
#endif
|
||||||
|
+#ifndef __CHAR16_TYPE__
|
||||||
|
+# define __CHAR16_TYPE__ unsigned short
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef uint64_t UINT64;
|
||||||
|
typedef int64_t INT64;
|
||||||
|
@@ -98,9 +101,13 @@ typedef int64_t INT64;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
#undef VOID
|
||||||
|
diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h
|
||||||
|
index 3ace8d59190..ebe8cac3e94 100644
|
||||||
|
--- a/inc/ia64/efibind.h
|
||||||
|
+++ b/inc/ia64/efibind.h
|
||||||
|
@@ -74,19 +74,26 @@ Revision History
|
||||||
|
#ifndef __WCHAR_TYPE__
|
||||||
|
# define __WCHAR_TYPE__ short
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
+#ifndef __CHAR16_TYPE__
|
||||||
|
+# define __CHAR16_TYPE__ unsigned short
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef uint64_t UINT64;
|
||||||
|
typedef int64_t INT64;
|
||||||
|
+
|
||||||
|
typedef uint32_t UINT32;
|
||||||
|
typedef int32_t INT32;
|
||||||
|
+
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
-
|
||||||
|
#undef VOID
|
||||||
|
#define VOID void
|
||||||
|
|
||||||
|
diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h
|
||||||
|
index 1f08cd346d0..e26c51904ee 100644
|
||||||
|
--- a/inc/mips64el/efibind.h
|
||||||
|
+++ b/inc/mips64el/efibind.h
|
||||||
|
@@ -43,6 +43,9 @@ typedef int64_t intptr_t;
|
||||||
|
#ifndef __WCHAR_TYPE__
|
||||||
|
# define __WCHAR_TYPE__ short
|
||||||
|
#endif
|
||||||
|
+#ifndef __CHAR16_TYPE__
|
||||||
|
+# define __CHAR16_TYPE__ unsigned short
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef uint64_t UINT64;
|
||||||
|
typedef int64_t INT64;
|
||||||
|
@@ -51,9 +54,13 @@ typedef uint32_t UINT32;
|
||||||
|
typedef int32_t INT32;
|
||||||
|
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
#undef VOID
|
||||||
|
diff --git a/inc/x64/efibind.h b/inc/x64/efibind.h
|
||||||
|
index 2750ab9be7d..e7feed9dbe4 100644
|
||||||
|
--- a/inc/x64/efibind.h
|
||||||
|
+++ b/inc/x64/efibind.h
|
||||||
|
@@ -107,9 +107,13 @@ typedef int64_t INT64;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef uint16_t UINT16;
|
||||||
|
+typedef __CHAR16_TYPE__ CHAR16;
|
||||||
|
typedef int16_t INT16;
|
||||||
|
+
|
||||||
|
typedef uint8_t UINT8;
|
||||||
|
+typedef char CHAR8;
|
||||||
|
typedef int8_t INT8;
|
||||||
|
+
|
||||||
|
typedef __WCHAR_TYPE__ WCHAR;
|
||||||
|
|
||||||
|
#undef VOID
|
101
0034-Make-make-TOPDIR-actually-work-and-get-rid-of-unused.patch
Normal file
101
0034-Make-make-TOPDIR-actually-work-and-get-rid-of-unused.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:36:18 -0400
|
||||||
|
Subject: [PATCH] Make: make TOPDIR actually work and get rid of unused CDIR
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 2 +-
|
||||||
|
apps/Makefile | 6 ++----
|
||||||
|
gnuefi/Makefile | 6 ++----
|
||||||
|
inc/Makefile | 5 +----
|
||||||
|
lib/Makefile | 2 +-
|
||||||
|
5 files changed, 7 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index b8a3e07b681..696028dd6c2 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -34,7 +34,7 @@
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
-TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||||
|
+TOPDIR ?= $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||||
|
|
||||||
|
ARCHES=aa64 arm ia32 ia64 mips64el x64
|
||||||
|
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index 04cf251cb2f..3b96f153a23 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -37,12 +37,10 @@
|
||||||
|
SRCDIR = .
|
||||||
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
-
|
||||||
|
-include $(SRCDIR)/../Make.defaults
|
||||||
|
-
|
||||||
|
TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
-CDIR=$(TOPDIR)/..
|
||||||
|
+include $(SRCDIR)/../Make.defaults
|
||||||
|
+
|
||||||
|
LINUX_HEADERS = /usr/src/sys/build
|
||||||
|
CPPFLAGS += -D__KERNEL__ -I$(LINUX_HEADERS)/include
|
||||||
|
CRTOBJS = $(TOPDIR)/$(ARCH)/gnuefi/crt0-efi-$(ARCH).o
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index 09b40cc421e..bea629b0b29 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -37,12 +37,10 @@
|
||||||
|
SRCDIR = .
|
||||||
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
-
|
||||||
|
-include $(SRCDIR)/../Make.defaults
|
||||||
|
-
|
||||||
|
TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
-CDIR=$(TOPDIR)/..
|
||||||
|
+include $(SRCDIR)/../Make.defaults
|
||||||
|
+
|
||||||
|
FILES = reloc_$(ARCH)
|
||||||
|
|
||||||
|
OBJS = $(FILES:%=%.o)
|
||||||
|
diff --git a/inc/Makefile b/inc/Makefile
|
||||||
|
index dd36bb0103d..13022fd6ae1 100644
|
||||||
|
--- a/inc/Makefile
|
||||||
|
+++ b/inc/Makefile
|
||||||
|
@@ -1,12 +1,9 @@
|
||||||
|
SRCDIR = .
|
||||||
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
-
|
||||||
|
-include $(SRCDIR)/../Make.defaults
|
||||||
|
-
|
||||||
|
TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
-CDIR=$(TOPDIR)/..
|
||||||
|
+include $(SRCDIR)/../Make.defaults
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 4a7619aaacf..6dca2cf1398 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -37,12 +37,12 @@
|
||||||
|
SRCDIR = .
|
||||||
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
+TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
|
||||||
|
TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
-CDIR = $(TOPDIR)/..
|
||||||
|
FILES = boxdraw smbios console crc data debug dpath \
|
||||||
|
entry error event exit guid hand hw init lock \
|
||||||
|
misc print sread str cmdline \
|
38
0035-Make-make-make-DESTDIR-.-foo-install-work-right.patch
Normal file
38
0035-Make-make-make-DESTDIR-.-foo-install-work-right.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:39:35 -0400
|
||||||
|
Subject: [PATCH] Make: make "make DESTDIR=../foo install" work right.
|
||||||
|
|
||||||
|
This makes the normal DESTDIR= variable work on the command line, and
|
||||||
|
makes relative paths always relative to the top-level directory.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 14 +++++++++++++-
|
||||||
|
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 696028dd6c2..157559d20ee 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -47,7 +47,19 @@ ARCHES=aa64 arm ia32 ia64 mips64el x64
|
||||||
|
# Where to install the package. GNU-EFI will create and access
|
||||||
|
# lib and include under the root
|
||||||
|
#
|
||||||
|
-INSTALLROOT := /
|
||||||
|
+DESTDIR ?= /
|
||||||
|
+ifeq ($(origin INSTALLROOT),undefined)
|
||||||
|
+INSTALLROOT = $(DESTDIR)
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+empty :=
|
||||||
|
+space := $(empty) $(empty)
|
||||||
|
+stripped = $(subst $(space),/,$(strip $(subst /,$(space),$(1))))
|
||||||
|
+unstripped = $(subst $(space),/,$(subst /,$(space),$(1)))
|
||||||
|
+is_absolute = $(subst $(call stripped,$(1)),$(empty),$(call unstripped,$(1)))
|
||||||
|
+
|
||||||
|
+override INSTALLROOT:=$(if $(call is_absolute,$(INSTALLROOT)),,$(TOPDIR)/)$(INSTALLROOT)
|
||||||
|
+
|
||||||
|
PREFIX := /usr/local
|
||||||
|
LIBDIR := $(PREFIX)/lib
|
||||||
|
INSTALL := install
|
134
0036-Install-our-libraries-in-LIBDIR-gnuefi-ARCH.patch
Normal file
134
0036-Install-our-libraries-in-LIBDIR-gnuefi-ARCH.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:41:16 -0400
|
||||||
|
Subject: [PATCH] Install our libraries in $(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
|
||||||
|
This makes it possible to install all the output on the same machine for
|
||||||
|
cross-builds. This also adds "install_compat", which uses the previous
|
||||||
|
paths.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 1 +
|
||||||
|
Makefile | 4 ++--
|
||||||
|
apps/Makefile | 2 +-
|
||||||
|
gnuefi/Makefile | 22 ++++++++++++++++++----
|
||||||
|
inc/Makefile | 3 +++
|
||||||
|
lib/Makefile | 5 ++++-
|
||||||
|
6 files changed, 29 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 157559d20ee..7231e9bced2 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -72,6 +72,7 @@ LD := $(prefix)$(CROSS_COMPILE)ld
|
||||||
|
AR := $(prefix)$(CROSS_COMPILE)ar
|
||||||
|
RANLIB := $(prefix)$(CROSS_COMPILE)ranlib
|
||||||
|
OBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy
|
||||||
|
+SYMLINK := ln -vfs
|
||||||
|
|
||||||
|
|
||||||
|
# Host/target identification
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index eecce6d9736..962ac72b664 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -87,10 +87,10 @@ clean:
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
-install:
|
||||||
|
+install install_compat:
|
||||||
|
@set -e ; for d in $(SUBDIRS); do \
|
||||||
|
mkdir -p $(OBJDIR)/$$d; \
|
||||||
|
- $(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d install; done
|
||||||
|
+ $(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d $@ ; done
|
||||||
|
|
||||||
|
.PHONY: $(SUBDIRS) clean depend
|
||||||
|
|
||||||
|
diff --git a/apps/Makefile b/apps/Makefile
|
||||||
|
index 3b96f153a23..8ab83d58a3c 100644
|
||||||
|
--- a/apps/Makefile
|
||||||
|
+++ b/apps/Makefile
|
||||||
|
@@ -91,6 +91,6 @@ ctors_test.so : ctors_fns.o ctors_test.o
|
||||||
|
clean:
|
||||||
|
@rm -vf $(TARGETS) *~ *.o *.so
|
||||||
|
|
||||||
|
-.PHONY: install
|
||||||
|
+.PHONY: install install_compat
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index bea629b0b29..7652669a7cc 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -60,16 +60,30 @@ clean:
|
||||||
|
@rm -vf $(TARGETS) *~ *.o $(OBJS)
|
||||||
|
|
||||||
|
install:
|
||||||
|
+ mkdir -p $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ $(INSTALL) -m 644 -t $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)/ $(TARGETS)
|
||||||
|
+ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
+ ifeq ($(ARCH),x64)
|
||||||
|
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ else
|
||||||
|
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ endif
|
||||||
|
+else
|
||||||
|
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+install_compat: install
|
||||||
|
mkdir -p $(INSTALLROOT)$(LIBDIR)
|
||||||
|
- $(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(LIBDIR)
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/libgnuefi.a $(INSTALLROOT)$(LIBDIR)/libgnuefi.a
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/crt0-efi-$(ARCH).o $(INSTALLROOT)$(LIBDIR)/crt0-efi-$(BFD_ARCH).o
|
||||||
|
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
ifeq ($(ARCH),x64)
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_fbsd_efi.lds
|
||||||
|
else
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
diff --git a/inc/Makefile b/inc/Makefile
|
||||||
|
index 13022fd6ae1..445d340f0fa 100644
|
||||||
|
--- a/inc/Makefile
|
||||||
|
+++ b/inc/Makefile
|
||||||
|
@@ -17,4 +17,7 @@ install:
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol
|
||||||
|
$(INSTALL) -m 644 $(SRCDIR)/$(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
|
||||||
|
|
||||||
|
+install_compat: install
|
||||||
|
+ @if [ ! -h $(DEST)/$(BFD_ARCH) ]; then $(SYMLINK) $(ARCH) $(INSTALLROOT)$(PREFIX)/include/efi/$(BFD_ARCH) ; fi
|
||||||
|
+
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 6dca2cf1398..f0d7b9b08e6 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -66,7 +66,7 @@ OBJS = $(FILES:%=%.o) ctors.o
|
||||||
|
|
||||||
|
SUBDIRS = $(ARCHES) runtime
|
||||||
|
|
||||||
|
-LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)
|
||||||
|
+LIBDIRINSTALL ?= $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
|
||||||
|
all: libsubdirs libefi.a
|
||||||
|
|
||||||
|
@@ -88,6 +88,9 @@ $(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL)
|
||||||
|
|
||||||
|
install: $(LIBDIRINSTALL)/libefi.a
|
||||||
|
|
||||||
|
+install_compat: install
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/libefi.a $(INSTALLROOT)$(LIBDIR)/libefi.a
|
||||||
|
+
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
.PHONY: libsubdirs
|
42
0037-Install-all-headers-for-all-arches.patch
Normal file
42
0037-Install-all-headers-for-all-arches.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Fri, 25 Oct 2019 15:42:10 -0400
|
||||||
|
Subject: [PATCH] Install all headers for all arches.
|
||||||
|
|
||||||
|
This further enables cross-builds by installing all the arches headers.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
inc/Makefile | 17 ++++++++++-------
|
||||||
|
1 file changed, 10 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/inc/Makefile b/inc/Makefile
|
||||||
|
index 445d340f0fa..e8123fd3115 100644
|
||||||
|
--- a/inc/Makefile
|
||||||
|
+++ b/inc/Makefile
|
||||||
|
@@ -9,15 +9,18 @@ all:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
||||||
|
+SOURCE=$(realpath $(SRCDIR))
|
||||||
|
+DEST=$(INSTALLROOT)$(PREFIX)/include/efi
|
||||||
|
+INCLUDEDIRS=$(sort $(shell find $(SOURCE) -type d))
|
||||||
|
+
|
||||||
|
install:
|
||||||
|
- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi
|
||||||
|
- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol
|
||||||
|
- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/*.h $(INSTALLROOT)$(PREFIX)/include/efi
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/$(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH)
|
||||||
|
+ @$(foreach d,$(INCLUDEDIRS), \
|
||||||
|
+ $(INSTALL) -v -m 755 -d $(subst $(SOURCE),$(DEST),$(d)); \
|
||||||
|
+ $(INSTALL) -v -m 644 -t $(subst $(SOURCE),$(DEST),$(d)) $(wildcard $(d)/*.h); \
|
||||||
|
+ )
|
||||||
|
|
||||||
|
install_compat: install
|
||||||
|
- @if [ ! -h $(DEST)/$(BFD_ARCH) ]; then $(SYMLINK) $(ARCH) $(INSTALLROOT)$(PREFIX)/include/efi/$(BFD_ARCH) ; fi
|
||||||
|
+ @if [ ! -h $(DEST)/x86_64 ]; then $(SYMLINK) x64/ $(DEST)/x86_64 ; fi
|
||||||
|
+ @if [ ! -h $(DEST)/aarch64 ]; then $(SYMLINK) aa64/ $(DEST)/aarch64 ; fi
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.rules
|
63
0038-Rename-our-installed-.o-and-linker-scripts.patch
Normal file
63
0038-Rename-our-installed-.o-and-linker-scripts.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 13 Nov 2019 15:24:27 -0500
|
||||||
|
Subject: [PATCH] Rename our installed .o and linker scripts.
|
||||||
|
|
||||||
|
Since crt0 and our linker scripts are now in a subdirectory, there's no
|
||||||
|
need to make them named differently in the installed machine. This
|
||||||
|
renames them to crt0.o and efi.lds .
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
gnuefi/Makefile | 18 +++++++++---------
|
||||||
|
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
|
||||||
|
index 7652669a7cc..86760f55578 100644
|
||||||
|
--- a/gnuefi/Makefile
|
||||||
|
+++ b/gnuefi/Makefile
|
||||||
|
@@ -55,35 +55,35 @@ all: $(TARGETS)
|
||||||
|
libgnuefi.a: $(OBJS)
|
||||||
|
$(AR) $(ARFLAGS) $@ $^
|
||||||
|
|
||||||
|
-
|
||||||
|
clean:
|
||||||
|
@rm -vf $(TARGETS) *~ *.o $(OBJS)
|
||||||
|
|
||||||
|
install:
|
||||||
|
- mkdir -p $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
- $(INSTALL) -m 644 -t $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)/ $(TARGETS)
|
||||||
|
+ @mkdir -p $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ @$(INSTALL) -v -m 644 -t $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH) libgnuefi.a
|
||||||
|
+ @$(INSTALL) -v -m 644 crt0-efi-$(ARCH).o $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)/crt0.o
|
||||||
|
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
ifeq ($(ARCH),x64)
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ @$(INSTALL) -v -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
else
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ @$(INSTALL) -v -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)/efi.lds
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
|
||||||
|
+ @$(INSTALL) -v -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)/efi.lds
|
||||||
|
endif
|
||||||
|
|
||||||
|
install_compat: install
|
||||||
|
mkdir -p $(INSTALLROOT)$(LIBDIR)
|
||||||
|
$(SYMLINK) gnuefi/$(ARCH)/libgnuefi.a $(INSTALLROOT)$(LIBDIR)/libgnuefi.a
|
||||||
|
- $(SYMLINK) gnuefi/$(ARCH)/crt0-efi-$(ARCH).o $(INSTALLROOT)$(LIBDIR)/crt0-efi-$(BFD_ARCH).o
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/crt0.o $(INSTALLROOT)$(LIBDIR)/crt0-efi-$(BFD_ARCH).o
|
||||||
|
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||||
|
ifeq ($(ARCH),x64)
|
||||||
|
$(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_fbsd_efi.lds
|
||||||
|
else
|
||||||
|
- $(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
- $(SYMLINK) gnuefi/$(ARCH)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
+ $(SYMLINK) gnuefi/$(ARCH)/efi.lds $(INSTALLROOT)$(LIBDIR)/elf_$(BFD_ARCH)_efi.lds
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.rules
|
614
0039-Supply-makefile-templates.patch
Normal file
614
0039-Supply-makefile-templates.patch
Normal file
@ -0,0 +1,614 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 13 Nov 2019 15:24:41 -0500
|
||||||
|
Subject: [PATCH] Supply makefile templates.
|
||||||
|
|
||||||
|
This supplies template makefiles for applications consuming gnu-efi to
|
||||||
|
use as:
|
||||||
|
|
||||||
|
include efi.mk
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 6 +-
|
||||||
|
inc/.gitignore | 2 +
|
||||||
|
inc/Makefile | 25 ++++++++-
|
||||||
|
inc/aa64.mk | 21 +++++++
|
||||||
|
inc/arm.mk | 21 +++++++
|
||||||
|
inc/efi.mk.3.in | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
inc/efi.mk.in | 126 +++++++++++++++++++++++++++++++++++++++++
|
||||||
|
inc/ia32.mk | 30 ++++++++++
|
||||||
|
inc/ia64.mk | 19 +++++++
|
||||||
|
inc/mips64el.mk | 22 ++++++++
|
||||||
|
inc/x64.mk | 31 ++++++++++
|
||||||
|
11 files changed, 470 insertions(+), 4 deletions(-)
|
||||||
|
create mode 100644 inc/.gitignore
|
||||||
|
create mode 100644 inc/aa64.mk
|
||||||
|
create mode 100644 inc/arm.mk
|
||||||
|
create mode 100644 inc/efi.mk.3.in
|
||||||
|
create mode 100644 inc/efi.mk.in
|
||||||
|
create mode 100644 inc/ia32.mk
|
||||||
|
create mode 100644 inc/ia64.mk
|
||||||
|
create mode 100644 inc/mips64el.mk
|
||||||
|
create mode 100644 inc/x64.mk
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 7231e9bced2..01269660ab8 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -82,12 +82,14 @@ HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
-e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
-e s,aarch64,aa64, \
|
||||||
|
-e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ -e 's,mips64.*,mips64el,g' \
|
||||||
|
)
|
||||||
|
ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
-e s,i[3456789]86,ia32, \
|
||||||
|
-e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
-e s,aarch64,aa64, \
|
||||||
|
-e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ -e 's,mips64.*,mips64el,g' \
|
||||||
|
)
|
||||||
|
BFD_ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed \
|
||||||
|
-e s,i[3456789]86,ia32, \
|
||||||
|
@@ -102,6 +104,7 @@ ifneq ($(CROSS_COMPILE),)
|
||||||
|
-e s,amd64,x64, -e s,x86_64,x64, \
|
||||||
|
-e s,aarch64,aa64, \
|
||||||
|
-e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ -e 's,mips64.*,mips64el,g' \
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
@@ -161,7 +164,8 @@ ifneq (,$(filter $(ARCH),ia32 x64))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH),mips64el)
|
||||||
|
- CFLAGS += -march=mips64r2
|
||||||
|
+ CFLAGS += -march=mips64r2 -EL
|
||||||
|
+ LDFLAGS += -EL
|
||||||
|
ARCH3264 = -mabi=64
|
||||||
|
endif
|
||||||
|
|
||||||
|
diff --git a/inc/.gitignore b/inc/.gitignore
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..91716c91aab
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/.gitignore
|
||||||
|
@@ -0,0 +1,2 @@
|
||||||
|
+efi.mk
|
||||||
|
+efi.mk.3
|
||||||
|
diff --git a/inc/Makefile b/inc/Makefile
|
||||||
|
index e8123fd3115..c7f1406f026 100644
|
||||||
|
--- a/inc/Makefile
|
||||||
|
+++ b/inc/Makefile
|
||||||
|
@@ -5,19 +5,38 @@ TOPDIR = $(SRCDIR)/..
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
|
||||||
|
+# deliberately not putting efi.mk and efi.mk.3 in all, because PREFIX is often
|
||||||
|
+# not passed before "make install".
|
||||||
|
all:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
+ @rm -vf efi.mk
|
||||||
|
+
|
||||||
|
+efi.mk efi.mk.3 : % : %.in
|
||||||
|
+ sed \
|
||||||
|
+ -e 's,@@CC@@,$(CC),g' \
|
||||||
|
+ -e 's,@@PREFIX@@,$(PREFIX),g' \
|
||||||
|
+ -e 's,@@INCDIR@@,$(PREFIX)/include/efi,g' \
|
||||||
|
+ -e 's,@@GNUEFIDIR@@,$(LIBDIR)/gnuefi/$$(EFI_ARCH),g' \
|
||||||
|
+ -e 's,@@LIBEFIDIR@@,$(LIBDIR)/gnuefi/$$(EFI_ARCH),g' \
|
||||||
|
+ $^ > $@
|
||||||
|
|
||||||
|
SOURCE=$(realpath $(SRCDIR))
|
||||||
|
-DEST=$(INSTALLROOT)$(PREFIX)/include/efi
|
||||||
|
+DESTINCDIR=$(INSTALLROOT)$(PREFIX)/include
|
||||||
|
+DEST=$(DESTINCDIR)/efi
|
||||||
|
INCLUDEDIRS=$(sort $(shell find $(SOURCE) -type d))
|
||||||
|
+MANDIR ?= $(PREFIX)/share/man
|
||||||
|
|
||||||
|
-install:
|
||||||
|
+install: efi.mk efi.mk.3
|
||||||
|
@$(foreach d,$(INCLUDEDIRS), \
|
||||||
|
$(INSTALL) -v -m 755 -d $(subst $(SOURCE),$(DEST),$(d)); \
|
||||||
|
- $(INSTALL) -v -m 644 -t $(subst $(SOURCE),$(DEST),$(d)) $(wildcard $(d)/*.h); \
|
||||||
|
+ $(INSTALL) -v -m 644 -t $(subst $(SOURCE),$(DEST),$(d)) $(wildcard $(d)/*.h $(d)/*.mk); \
|
||||||
|
)
|
||||||
|
+ @$(INSTALL) -v -m 644 -t $(DESTINCDIR) efi.mk
|
||||||
|
+ @$(INSTALL) -v -m 755 -d $(INSTALLROOT)$(MANDIR)/man3
|
||||||
|
+ @$(INSTALL) -v -m 644 -t $(INSTALLROOT)$(MANDIR)/man3 efi.mk.3
|
||||||
|
+
|
||||||
|
+.PHONY: install
|
||||||
|
|
||||||
|
install_compat: install
|
||||||
|
@if [ ! -h $(DEST)/x86_64 ]; then $(SYMLINK) x64/ $(DEST)/x86_64 ; fi
|
||||||
|
diff --git a/inc/aa64.mk b/inc/aa64.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..406915ef742
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/aa64.mk
|
||||||
|
@@ -0,0 +1,21 @@
|
||||||
|
+#
|
||||||
|
+# efi-aa64.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),aa64)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_3264 :=
|
||||||
|
+EFI_ARCH_SUBSYSTEM := 0xa
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -mstrict-align -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS := --defsym=EFI_SUBSYSTEM=$(EFI_ARCH_SUBSYSTEM)
|
||||||
|
+EFI_ARCH_FORMAT := -O binary
|
||||||
|
+EFI_ARCH_SUFFIX := aa64
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := AA64
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 72
|
||||||
|
+EFI_ARCH_HAVE_OBJCOPY := y
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CCLDFLAGS EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264 EFI_ARCH_HAVE_OBJCOPY
|
||||||
|
+endif
|
||||||
|
diff --git a/inc/arm.mk b/inc/arm.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..b47c9c7c61e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/arm.mk
|
||||||
|
@@ -0,0 +1,21 @@
|
||||||
|
+#
|
||||||
|
+# efi-arm.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),arm)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_3264 :=
|
||||||
|
+EFI_ARCH_SUBSYSTEM := 0xa
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -mno-unaligned-access -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS := --defsym=EFI_SUBSYSTEM=$(EFI_ARCH_SUBSYSTEM)
|
||||||
|
+EFI_ARCH_FORMAT := -O binary
|
||||||
|
+EFI_ARCH_SUFFIX := arm
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := ARM
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 72
|
||||||
|
+EFI_ARCH_HAVE_OBJCOPY := y
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264 EFI_ARCH_HAVE_OBJCOPY
|
||||||
|
+endif
|
||||||
|
diff --git a/inc/efi.mk.3.in b/inc/efi.mk.3.in
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..c0bf3f123ed
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/efi.mk.3.in
|
||||||
|
@@ -0,0 +1,171 @@
|
||||||
|
+.TH efi.mk 3 "Thu Nov 21 2019"
|
||||||
|
+.SH NAME
|
||||||
|
+efi.mk
|
||||||
|
+.SH SYNOPSIS
|
||||||
|
+.nf
|
||||||
|
+.B include efi.mk
|
||||||
|
+.SH DESCRIPTION
|
||||||
|
+.ad l
|
||||||
|
+.nh
|
||||||
|
+The \fBgnu-efi\fR library provides a set of makefiles which produce \fBEFI\fR
|
||||||
|
+binaries on the supported platforms, as well as a number of make variables
|
||||||
|
+which can be set to control how each step gets built. These can be set in your
|
||||||
|
+makefile or on the command line, but are normally set to reasonable defaults.
|
||||||
|
+Usually you'll just want to use the \fI+=\fR operator, as shown in the
|
||||||
|
+.BR EXAMPLES
|
||||||
|
+section below, rather than fully replacing these.
|
||||||
|
+.SS make variables
|
||||||
|
+.RS 4
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARCH_CFLAGS\fR
|
||||||
|
+Architecture specific \fBgcc\fR command line options for building a \fI.efi.o\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARCH_LDFLAGS\fR
|
||||||
|
+Architecture specific \fBld\fR command line options for building the \fI.efi.so\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARCH_FORMAT\fR
|
||||||
|
+Architecture specific \fBobjcopy\fR arguments for building the final \fI.efi\fR binary
|
||||||
|
+.TP
|
||||||
|
+.B \fBCROSS_COMPILE\fR
|
||||||
|
+Compiler prefix for cross-compilation. For example, "\fIaarch64-linux-gnu-\fR".
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CC\fR
|
||||||
|
+\p The C compiler. Defaults to either \fI$(CROSS_COMPILE)gcc\fR or \fI$(CROSS_COMPILE)clang\fR,
|
||||||
|
+depending on what \fI$(CC)\fR was set to when \fBgnu-efi\fR was built.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_HOSTCC\fR
|
||||||
|
+Defaults to whatever \fI$(CC)\fR was set to when \fBgnu-efi\fR was built.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_HOSTARCH\fR
|
||||||
|
+One of \fIaa64\fR, \fIarm\fR, \fIia32\fR, \fIia64\fR, \fIx64\fR, or
|
||||||
|
+\fImips64el\fR, representing the \fBEFI\fR architecture name of the host machine
|
||||||
|
+during the build.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARCH\fR
|
||||||
|
+One of \fIaa64\fR, \fIarm\fR, \fIia32\fR, \fIia64\fR, \fIx64\fR, or
|
||||||
|
+\fImips64el\fR, representing the \fBEFI\fR architecture name of the target.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_BFDARCH\fR
|
||||||
|
+The architecture name for the BFD target for objcopy.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARCH_3264\fR
|
||||||
|
+Usually empty; if you're cross compiling, this will default to e.g. \fI-m64\fR if
|
||||||
|
+you're building for an \fIx64\fR target on an \fIi686\fR host.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CC_INCLUDES\fR
|
||||||
|
+The list of default include path for the compiler, as a \fBgcc\fR command line
|
||||||
|
+argument. Defaults to the output of \fI$(EFI_CC) $(EFI_ARCH_3264)
|
||||||
|
+-print-file-name=include\fR, for example
|
||||||
|
+\fI/usr/lib/gcc/x86_64-redhat-linux/9/include\fR. Note that there is no
|
||||||
|
+\fI-I\fR prefix on these.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_INCLUDES\fR
|
||||||
|
+The \fBgnu-efi\fR include paths. Note that there is no \fI-I\fR prefix on these.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CPPFLAGS\fR
|
||||||
|
+Flags passed to \fBgcc\fR regardless of the build target.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CFLAGS\fR
|
||||||
|
+Flags passed to \fBgcc\fR for building any binary target. Defaults to
|
||||||
|
+\fI$(EFI_CPPFLAGS) $(EFI_ARCH_CFLAGS)\fR.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_LDSCRIPT\fR
|
||||||
|
+The linker script passed to \fBld -T\fR for linking \fI.efi.so\fR build targets.
|
||||||
|
+Defaults to \fI@@PREFIX@@/lib/gnuefi/$(EFI_ARCH)/efi.lds\fR.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_LIBGCC\fR
|
||||||
|
+The path to \fBlibgcc\fR. Defaults to the result of
|
||||||
|
+\fI$(EFI_CC) $(EFI_ARCH_3264) -print-libgcc-file-name\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_LDFLAGS\fR
|
||||||
|
+Other command line to pass to \fBld\fR
|
||||||
|
+.ul
|
||||||
|
+before
|
||||||
|
+object names. Defaults to
|
||||||
|
+\fI-nostdlib --warn-common --no-undefined --fatal-warnings \
|
||||||
|
+--build-id=sha1 -shared -Bsymbolic -L@@PREFIX@@/lib/gnuefi/$(EFI_ARCH) \
|
||||||
|
+@@PREFIX@@/lib/gnuefi/$(EFI_ARCH)/crt0.o\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CCLDFLAGS\fR
|
||||||
|
+Normally derived from \fI$(EFI_LDFLAGS)\fR.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_LDLIBS\fR
|
||||||
|
+Libraries to pass to \fBld\fR
|
||||||
|
+.ul
|
||||||
|
+after
|
||||||
|
+target object names. Defaults
|
||||||
|
+to \fI-lefi -lgnuefi $(EFI_LIBGCC) -T $(EFI_LDSCRIPT)\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_CCLDLIBS\fR
|
||||||
|
+Derived from \fI$(EFI_LDLIBS)\fR.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ARFLAGS\fR
|
||||||
|
+Flags to pass to ar to make a \fI.efi.a\fR target. Defaults to "\fIrDv\fR".
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_ASFLAGS\fR
|
||||||
|
+Flags to pass to gcc to make a \fI.efi.o\fR object from a \fI.S\fR file.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_OBJCOPY_FLAGS\fR
|
||||||
|
+Flags to pass to objcopy to make a \fI.efi\fR binary target. Defaults to
|
||||||
|
+\fI--file-alignment 512 --section-alignment 4096 -D\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_BIN_SECTIONS\fR
|
||||||
|
+Names of sections to go into \fI.efi\fR binary targets. If you have special
|
||||||
|
+sections, add them here.
|
||||||
|
+.TP
|
||||||
|
+.B \fBEFI_DEBUG_SECTIONS\fR
|
||||||
|
+Names of sections to go into \fI.efi.debug\fR targets. If you have special
|
||||||
|
+debug sections, add them here.
|
||||||
|
+.RE
|
||||||
|
+.TP
|
||||||
|
+In addition, there are several make rules defined, which those variables affect
|
||||||
|
+as appropriate:
|
||||||
|
+.RS 4
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi : %.efi.so\fB
|
||||||
|
+Build a \fI.efi\fR binary
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi.debug : %efi.so\fR
|
||||||
|
+Build debuginfo
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi.so :\fR
|
||||||
|
+Build the intermediate \fI.efi.so\fR to be linked as a \fI.efi\fR binary. Add
|
||||||
|
+\fI.o\fR files as dependencies to a concrete \fI.efi.so\fR rule in order to
|
||||||
|
+define targets.
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi.a :\fR
|
||||||
|
+Build an intermediate archive file for linking into a \fI.efi.so\fR
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi.o : %.c\fR
|
||||||
|
+Build an object file from a \fI.c\fR file
|
||||||
|
+.TP
|
||||||
|
+.B \fB%.efi.o : %.S\fR
|
||||||
|
+Build an object file from a \fI.S\fR file
|
||||||
|
+.TP
|
||||||
|
+.B \fBefi_clean :\fR
|
||||||
|
+Remove all files in the current working directory with the suffixes
|
||||||
|
+\fI.efi\fR, \fI.efi.a\fR, \fI.efi.debug\fR, \fI.efi.o\fR, or \fI.efi.so\fR.
|
||||||
|
+.SH EXAMPLES
|
||||||
|
+This is a simple makefile used to build an \fBEFI\fR binary named \fIfoo.efi\fR from source files \fIfoo.c\fR and \fIbar.c\fR. It includes the special section \fI.weird\fR in the final binary, and the name of that is defined within the \fI.c\fR source files using the macro \fIWEIRD_SECTION_NAME\fR:
|
||||||
|
+.RS 4
|
||||||
|
+\p include efi.mk
|
||||||
|
+.br
|
||||||
|
+\p all : foo.efi
|
||||||
|
+.br
|
||||||
|
+\p %.efi.o : | EFI_CFLAGS+=-DWEIRD_SECTION_NAME=\\".weird\\"
|
||||||
|
+.br
|
||||||
|
+\p foo.efi : | EFI_BIN_SECTIONS+=.weird
|
||||||
|
+.br
|
||||||
|
+foo.efi.so : foo.efi.o bar.efi.o
|
||||||
|
+.br
|
||||||
|
+\p clean : efi_clean
|
||||||
|
+.RE
|
||||||
|
+\p The following example shows how to cross-compile a binary for another architecture (in this case, \fIARM Aarch64\fR, which \fBEFI\fR calls \fIaa64\fR). This assumes that you have the \fIcrt0.o\fR, \fIefi.lds\fR, \fIlibgnuefi.a\fR, and \fIlibefi.a\fR files for \fIAarch64\fR installed in \fI@@PREFIX@@/lib/gnuefi/aa64/\fR\.
|
||||||
|
+.RS 4
|
||||||
|
+\p $ make CROSS_COMPILE=aarch64-linux-gnu- EFI_ARCH=aa64 foo.efi
|
||||||
|
+.RE
|
||||||
|
+.fi
|
||||||
|
+.SH AUTHORS
|
||||||
|
+.nf
|
||||||
|
+Peter Jones <pjones@redhat.com>
|
||||||
|
+.fi
|
||||||
|
diff --git a/inc/efi.mk.in b/inc/efi.mk.in
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..3de783a5a05
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/efi.mk.in
|
||||||
|
@@ -0,0 +1,126 @@
|
||||||
|
+#
|
||||||
|
+# efi.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:11
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+_efi_comma=,
|
||||||
|
+_efi_empty=
|
||||||
|
+_efi_space=$(_efi_empty) $(_efi_empty)
|
||||||
|
+
|
||||||
|
+CROSS_COMPILE ?=
|
||||||
|
+OBJCOPY ?= $(CROSS_COMPILE)objcopy
|
||||||
|
+LD ?= $(CROSS_COMPILE)ld
|
||||||
|
+
|
||||||
|
+EFI_OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.*\((.*)\|version\) //g' | cut -f1-2 -d.` \>= 2.24)
|
||||||
|
+
|
||||||
|
+EFI_CC ?= $(CROSS_COMPILE)@@CC@@
|
||||||
|
+EFI_HOSTCC ?= @@CC@@
|
||||||
|
+
|
||||||
|
+EFI_HOSTARCH ?= $(shell $(EFI_HOSTCC) -dumpmachine | cut -f1 -d- | \
|
||||||
|
+ sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x64, \
|
||||||
|
+ -e s,x86_64,x64, \
|
||||||
|
+ -e s,aarch64,aa64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
+EFI_ARCH ?= $(shell $(EFI_CC) -dumpmachine | cut -f1 -d- | \
|
||||||
|
+ sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x64, \
|
||||||
|
+ -e s,x86_64,x64, \
|
||||||
|
+ -e s,aarch64,aa64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
+EFI_BFDARCH ?= $(shell $(EFI_CC) -dumpmachine | cut -f1 -d- | \
|
||||||
|
+ sed \
|
||||||
|
+ -e s,i[3456789]86,ia32, \
|
||||||
|
+ -e s,amd64,x86_64, \
|
||||||
|
+ -e 's,armv[[:digit:]].*,arm,' \
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
+include efi/$(EFI_ARCH).mk
|
||||||
|
+
|
||||||
|
+GNUEFI_LIB_PATHS := $(sort @@LIBEFIDIR@@ @@GNUEFIDIR@@)
|
||||||
|
+GNUEFI_LDFLAGS := -nostdlib --warn-common --no-undefined --fatal-warnings \
|
||||||
|
+ --build-id=sha1 -shared -Bsymbolic --exclude-libs ALL \
|
||||||
|
+ $(foreach x,$(GNUEFI_LIB_PATHS),-L$(x)) @@GNUEFIDIR@@/crt0.o
|
||||||
|
+
|
||||||
|
+ifeq ($(origin EFI_CC_INCLUDES),undefined)
|
||||||
|
+EFI_CC_INCLUDES := $(foreach x,$(shell $(EFI_CC) $(EFI_ARCH_3264) -print-file-name=include),-I$(x))
|
||||||
|
+endif
|
||||||
|
+EFI_INCLUDES ?= -I@@INCDIR@@ -I@@INCDIR@@/$(EFI_ARCH) -I@@INCDIR@@/protocol
|
||||||
|
+EFI_CPPFLAGS ?= -ffreestanding -nostdlib -fpic \
|
||||||
|
+ $(EFI_INCLUDES) $(EFI_CC_INCLUDES) \
|
||||||
|
+ -DCONFIG_$(EFI_ARCH) -DCONFIG_ARCH=$(EFI_ARCH) \
|
||||||
|
+ -Wno-error=pragmas -fvisibility=hidden \
|
||||||
|
+ -fshort-wchar -fno-strict-aliasing -fno-stack-protector \
|
||||||
|
+ $(if $(findstring gcc,$(EFI_CC)),-fno-merge-all-constants,) \
|
||||||
|
+ $(EFI_ARCH_CPPFLAGS)
|
||||||
|
+EFI_CFLAGS ?= $(EFI_CPPFLAGS) $(EFI_ARCH_CFLAGS)
|
||||||
|
+ifeq ($(origin EFI_LDLIBS),undefined)
|
||||||
|
+EFI_LDLIBS := -lefi -lgnuefi
|
||||||
|
+endif
|
||||||
|
+ifeq ($(origin EFI_LDFLAGS),undefined)
|
||||||
|
+EFI_LDFLAGS := $(GNUEFI_LDFLAGS) $(EFI_ARCH_LDFLAGS)
|
||||||
|
+endif
|
||||||
|
+EFI_CCLDLIBS ?= $(foreach x,$(EFI_LDLIBS),$(x))
|
||||||
|
+EFI_CCLDFLAGS ?= $(foreach x,$(EFI_LDFLAGS),-Wl$(_efi_comma)$(x))
|
||||||
|
+EFI_ARFLAGS ?= rDv
|
||||||
|
+EFI_ASFLAGS ?= $(EFI_ARCH_3264)
|
||||||
|
+EFI_LIBGCC ?= $(shell $(EFI_CC) $(EFI_ARCH_3264) -print-libgcc-file-name)
|
||||||
|
+EFI_LDSCRIPT ?= @@GNUEFIDIR@@/efi.lds
|
||||||
|
+_EFI_CCLDLIBS = $(subst $(_efi_space),$(_efi_comma),-Wl --start-group $(foreach x,$(EFI_CCLDLIBS),$(x)) --end-group)
|
||||||
|
+
|
||||||
|
+EFI_BIN_SECTIONS ?= .text .sdata .data .dynamic .dynsym \
|
||||||
|
+ .rel .rel.* .rela .rela.* .reloc \
|
||||||
|
+ .eh_frame .note.gnu.build-id .ctf \
|
||||||
|
+ $(EFI_ARCH_BIN_SECTIONS)
|
||||||
|
+
|
||||||
|
+EFI_DEBUG_SECTIONS ?= .debug* .eh_frame .note.gnu.build-id .ctf \
|
||||||
|
+ $(EFI_ARCH_DEBUG_SECTIONS)
|
||||||
|
+EFI_OBJCOPY_FLAGS ?= --file-alignment 512 --section-alignment 4096 -D
|
||||||
|
+
|
||||||
|
+%.efi : %.efi.so
|
||||||
|
+ifneq ($(EFI_OBJCOPY_GTE224),1)
|
||||||
|
+ $(error objcopy >= 2.24 is required)
|
||||||
|
+endif
|
||||||
|
+ $(OBJCOPY) $(EFI_OBJCOPY_FLAGS) \
|
||||||
|
+ $(foreach x,$(EFI_BIN_SECTIONS),-j $(x)) \
|
||||||
|
+ $(EFI_ARCH_FORMAT) $*.efi.so $@
|
||||||
|
+
|
||||||
|
+%.efi.debug : %.efi.so
|
||||||
|
+ifneq ($(EFI_OBJCOPY_GTE224),1)
|
||||||
|
+ $(error objcopy >= 2.24 is required)
|
||||||
|
+endif
|
||||||
|
+ $(OBJCOPY) $(EFI_OBJCOPY_FLAGS) \
|
||||||
|
+ $(foreach x,$(EFI_DEBUG_SECTIONS),-j $(x)) \
|
||||||
|
+ $(EFI_ARCH_FORMAT) $*.efi.so $@
|
||||||
|
+
|
||||||
|
+%.efi.a :
|
||||||
|
+ $(AR) $(EFI_ARFLAGS) $@ $^
|
||||||
|
+
|
||||||
|
+%.efi.so :
|
||||||
|
+ $(EFI_CC) $(EFI_CFLAGS) $(EFI_CCLDFLAGS) -o $@ $^ $(_EFI_CCLDLIBS) $(EFI_LIBGCC) -T $(EFI_LDSCRIPT)
|
||||||
|
+
|
||||||
|
+%.efi.o : %.c
|
||||||
|
+ $(EFI_CC) $(EFI_CFLAGS) -c -o $@ $<
|
||||||
|
+
|
||||||
|
+%.efi.o : %.S
|
||||||
|
+ $(EFI_CC) $(EFI_CFLAGS) -c -o $@ $<
|
||||||
|
+
|
||||||
|
+efi_clean ::
|
||||||
|
+ @rm -vf *.efi.{a,debug,o,so} *.efi
|
||||||
|
+
|
||||||
|
+.PHONY: efi_clean
|
||||||
|
+
|
||||||
|
+export EFI_ARCH
|
||||||
|
+export EFI_ARCH_CCLDFLAGS EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_CLANG_BUGS EFI_ARCH_CAN_DISABLE_AVX
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264
|
||||||
|
+export EFI_ARFLAGS EFI_ASFLAGS EFI_BFDARCH EFI_CC EFI_CFLAGS EFI_CPPFLAGS
|
||||||
|
+export EFI_LDFLAGS EFI_LDSCRIPT EFI_HOSTARCH EFI_HOSTCC EFI_INCLUDES
|
||||||
|
+export EFI_LIBGCC EFI_LIBS
|
||||||
|
+
|
||||||
|
+# vim:ft=make
|
||||||
|
diff --git a/inc/ia32.mk b/inc/ia32.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..d961db70031
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/ia32.mk
|
||||||
|
@@ -0,0 +1,30 @@
|
||||||
|
+#
|
||||||
|
+# efi-ia32.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),ia32)
|
||||||
|
+
|
||||||
|
+ifeq ($(EFI_HOSTARCH),x64)
|
||||||
|
+EFI_ARCH_3264 := -m32
|
||||||
|
+else
|
||||||
|
+EFI_ARCH_3264 :=
|
||||||
|
+endif
|
||||||
|
+EFI_ARCH_CAN_DISABLE_AVX := $(shell $(EFI_CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo -mno-avx)
|
||||||
|
+EFI_ARCH_CLANG_BUGS := $(if $(findstring gcc,$(EFI_CC)),-maccumulate-outgoing-args,)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -mno-mmx -mno-sse \
|
||||||
|
+ $(EFI_ARCH_3264) \
|
||||||
|
+ $(EFI_ARCH_CAN_DISABLE_AVX) \
|
||||||
|
+ $(EFI_ARCH_CLANG_BUGS) \
|
||||||
|
+ -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS :=
|
||||||
|
+EFI_ARCH_FORMAT := --target efi-app-$(EFI_BFDARCH)
|
||||||
|
+EFI_ARCH_SUFFIX := ia32
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := IA32
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 136
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264
|
||||||
|
+export EFI_ARCH_CLANG_BUGS EFI_ARCH_CAN_DISABLE_AVX
|
||||||
|
+endif
|
||||||
|
diff --git a/inc/ia64.mk b/inc/ia64.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..29b3f1c4f8e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/ia64.mk
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+#
|
||||||
|
+# efi-ia64.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),ia64)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -mfixed-range=f32-f127 -m64 \
|
||||||
|
+ -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS :=
|
||||||
|
+EFI_ARCH_SUFFIX := ia64
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := IA64
|
||||||
|
+# XXX I have no idea if this is right
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 136
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264
|
||||||
|
+export EFI_ARCH_CLANG_BUGS EFI_ARCH_CAN_DISABLE_AVX
|
||||||
|
+endif
|
||||||
|
diff --git a/inc/mips64el.mk b/inc/mips64el.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..257180955b6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/mips64el.mk
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+#
|
||||||
|
+# efi-mips64el.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),mips64el)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_3264 := -mabi=64
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -march=mips64r2 -EL $(EFI_ARCH_3264) \
|
||||||
|
+ -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS := -EL
|
||||||
|
+EFI_ARCH_FORMAT := --target efi-app-$(EFI_BFDARCH)
|
||||||
|
+EFI_ARCH_SUFFIX := mips64el
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := MIPS64EL
|
||||||
|
+# XXX I have no idea if this is right
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 136
|
||||||
|
+EFI_ARCH_HAVE_OBJCOPY := y
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264 EFI_ARCH_HAVE_OBJCOPY
|
||||||
|
+endif
|
||||||
|
diff --git a/inc/x64.mk b/inc/x64.mk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..bc1093988b3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/inc/x64.mk
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+#
|
||||||
|
+# efi-x64.mk
|
||||||
|
+# Peter Jones, 2019-11-13 14:27
|
||||||
|
+#
|
||||||
|
+ifeq ($(EFI_ARCH),x64)
|
||||||
|
+
|
||||||
|
+ifeq ($(EFI_HOSTARCH),ia32)
|
||||||
|
+EFI_ARCH_3264 := -m64
|
||||||
|
+else
|
||||||
|
+EFI_ARCH_3264 :=
|
||||||
|
+endif
|
||||||
|
+EFI_ARCH_CAN_DISABLE_AVX := $(shell $(EFI_CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo -mno-avx)
|
||||||
|
+EFI_ARCH_CLANG_BUGS := $(if $(findstring gcc,$(EFI_CC)),-maccumulate-outgoing-args,)
|
||||||
|
+
|
||||||
|
+EFI_ARCH_CFLAGS := -mno-mmx -mno-sse -mno-red-zone \
|
||||||
|
+ $(EFI_ARCH_3264) \
|
||||||
|
+ $(EFI_ARCH_CAN_DISABLE_AVX) \
|
||||||
|
+ $(EFI_ARCH_CLANG_BUGS) \
|
||||||
|
+ -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI \
|
||||||
|
+ -DPAGE_SIZE=4096 -DPAGE_SHIFT=12
|
||||||
|
+EFI_ARCH_LDFLAGS :=
|
||||||
|
+EFI_ARCH_FORMAT := --target efi-app-$(EFI_BFDARCH)
|
||||||
|
+EFI_ARCH_SUFFIX := x64
|
||||||
|
+EFI_ARCH_SUFFIX_UPPER := X64
|
||||||
|
+EFI_ARCH_TIMESTAMP_LOCATION := 136
|
||||||
|
+
|
||||||
|
+export EFI_ARCH_CFLAGS EFI_ARCH_CPPFLAGS EFI_ARCH_LDFLAGS
|
||||||
|
+export EFI_ARCH_FORMAT EFI_ARCH_SUBSYSTEM EFI_ARCH_SUFFIX EFI_ARCH_SUFFIX_UPPER
|
||||||
|
+export EFI_ARCH_TIMESTAMP_LOCATION EFI_ARCH_3264
|
||||||
|
+export EFI_ARCH_CLANG_BUGS EFI_ARCH_CAN_DISABLE_AVX
|
||||||
|
+endif
|
226
0040-Semi-asciibetize-_Print-s-formatters.patch
Normal file
226
0040-Semi-asciibetize-_Print-s-formatters.patch
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Mon, 18 Nov 2019 13:05:15 -0500
|
||||||
|
Subject: [PATCH] Semi-asciibetize _Print()'s formatters.
|
||||||
|
|
||||||
|
This is ascii order but with upper and lower case letters mixed, so
|
||||||
|
things like 'X' and 'x' that use fallthrough still stay together.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
lib/print.c | 148 ++++++++++++++++++++++++++++++------------------------------
|
||||||
|
1 file changed, 73 insertions(+), 75 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/print.c b/lib/print.c
|
||||||
|
index 35e43c03db5..0b823481347 100644
|
||||||
|
--- a/lib/print.c
|
||||||
|
+++ b/lib/print.c
|
||||||
|
@@ -1067,26 +1067,26 @@ Returns:
|
||||||
|
Item.Item.pw = Item.Scratch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case '0':
|
||||||
|
- Item.Pad = '0';
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case '-':
|
||||||
|
- Item.PadBefore = FALSE;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
case ',':
|
||||||
|
Item.Comma = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case '.':
|
||||||
|
- Item.WidthParse = &Item.FieldWidth;
|
||||||
|
+ case '-':
|
||||||
|
+ Item.PadBefore = FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '*':
|
||||||
|
*Item.WidthParse = va_arg(ps->args, UINTN);
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case '.':
|
||||||
|
+ Item.WidthParse = &Item.FieldWidth;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case '0':
|
||||||
|
+ Item.Pad = '0';
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
@@ -1112,62 +1112,12 @@ Returns:
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 's':
|
||||||
|
- Item.Item.pw = va_arg(ps->args, CHAR16 *);
|
||||||
|
- if (!Item.Item.pw) {
|
||||||
|
- Item.Item.pw = L"(null)";
|
||||||
|
- }
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
case 'c':
|
||||||
|
Item.Scratch[0] = (CHAR16) va_arg(ps->args, UINTN);
|
||||||
|
Item.Scratch[1] = 0;
|
||||||
|
Item.Item.pw = Item.Scratch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 'l':
|
||||||
|
- Item.Long = TRUE;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case 'X':
|
||||||
|
- Item.Width = Item.Long ? 16 : 8;
|
||||||
|
- Item.Pad = '0';
|
||||||
|
-#if __GNUC__ >= 7
|
||||||
|
- __attribute__ ((fallthrough));
|
||||||
|
-#endif
|
||||||
|
- case 'x':
|
||||||
|
- ValueToHex (
|
||||||
|
- Item.Scratch,
|
||||||
|
- Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32)
|
||||||
|
- );
|
||||||
|
- Item.Item.pw = Item.Scratch;
|
||||||
|
-
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- case 'g':
|
||||||
|
- GuidToString (Item.Scratch, va_arg(ps->args, EFI_GUID *));
|
||||||
|
- Item.Item.pw = Item.Scratch;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case 'u':
|
||||||
|
- ValueToString (
|
||||||
|
- Item.Scratch,
|
||||||
|
- Item.Comma,
|
||||||
|
- Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32)
|
||||||
|
- );
|
||||||
|
- Item.Item.pw = Item.Scratch;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case 'd':
|
||||||
|
- ValueToString (
|
||||||
|
- Item.Scratch,
|
||||||
|
- Item.Comma,
|
||||||
|
- Item.Long ? va_arg(ps->args, INT64) : va_arg(ps->args, INT32)
|
||||||
|
- );
|
||||||
|
- Item.Item.pw = Item.Scratch;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
case 'D':
|
||||||
|
{
|
||||||
|
EFI_DEVICE_PATH *dp = va_arg(ps->args, EFI_DEVICE_PATH *);
|
||||||
|
@@ -1180,6 +1130,23 @@ Returns:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ case 'd':
|
||||||
|
+ ValueToString (
|
||||||
|
+ Item.Scratch,
|
||||||
|
+ Item.Comma,
|
||||||
|
+ Item.Long ? va_arg(ps->args, INT64) : va_arg(ps->args, INT32)
|
||||||
|
+ );
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 'E':
|
||||||
|
+ Attr = ps->AttrError;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 'e':
|
||||||
|
+ PSETATTR(ps, ps->AttrError);
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case 'f':
|
||||||
|
FloatToString (
|
||||||
|
Item.Scratch,
|
||||||
|
@@ -1189,38 +1156,69 @@ Returns:
|
||||||
|
Item.Item.pw = Item.Scratch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 't':
|
||||||
|
- TimeToString (Item.Scratch, va_arg(ps->args, EFI_TIME *));
|
||||||
|
+ case 'g':
|
||||||
|
+ GuidToString (Item.Scratch, va_arg(ps->args, EFI_GUID *));
|
||||||
|
Item.Item.pw = Item.Scratch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 'r':
|
||||||
|
- StatusToString (Item.Scratch, va_arg(ps->args, EFI_STATUS));
|
||||||
|
- Item.Item.pw = Item.Scratch;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case 'n':
|
||||||
|
- PSETATTR(ps, ps->AttrNorm);
|
||||||
|
+ case 'H':
|
||||||
|
+ Attr = ps->AttrHighlight;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'h':
|
||||||
|
PSETATTR(ps, ps->AttrHighlight);
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 'e':
|
||||||
|
- PSETATTR(ps, ps->AttrError);
|
||||||
|
+ case 'l':
|
||||||
|
+ Item.Long = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
Attr = ps->AttrNorm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 'H':
|
||||||
|
- Attr = ps->AttrHighlight;
|
||||||
|
+ case 'n':
|
||||||
|
+ PSETATTR(ps, ps->AttrNorm);
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case 'E':
|
||||||
|
- Attr = ps->AttrError;
|
||||||
|
+ case 'r':
|
||||||
|
+ StatusToString (Item.Scratch, va_arg(ps->args, EFI_STATUS));
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 's':
|
||||||
|
+ Item.Item.pw = va_arg(ps->args, CHAR16 *);
|
||||||
|
+ if (!Item.Item.pw) {
|
||||||
|
+ Item.Item.pw = L"(null)";
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 't':
|
||||||
|
+ TimeToString (Item.Scratch, va_arg(ps->args, EFI_TIME *));
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 'u':
|
||||||
|
+ ValueToString (
|
||||||
|
+ Item.Scratch,
|
||||||
|
+ Item.Comma,
|
||||||
|
+ Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32)
|
||||||
|
+ );
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 'X':
|
||||||
|
+ Item.Width = Item.Long ? 16 : 8;
|
||||||
|
+ Item.Pad = '0';
|
||||||
|
+#if __GNUC__ >= 7
|
||||||
|
+ __attribute__ ((fallthrough));
|
||||||
|
+#endif
|
||||||
|
+ case 'x':
|
||||||
|
+ ValueToHex (
|
||||||
|
+ Item.Scratch,
|
||||||
|
+ Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32)
|
||||||
|
+ );
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
35
0041-Implement-Print-L-p-ptr.patch
Normal file
35
0041-Implement-Print-L-p-ptr.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Mon, 18 Nov 2019 13:06:23 -0500
|
||||||
|
Subject: [PATCH] Implement Print(L"%p", ptr);
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
lib/print.c | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/print.c b/lib/print.c
|
||||||
|
index 0b823481347..8fdba6ee166 100644
|
||||||
|
--- a/lib/print.c
|
||||||
|
+++ b/lib/print.c
|
||||||
|
@@ -1181,6 +1181,20 @@ Returns:
|
||||||
|
PSETATTR(ps, ps->AttrNorm);
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case 'p':
|
||||||
|
+ Item.Width = sizeof(void *) == (8 ? 16 : 8) + 2;
|
||||||
|
+ Item.Pad = '0';
|
||||||
|
+ Item.Scratch[0] = ' ';
|
||||||
|
+ Item.Scratch[1] = ' ';
|
||||||
|
+ ValueToHex (
|
||||||
|
+ Item.Scratch+2,
|
||||||
|
+ Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32)
|
||||||
|
+ );
|
||||||
|
+ Item.Scratch[0] = '0';
|
||||||
|
+ Item.Scratch[1] = 'x';
|
||||||
|
+ Item.Item.pw = Item.Scratch;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case 'r':
|
||||||
|
StatusToString (Item.Scratch, va_arg(ps->args, EFI_STATUS));
|
||||||
|
Item.Item.pw = Item.Scratch;
|
27
0042-Switch-to-fPIE.patch
Normal file
27
0042-Switch-to-fPIE.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Tue, 19 Nov 2019 13:23:14 -0500
|
||||||
|
Subject: [PATCH] Switch to -fPIE
|
||||||
|
|
||||||
|
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 01269660ab8..15af35e6e26 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -193,10 +193,10 @@ endif
|
||||||
|
INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
|
||||||
|
-I$(TOPDIR)/inc/protocol
|
||||||
|
|
||||||
|
-# Only enable -fpic for non MinGW compilers (unneeded on MinGW)
|
||||||
|
+# Only enable -fPIE for non MinGW compilers (unneeded on MinGW)
|
||||||
|
GCCMACHINE := $(shell $(CC) -dumpmachine)
|
||||||
|
ifneq (mingw32,$(findstring mingw32, $(GCCMACHINE)))
|
||||||
|
- CFLAGS += -fpic
|
||||||
|
+ CFLAGS += -fPIE
|
||||||
|
endif
|
||||||
|
|
||||||
|
IS_FREEBSD = $(findstring FreeBSD, $(OS))
|
@ -0,0 +1,38 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Tue, 14 Jan 2020 10:13:30 -0500
|
||||||
|
Subject: [PATCH] lfbgrid: Make pointer size testing not arch name dependent.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
apps/lfbgrid.c | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/apps/lfbgrid.c b/apps/lfbgrid.c
|
||||||
|
index ac50f4eafa9..e9fef957d94 100644
|
||||||
|
--- a/apps/lfbgrid.c
|
||||||
|
+++ b/apps/lfbgrid.c
|
||||||
|
@@ -51,9 +51,9 @@ draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||||
|
UINTN NumPixels;
|
||||||
|
UINT32 *PixelBuffer;
|
||||||
|
UINT32 CopySize, BufferSize;
|
||||||
|
-#if defined(__x86_64__) || defined(__aarch64__)
|
||||||
|
+#if __SIZEOF_POINTER__ == 8
|
||||||
|
UINT64 FrameBufferAddr;
|
||||||
|
-#elif defined(__i386__) || defined(__arm__)
|
||||||
|
+#elif __SIZEOF_POINTER__ == 4
|
||||||
|
UINT32 FrameBufferAddr;
|
||||||
|
#else
|
||||||
|
#error YOUR ARCH HERE
|
||||||
|
@@ -115,9 +115,9 @@ draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||||
|
Print(L"No linear framebuffer on this device.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
-#if defined(__x86_64__) || defined(__aarch64__)
|
||||||
|
+#if __SIZEOF_POINTER__ == 8
|
||||||
|
FrameBufferAddr = (UINT64)gop->Mode->FrameBufferBase;
|
||||||
|
-#elif defined(__i386__) || defined(__arm__)
|
||||||
|
+#elif __SIZEOF_POINTER__ == 4
|
||||||
|
FrameBufferAddr = (UINT32)(UINT64)gop->Mode->FrameBufferBase;
|
||||||
|
#else
|
||||||
|
#error YOUR ARCH HERE
|
39
0044-Fix-the-arch-subdirs-in-.gitignore.patch
Normal file
39
0044-Fix-the-arch-subdirs-in-.gitignore.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 15 Jan 2020 13:07:49 -0500
|
||||||
|
Subject: [PATCH] Fix the arch subdirs in .gitignore.
|
||||||
|
|
||||||
|
Currently they'll exclude e.g. inc/x64/ by accident; this makes it only
|
||||||
|
apply to the top level.
|
||||||
|
|
||||||
|
Also adds vim temp files to the ignore list.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
.gitignore | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.gitignore b/.gitignore
|
||||||
|
index 014f7d02f46..3e96a65bb43 100644
|
||||||
|
--- a/.gitignore
|
||||||
|
+++ b/.gitignore
|
||||||
|
@@ -1,12 +1,13 @@
|
||||||
|
+.*.sw?
|
||||||
|
*.efi
|
||||||
|
*.efi.debug
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.tar.*
|
||||||
|
*.tar
|
||||||
|
-aa64
|
||||||
|
-arm
|
||||||
|
-ia32
|
||||||
|
-ia64
|
||||||
|
-mips64el
|
||||||
|
-x64
|
||||||
|
+/aa64/
|
||||||
|
+/arm/
|
||||||
|
+/ia32/
|
||||||
|
+/ia64/
|
||||||
|
+/mips64el/
|
||||||
|
+/x64/
|
@ -0,0 +1,37 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Wed, 15 Jan 2020 13:10:11 -0500
|
||||||
|
Subject: [PATCH] Use CFLAGS with "gcc -print-libgcc-file-name" to get the
|
||||||
|
right one.
|
||||||
|
|
||||||
|
This makes us use CFLAGS when trying to find libgcc, so we don't get the
|
||||||
|
one with the wrong endian or float ABI.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index 15af35e6e26..de88bcd0231 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -181,10 +181,6 @@ endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifneq ($(ARCH),arm)
|
||||||
|
-export LIBGCC=$(shell $(CC) $(ARCH3264) -print-libgcc-file-name)
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
ifeq ($(ARCH),arm)
|
||||||
|
CFLAGS += -marm
|
||||||
|
endif
|
||||||
|
@@ -223,3 +219,7 @@ endif
|
||||||
|
ASFLAGS += $(ARCH3264)
|
||||||
|
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \
|
||||||
|
--build-id=sha1
|
||||||
|
+
|
||||||
|
+ifneq ($(ARCH),arm)
|
||||||
|
+export LIBGCC=$(shell $(CC) $(CFLAGS) $(ARCH3264) -print-libgcc-file-name)
|
||||||
|
+endif
|
23
0046-CFLAGS-add-Wno-pointer-sign.patch
Normal file
23
0046-CFLAGS-add-Wno-pointer-sign.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Jones <pjones@redhat.com>
|
||||||
|
Date: Tue, 21 Jan 2020 15:05:19 -0500
|
||||||
|
Subject: [PATCH] CFLAGS: add -Wno-pointer-sign
|
||||||
|
|
||||||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
|
---
|
||||||
|
Make.defaults | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Make.defaults b/Make.defaults
|
||||||
|
index de88bcd0231..cc8beec4600 100755
|
||||||
|
--- a/Make.defaults
|
||||||
|
+++ b/Make.defaults
|
||||||
|
@@ -203,7 +203,7 @@ CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
||||||
|
-fshort-wchar -fno-strict-aliasing \
|
||||||
|
-ffreestanding -fno-stack-protector
|
||||||
|
else
|
||||||
|
-CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
||||||
|
+CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Wno-pointer-sign -Werror \
|
||||||
|
-fshort-wchar -fno-strict-aliasing \
|
||||||
|
-ffreestanding -fno-stack-protector -fno-stack-check \
|
||||||
|
-fno-stack-check \
|
@ -1,7 +1,6 @@
|
|||||||
--- !Policy
|
--- !Policy
|
||||||
product_versions:
|
product_versions:
|
||||||
- rhel-8
|
- rhel-9
|
||||||
decision_context: osci_compose_gate
|
decision_context: osci_compose_gate
|
||||||
rules:
|
rules:
|
||||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
- !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.hardware-gnu-efi.tier0.functional}
|
||||||
- !PassingTestCaseRule {test_case_name: manual.sst_desktop.gnu-efi.functional}
|
|
||||||
|
46
gnu-efi.patches
Normal file
46
gnu-efi.patches
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
Patch0001: 0001-Set-0-properly-in-StrnCpy.patch
|
||||||
|
Patch0002: 0002-Fix-typeo-in-efierr.h-EFI_WARN_UNKNOWN_GLYPH-definit.patch
|
||||||
|
Patch0003: 0003-Fixed-typeo-lib-error.c-EFI_WARN_UNKNOWN_GLYPH-defin.patch
|
||||||
|
Patch0004: 0004-efilink-fix-build-with-gcc-4.8.patch
|
||||||
|
Patch0005: 0005-Fix-for-problem-with-undeclared-intptr_t-type.patch
|
||||||
|
Patch0006: 0006-Redefine-jmp_buf-to-comply-with-C-calling-convention.patch
|
||||||
|
Patch0007: 0007-Make.rules-incomplete-wrong-make-r-failure.patch
|
||||||
|
Patch0008: 0008-gnuefi-Makefile-uses-a-strange-rule-to-create-libgnu.patch
|
||||||
|
Patch0009: 0009-efiapi.h-fix-EventGroup-parameter-of-EFI_CREATE_EVEN.patch
|
||||||
|
Patch0010: 0010-Do-not-include-efisetjmp.h-on-efi.h.patch
|
||||||
|
Patch0011: 0011-Bump-revision-to-VERSION-3.0.10.patch
|
||||||
|
Patch0012: 0012-Revert-efilink-fix-build-with-gcc-4.8.patch
|
||||||
|
Patch0013: 0013-Bump-revision-to-VERSION-3.0.11.patch
|
||||||
|
Patch0014: 0014-efibind-Fix-usage-of-efi-headers-from-C-code.patch
|
||||||
|
Patch0015: 0015-Fix-ARCH-on-ARMv6.patch
|
||||||
|
Patch0016: 0016-Re-add-back-the-original-symbol-typeo.patch
|
||||||
|
Patch0017: 0017-Add-elf.h-for-cross-building-without-a-system-libelf.patch
|
||||||
|
Patch0018: 0018-make-parameter-to-compile-apps-add-example-output-di.patch
|
||||||
|
Patch0019: 0019-Support-for-building-on-macOS-systems.patch
|
||||||
|
Patch0020: 0020-Make-apps-link-against-the-local-gnuefi-and-crt-obje.patch
|
||||||
|
Patch0021: 0021-Add-.travis.yml.patch
|
||||||
|
Patch0022: 0022-Use-EFI-canonical-names-everywhere-the-compiler-does.patch
|
||||||
|
Patch0023: 0023-Fix-a-minor-coverity-complaint-in-some-apps.patch
|
||||||
|
Patch0024: 0024-Add-stuff-that-s-got-weird-characters-to-.gitattribu.patch
|
||||||
|
Patch0025: 0025-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
|
||||||
|
Patch0026: 0026-Get-rid-of-unused-make-like-files-from-yore.patch
|
||||||
|
Patch0027: 0027-Make-ELF-constructors-and-destructors-work.patch
|
||||||
|
Patch0028: 0028-Remove-the-accidental-lib-Makefile.orig.patch
|
||||||
|
Patch0029: 0029-gitignore-add-our-build-directories.patch
|
||||||
|
Patch0030: 0030-make-Fix-shell-exit-status-handling.patch
|
||||||
|
Patch0031: 0031-make-Make-make-clean-use-and-rm-v-everywhere.patch
|
||||||
|
Patch0032: 0032-Make-our-dummy-.reloc-sections-not-depend-on-section.patch
|
||||||
|
Patch0033: 0033-Make-CHAR8-and-similar-be-defined-the-same-way-edk2-.patch
|
||||||
|
Patch0034: 0034-Make-make-TOPDIR-actually-work-and-get-rid-of-unused.patch
|
||||||
|
Patch0035: 0035-Make-make-make-DESTDIR-.-foo-install-work-right.patch
|
||||||
|
Patch0036: 0036-Install-our-libraries-in-LIBDIR-gnuefi-ARCH.patch
|
||||||
|
Patch0037: 0037-Install-all-headers-for-all-arches.patch
|
||||||
|
Patch0038: 0038-Rename-our-installed-.o-and-linker-scripts.patch
|
||||||
|
Patch0039: 0039-Supply-makefile-templates.patch
|
||||||
|
Patch0040: 0040-Semi-asciibetize-_Print-s-formatters.patch
|
||||||
|
Patch0041: 0041-Implement-Print-L-p-ptr.patch
|
||||||
|
Patch0042: 0042-Switch-to-fPIE.patch
|
||||||
|
Patch0043: 0043-lfbgrid-Make-pointer-size-testing-not-arch-name-depe.patch
|
||||||
|
Patch0044: 0044-Fix-the-arch-subdirs-in-.gitignore.patch
|
||||||
|
Patch0045: 0045-Use-CFLAGS-with-gcc-print-libgcc-file-name-to-get-th.patch
|
||||||
|
Patch0046: 0046-CFLAGS-add-Wno-pointer-sign.patch
|
262
gnu-efi.spec
262
gnu-efi.spec
@ -1,14 +1,24 @@
|
|||||||
Summary: Development Libraries and headers for EFI
|
|
||||||
Name: gnu-efi
|
Name: gnu-efi
|
||||||
Version: 3.0.8
|
|
||||||
%global tarball_version 3.0.6
|
|
||||||
Release: 4%{?dist}%{?buildid}
|
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Group: Development/System
|
Version: 3.0.11
|
||||||
|
%global tarball_version 3.0.9
|
||||||
|
Release: 8%{?dist}%{?buildid}
|
||||||
|
Summary: Development Libraries and headers for EFI
|
||||||
License: BSD
|
License: BSD
|
||||||
URL: ftp://ftp.hpl.hp.com/pub/linux-ia64
|
URL: https://sourceforge.net/projects/gnu-efi/
|
||||||
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
|
|
||||||
BuildRequires: git
|
Source0: https://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{tarball_version}.tar.bz2
|
||||||
|
Source1: gnu-efi.patches
|
||||||
|
%include %{SOURCE1}
|
||||||
|
|
||||||
|
ExclusiveArch: %{efi}
|
||||||
|
BuildRequires: binutils
|
||||||
|
BuildRequires: efi-srpm-macros >= 3-2
|
||||||
|
BuildRequires: gcc
|
||||||
|
BuildRequires: git-core
|
||||||
|
# We're explicitly *not* requiring glibc-headers, because it gets us
|
||||||
|
# cross-arch dependency problems in "fedpkg mockbuild" from x86_64.
|
||||||
|
# BuildRequires: glibc-headers
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
# So... in some build environments, glibc32 provides some headers. In
|
# So... in some build environments, glibc32 provides some headers. In
|
||||||
# others, glibc-devel.i686 does. They have no non-file provides in common.
|
# others, glibc-devel.i686 does. They have no non-file provides in common.
|
||||||
@ -16,42 +26,19 @@ BuildRequires: git
|
|||||||
#BuildRequires: glibc-devel(x86-32)
|
#BuildRequires: glibc-devel(x86-32)
|
||||||
BuildRequires: /usr/include/gnu/stubs-32.h
|
BuildRequires: /usr/include/gnu/stubs-32.h
|
||||||
%endif
|
%endif
|
||||||
Source: http://superb-dca2.dl.sourceforge.net/project/gnu-efi/gnu-efi-%{tarball_version}.tar.bz2
|
BuildRequires: make
|
||||||
|
|
||||||
# dammit, rpmlint, shut up.
|
# dammit, rpmlint, shut up.
|
||||||
%define lib %{nil}lib%{nil}
|
%define lib %{nil}lib%{nil}
|
||||||
|
|
||||||
Patch0001: 0001-PATCH-Disable-AVX-instruction-set-on-IA32-and-x86_64.patch
|
|
||||||
Patch0002: 0002-Use-ARFLAGS-when-invoking-ar.patch
|
|
||||||
Patch0003: 0003-Stripped-diff-for-makefile.patch
|
|
||||||
Patch0004: 0004-Make-sure-stdint.h-is-always-used-with-MSVC-on-ARM-A.patch
|
|
||||||
Patch0005: 0005-Add-EFI_DRIVER_ENTRY_POINT-support-for-MSVC-ARM64.patch
|
|
||||||
Patch0006: 0006-Move-memcpy-memset-definition-to-global-init.c.patch
|
|
||||||
Patch0007: 0007-Bump-revision-from-VERSION-3.0.6-to-VERSION-3.0.7.patch
|
|
||||||
Patch0008: 0008-Currently-we-have-DivU64x32-on-ia32-but-it-tries-to-.patch
|
|
||||||
Patch0009: 0009-gnuefi-preserve-.gnu.hash-sections-unbreaks-elilo-on.patch
|
|
||||||
Patch0010: 0010-gnu-efi-fix-lib-ia64-setjmp.S-IA-64-build-failure.patch
|
|
||||||
Patch0011: 0011-Fix-some-types-gcc-doesn-t-like.patch
|
|
||||||
Patch0012: 0012-Fix-arm-build-paths-in-the-makefile.patch
|
|
||||||
Patch0013: 0013-Work-around-Werror-maybe-uninitialized-not-being-ver.patch
|
|
||||||
Patch0014: 0014-Fix-a-sign-error-in-the-debughook-example-app.patch
|
|
||||||
Patch0015: 0015-Fix-typedef-of-EFI_PXE_BASE_CODE.patch
|
|
||||||
Patch0016: 0016-make-clang-not-complain-about-fno-merge-all-constant.patch
|
|
||||||
Patch0017: 0017-Fix-another-place-clang-complains-about.patch
|
|
||||||
Patch0018: 0018-gnu-efi-add-some-more-common-string-functions.patch
|
|
||||||
Patch0019: 0019-Add-D-to-print-device-paths.patch
|
|
||||||
Patch0020: 0020-Make-ARCH-overrideable-on-the-command-line.patch
|
|
||||||
Patch0021: 0021-apps-Add-bltgrid-and-lfbgrid-and-add-error-checks-to.patch
|
|
||||||
Patch0022: 0022-Nerf-Werror-pragma-away.patch
|
|
||||||
Patch0023: 0023-Call-ar-in-deterministic-mode.patch
|
|
||||||
Patch0024: 0024-Add-debug-helper-applications.patch
|
|
||||||
Patch0025: 0025-Bump-revision-from-VERSION-3.0.7-to-VERSION-3.0.8.patch
|
|
||||||
Patch0026: 0026-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
|
|
||||||
|
|
||||||
%define debug_package %{nil}
|
%define debug_package %{nil}
|
||||||
|
|
||||||
# brp-strip-static-archive will senselessly /add/ timestamps and uid/gid
|
# 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.
|
# data to our .a and make them not multilib clean if we don't have this.
|
||||||
|
#
|
||||||
|
# We used to redefine strip, like so:
|
||||||
|
# %% global __strip "%%{__strip} -p"
|
||||||
|
# And had this note:
|
||||||
# Note that if we don't have the shell quotes there, -p becomes $2 on its
|
# Note that if we don't have the shell quotes there, -p becomes $2 on its
|
||||||
# invocation, and so it completely ignores it.
|
# invocation, and so it completely ignores it.
|
||||||
#
|
#
|
||||||
@ -59,26 +46,13 @@ Patch0026: 0026-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
|
|||||||
# uid/gid), strip(1) from binutils-2.25.1-22.base.el7.x86_64 throws a
|
# uid/gid), strip(1) from binutils-2.25.1-22.base.el7.x86_64 throws a
|
||||||
# syntax error.
|
# syntax error.
|
||||||
#
|
#
|
||||||
|
# But someone helpfully re-wrote %%__brp_strip_static_archive and that
|
||||||
|
# doesn't work any more.
|
||||||
|
#
|
||||||
# True story.
|
# True story.
|
||||||
#
|
#
|
||||||
%global __strip "%{__strip} -p"
|
%undefine __brp_strip_static_archive
|
||||||
|
%global __brp_strip_static_archive find '%{buildroot}' -name '*.a' -print -exec %{__strip} -gDp {} \\;
|
||||||
# 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 %{arm}
|
|
||||||
%global efiarch arm
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%ifarch %{ix86}
|
|
||||||
%global efiarch ia32
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains development headers and libraries for developing
|
This package contains development headers and libraries for developing
|
||||||
@ -86,20 +60,30 @@ applications that run under EFI (Extensible Firmware Interface).
|
|||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development Libraries and headers for EFI
|
Summary: Development Libraries and headers for EFI
|
||||||
Group: Development/System
|
|
||||||
Obsoletes: gnu-efi < 1:3.0.2-1
|
Obsoletes: gnu-efi < 1:3.0.2-1
|
||||||
Requires: gnu-efi
|
Requires: gnu-efi = %{epoch}:%{version}-%{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
# temporarily, put this backwards
|
||||||
|
Requires: gnu-efi-compat = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
This package contains development headers and libraries for developing
|
This package contains development headers and libraries for developing
|
||||||
applications that run under EFI (Extensible Firmware Interface).
|
applications that run under EFI (Extensible Firmware Interface).
|
||||||
|
|
||||||
|
%package compat
|
||||||
|
Summary: Development Libraries and headers for EFI
|
||||||
|
# temporarily, put this backwards
|
||||||
|
# Requires: gnu-efi-devel = %%{epoch}:%%{version}-%%{release}
|
||||||
|
|
||||||
|
%description compat
|
||||||
|
This package provides compatibility for building software utilizing gnu-efi
|
||||||
|
which expects the directory layout from older versions of Fedora.
|
||||||
|
|
||||||
%package utils
|
%package utils
|
||||||
Summary: Utilities for EFI systems
|
Summary: Utilities for EFI systems
|
||||||
Group: Applications/System
|
|
||||||
|
|
||||||
%description utils
|
%description utils
|
||||||
This package contains utilties for debugging and developing EFI systems.
|
This package contains utilities for debugging and developing EFI systems.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n gnu-efi-%{tarball_version}
|
%setup -q -n gnu-efi-%{tarball_version}
|
||||||
@ -109,60 +93,160 @@ git config user.name "Fedora Ninjas"
|
|||||||
git config sendemail.to "gnu-efi-owner@fedoraproject.org"
|
git config sendemail.to "gnu-efi-owner@fedoraproject.org"
|
||||||
git add .
|
git add .
|
||||||
git commit -a -q -m "%{version} baseline."
|
git commit -a -q -m "%{version} baseline."
|
||||||
git am --ignore-whitespace %{patches} </dev/null
|
git am %{patches} </dev/null
|
||||||
git config --unset user.email
|
git config --unset user.email
|
||||||
git config --unset user.name
|
git config --unset user.name
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# Package cannot build with %{?_smp_mflags}.
|
# Package cannot build with %%{?_smp_mflags}.
|
||||||
make
|
make LIBDIR=%{_prefix}/lib
|
||||||
make apps
|
make apps
|
||||||
%ifarch x86_64
|
%if %{efi_has_alt_arch}
|
||||||
setarch linux32 -B make ARCH=ia32 PREFIX=%{_prefix} LIBDIR=%{_prefix}/%{lib}
|
setarch linux32 -B make ARCH=%{efi_alt_arch} PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib
|
||||||
setarch linux32 -B make ARCH=ia32 PREFIX=%{_prefix} LIBDIR=%{_prefix}/%{lib} apps
|
setarch linux32 -B make ARCH=%{efi_alt_arch} PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib apps
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -rf %{buildroot}
|
make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} install
|
||||||
|
|
||||||
mkdir -p %{buildroot}/%{_libdir}/gnuefi
|
mkdir -p %{buildroot}/%{efi_esp_dir}/%{efi_arch}
|
||||||
mkdir -p %{buildroot}/boot/efi/EFI/%{efidir}/%{efiarch}
|
mv %{efi_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi_arch}/
|
||||||
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
|
# for compatibility with our older packages
|
||||||
mkdir -p %{buildroot}/%{_prefix}/%{lib}/gnuefi
|
make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} install_compat
|
||||||
mkdir -p %{buildroot}/boot/efi/EFI/%{efidir}/ia32
|
mkdir -p %{buildroot}/%{_libdir}/gnuefi/
|
||||||
|
if [[ -d %{buildroot}/%{_prefix}/lib/gnuefi/x64 ]] ; then
|
||||||
|
ln -s ../../lib/gnuefi/%{efi_arch} %{buildroot}/%{_libdir}/gnuefi/%{efi_arch}
|
||||||
|
ln -s %{efi_arch}/crt0.o %{buildroot}/%{_libdir}/gnuefi/crt0-efi-x64.o
|
||||||
|
ln -s %{efi_arch}/efi.lds %{buildroot}/%{_libdir}/gnuefi/elf_x64_efi.lds
|
||||||
|
ln -s %{efi_arch}/crt0.o %{buildroot}/%{_libdir}/gnuefi/crt0-efi-x86_64.o
|
||||||
|
ln -s %{efi_arch}/efi.lds %{buildroot}/%{_libdir}/gnuefi/elf_x86_64_efi.lds
|
||||||
|
ln -s %{efi_arch}/libefi.a %{buildroot}/%{_libdir}/gnuefi/libefi.a
|
||||||
|
ln -s %{efi_arch}/libgnuefi.a %{buildroot}/%{_libdir}/gnuefi/libgnuefi.a
|
||||||
|
# because we don't want /usr/lib64/gnuefi/crt0.o etc, we don't want to do
|
||||||
|
# this with 'make LIBDIR=%%{_libdir} install_compat ...'
|
||||||
|
ln -s gnuefi/%{efi_arch}/libefi.a %{buildroot}/%{_libdir}/libefi.a
|
||||||
|
ln -s gnuefi/%{efi_arch}/libgnuefi.a %{buildroot}/%{_libdir}/libgnuefi.a
|
||||||
|
elif [[ -d %{buildroot}/%{_prefix}/lib/gnuefi/aa64 ]] ; then
|
||||||
|
ln -s ../../lib/gnuefi/%{efi_arch} %{buildroot}/%{_libdir}/gnuefi/%{efi_arch}
|
||||||
|
ln -s %{efi_arch}/crt0.o %{buildroot}/%{_libdir}/gnuefi/crt0-efi-aa64.o
|
||||||
|
ln -s %{efi_arch}/efi.lds %{buildroot}/%{_libdir}/gnuefi/elf_aa64_efi.lds
|
||||||
|
ln -s %{efi_arch}/crt0.o %{buildroot}/%{_libdir}/gnuefi/crt0-efi-aarch64.o
|
||||||
|
ln -s %{efi_arch}/efi.lds %{buildroot}/%{_libdir}/gnuefi/elf_aarch64_efi.lds
|
||||||
|
ln -s %{efi_arch}/libefi.a %{buildroot}/%{_libdir}/gnuefi/libefi.a
|
||||||
|
ln -s %{efi_arch}/libgnuefi.a %{buildroot}/%{_libdir}/gnuefi/libgnuefi.a
|
||||||
|
fi
|
||||||
|
|
||||||
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/%{lib} INSTALLROOT=%{buildroot} ARCH=ia32 install
|
%if %{efi_has_alt_arch}
|
||||||
mv %{buildroot}/%{_prefix}/%{lib}/*.{lds,o} %{buildroot}/%{_prefix}/%{lib}/gnuefi/
|
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} ARCH=%{efi_alt_arch} install
|
||||||
mv ia32/apps/{route80h.efi,modelist.efi} %{buildroot}/boot/efi/EFI/%{efidir}/ia32/
|
mkdir -p %{buildroot}%{efi_esp_dir}/%{efi_alt_arch}
|
||||||
|
mv %{efi_alt_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi_alt_arch}/
|
||||||
|
|
||||||
|
# for compatibility with our older packages
|
||||||
|
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} ARCH=%{efi_alt_arch} BFD_ARCH=%{efi_alt_arch} install_compat
|
||||||
|
mkdir -p %{buildroot}/%{_prefix}/lib/gnuefi/
|
||||||
|
ln -s %{efi_alt_arch}/crt0.o %{buildroot}/%{_prefix}/lib/gnuefi/crt0-efi-%{efi_alt_arch}.o
|
||||||
|
ln -s %{efi_alt_arch}/efi.lds %{buildroot}/%{_prefix}/lib/gnuefi/elf_%{efi_alt_arch}_efi.lds
|
||||||
|
ln -s %{efi_alt_arch}/libefi.a %{buildroot}/%{_prefix}/lib/gnuefi/libefi.a
|
||||||
|
ln -s %{efi_alt_arch}/libgnuefi.a %{buildroot}/%{_prefix}/lib/gnuefi/libgnuefi.a
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
find %{buildroot}/%{_prefix}/ -type l | sed 's,%{buildroot}/\+,/,' > compat.lst
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%{_prefix}/%{lib}*/*
|
%dir %{_prefix}/lib/gnuefi/
|
||||||
|
%{_prefix}/lib/gnuefi/*/
|
||||||
|
%exclude %{_prefix}/lib*/gnuefi/crt0-efi-*
|
||||||
|
%exclude %{_prefix}/lib*/gnuefi/elf_*
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root,-)
|
%doc README.*
|
||||||
%doc README.* ChangeLog
|
%{_mandir}/man3/*
|
||||||
%{_includedir}/efi
|
%{_includedir}/efi
|
||||||
|
%{_includedir}/*.mk
|
||||||
|
%exclude %{_includedir}/efi/x86_64
|
||||||
|
%exclude %{_includedir}/efi/aarch64
|
||||||
|
|
||||||
|
%files compat -f compat.lst
|
||||||
|
|
||||||
%files utils
|
%files utils
|
||||||
%dir %attr(0700,root,root) /boot/efi/EFI/%{efidir}/
|
%dir %attr(0700,root,root) %{efi_esp_dir}/%{efi_arch}/
|
||||||
%attr(0700,root,root) /boot/efi/EFI/%{efidir}/*/*.efi
|
%attr(0700,root,root) %{efi_esp_dir}/%{efi_arch}/*.efi
|
||||||
|
%if %{efi_has_alt_arch}
|
||||||
|
%dir %attr(0700,root,root) %{efi_esp_dir}/%{efi_alt_arch}/
|
||||||
|
%attr(0700,root,root) %{efi_esp_dir}/%{efi_alt_arch}/*.efi
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Jul 02 2019 Javier Martinez Canillas <javierm@redhat.com> - 3.0.8-4
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com>
|
||||||
- Add a gating.yaml file so the package can be properly gated.
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
Related: rhbz#1681788
|
Related: rhbz#1991688
|
||||||
|
|
||||||
* Mon Jul 01 2019 Javier Martinez Canillas <javierm@redhat.com> - 3.0.8-3
|
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com>
|
||||||
- Change mode attribute for files in /boot/efi to prevent conflicts.
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
Resolves: rhbz#1724562
|
|
||||||
|
|
||||||
* Thu Jul 19 2018 Peter Jones <pjones@redhat.com> - 3.0.8-2
|
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org>
|
||||||
- Get rid of some stuff we don't want.
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org>
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jan 28 2020 Peter Jones <pjones@redhat.com> - 3.0.11-4
|
||||||
|
- Fix a mistake building -compat
|
||||||
|
|
||||||
|
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org>
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 24 2020 Peter Jones <pjones@redhat.com> - 3.0.11-2
|
||||||
|
- Make a compat subpackage to provide the old paths to our libraries, linker
|
||||||
|
script, and includes.
|
||||||
|
|
||||||
|
* Wed Jan 22 2020 Peter Jones <pjones@redhat.com> - 3.0.11-1
|
||||||
|
- Update to 3.0.11 (via patches generated from git)
|
||||||
|
- Plus newer upstream fixes (also via patches generated from git)
|
||||||
|
- Fix shell exit failures in make
|
||||||
|
- Fix .reloc section generation
|
||||||
|
- Fix CHAR8 definition
|
||||||
|
- Fix "make DESTDIR=..."
|
||||||
|
- Change the installed .a/.o layout
|
||||||
|
- Provide makefiles for consumers to use.
|
||||||
|
- Make the -devel noarch since it's just headers.
|
||||||
|
- Add a bunch of compatibility symlinks for the 3.0.8 filesystem layout
|
||||||
|
These will go away once we've migrated everything using them in fedora
|
||||||
|
to use the newer make system...
|
||||||
|
|
||||||
|
* Thu Dec 26 2019 Peter Robinson <pbrobinson@fedoraproject.org> 3.0.9-4
|
||||||
|
- Upstream patch for efibind.h
|
||||||
|
- Latest ELF constructors/destructors patch
|
||||||
|
- Minor spec cleanups
|
||||||
|
|
||||||
|
* Mon Aug 26 2019 Peter Jones <pjones@redhat.com> - 3.0.9-3
|
||||||
|
- Fix some minor rpmlint complaints
|
||||||
|
- Pull recent patches from upstream
|
||||||
|
- Add support for ELF constructors and destructors
|
||||||
|
- Fix a minor licensing problem
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.9-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Mar 20 2019 Peter Jones <pjones@redhat.com> - 3.0.9-1
|
||||||
|
- Update to gnu-efi 3.0.9
|
||||||
|
|
||||||
|
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.8-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org>
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri May 04 2018 Peter Jones <pjones@redhat.com> - 3.0.8-4
|
||||||
|
- Rebuild for new efi-rpm-macros, now that it has settled down a bit.
|
||||||
|
|
||||||
|
* Tue May 01 2018 Peter Jones <pjones@redhat.com> - 3.0.8-3
|
||||||
|
- Use efi-rpm-macros instead of defining all the efi directory and arch
|
||||||
|
stuff ourselves.
|
||||||
|
|
||||||
|
* Mon Apr 30 2018 Peter Jones <pjones@redhat.com> - 3.0.8-2
|
||||||
|
- Fix permissions on /boot/efi/...
|
||||||
|
|
||||||
* Tue Mar 20 2018 Peter Jones <pjones@redhat.com> - 3.0.8-1
|
* Tue Mar 20 2018 Peter Jones <pjones@redhat.com> - 3.0.8-1
|
||||||
- Update to 3.0.8 (from git).
|
- Update to 3.0.8 (from git).
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (gnu-efi-3.0.6.tar.bz2) = f1b17766d8ae000c0177ea2126d87883f254ab01ac020e4bfaa9ad2d3d60a66d07b6237d9842e5989c4da3fd23152b5c592ef863fdc9806901f43c43582a2258
|
SHA512 (gnu-efi-3.0.9.tar.bz2) = 1a775476fcbe354e57c9db258b1c6ad4346b84d1794178ab5d5195b3ffba250066ca4c42a553d5b2866fa1b4e03019d61df0197f269188c73297042990adf316
|
||||||
|
Loading…
Reference in New Issue
Block a user