Compare commits

...

10 Commits

Author SHA1 Message Date
David Abdurachmanov a0947262ff
Fix release
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2024-04-14 15:04:22 +03:00
David Abdurachmanov 5c269c7764
Fix pc file location on riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2024-04-14 15:03:29 +03:00
Richard Hughes a31824338e
Use the standard pkg-config location 2024-04-03 14:17:12 +01:00
Miroslav Suchý 3005992167
Correct SPDX license
GPL-2.0 is not valid SPDX id
2024-04-03 12:59:30 +01:00
Richard Hughes 1042cadb63 Update to 3.0.18 which upstreamed a lot of the downstream patches 2024-03-25 12:55:47 +00:00
Yaakov Selkowitz 0a571a6227 Fix build with dnf5
dnf5 only handles file provides in /etc, /usr/bin, and /usr/sbin.
2024-01-25 00:32:44 +00:00
Fedora Release Engineering 7d4ddd5f49 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 15:46:10 +00:00
Fedora Release Engineering 68771a8c89 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 23:12:00 +00:00
Fedora Release Engineering 26bd2176da Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 23:53:16 +00:00
Richard Hughes 05aa603af3 Backport two patches from master to fix fwupd-efi
Several x86-64 platforms all using AMI BIOS that reject the signed EFI binary
if we did not specify a 512 byte alignment.

It's certainly possible this is a bug in the AMI firmware.

See https://github.com/fwupd/fwupd-efi/pull/40
2023-03-03 09:37:18 +00:00
51 changed files with 56 additions and 9433 deletions

View File

@ -1,28 +0,0 @@
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));
}

View File

@ -1,24 +0,0 @@
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)

View File

@ -1,185 +0,0 @@
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;
}

View File

@ -1,30 +0,0 @@
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

View File

@ -1,108 +0,0 @@
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

View File

@ -1,131 +0,0 @@
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 */

View File

@ -1,48 +0,0 @@
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 $@

View File

@ -1,33 +0,0 @@
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)

View File

@ -1,28 +0,0 @@
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
);

View File

@ -1,37 +0,0 @@
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

View File

@ -1,22 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Nigel Croxon <ncroxon@redhat.com>
Date: Thu, 3 Oct 2019 12:05:00 -0400
Subject: [PATCH] Bump revision to VERSION = 3.0.10
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 01d1a01369e..a15513dcbba 100644
--- a/Makefile
+++ b/Makefile
@@ -34,7 +34,7 @@
# SUCH DAMAGE.
#
-VERSION = 3.0.9
+VERSION = 3.0.10
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
SRCDIR = $(dir $(MKFILE_PATH))

View File

@ -1,31 +0,0 @@
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

View File

@ -1,22 +0,0 @@
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))

View File

@ -1,108 +0,0 @@
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

View File

@ -1,32 +0,0 @@
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

View File

@ -1,27 +0,0 @@
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)

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +0,0 @@
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

View File

@ -1,86 +0,0 @@
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

View File

@ -1,30 +0,0 @@
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)

View File

@ -1,34 +0,0 @@
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

View File

@ -1,482 +0,0 @@
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

View File

@ -1,56 +0,0 @@
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;

View File

@ -1,28 +0,0 @@
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

View File

@ -1,148 +0,0 @@
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

View File

@ -1,75 +0,0 @@
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

View File

@ -1,756 +0,0 @@
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);

View File

@ -1,108 +0,0 @@
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

View File

@ -1,24 +0,0 @@
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

View File

@ -1,50 +0,0 @@
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) $@ $^

View File

@ -1,94 +0,0 @@
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 $@

View File

@ -1,79 +0,0 @@
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

View File

@ -1,204 +0,0 @@
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

View File

@ -1,101 +0,0 @@
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 \

View File

@ -1,38 +0,0 @@
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

View File

@ -1,134 +0,0 @@
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

View File

@ -1,42 +0,0 @@
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

View File

@ -1,63 +0,0 @@
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

View File

@ -1,614 +0,0 @@
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

View File

@ -1,226 +0,0 @@
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:

View File

@ -1,35 +0,0 @@
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;

View File

@ -1,27 +0,0 @@
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))

View File

@ -1,38 +0,0 @@
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

View File

@ -1,39 +0,0 @@
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/

View File

@ -1,37 +0,0 @@
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

View File

@ -1,23 +0,0 @@
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 \

View File

@ -1,282 +0,0 @@
From c46d7649ed9eb03cfd917ef03db34a800b42196c Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 1 Feb 2023 16:53:51 -0500
Subject: [PATCH] Add gnu stack notes
In binutils-2.39, GNU ld has decided it can no longer link objects that
don't have a .note.GNU-stack section, and thus has broken anything
linking against gnu-efi.
This patch adds those sections to all of the .S files, so that they will
be in the objects.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
apps/trivial.S | 1 +
gnuefi/crt0-efi-aa64.S | 1 +
gnuefi/crt0-efi-arm.S | 1 +
gnuefi/crt0-efi-ia32.S | 1 +
gnuefi/crt0-efi-ia64.S | 1 +
gnuefi/crt0-efi-mips64el.S | 1 +
gnuefi/crt0-efi-x64.S | 1 +
gnuefi/reloc_ia64.S | 1 +
lib/aa64/efi_stub.S | 1 +
lib/aa64/setjmp.S | 1 +
lib/arm/div.S | 1 +
lib/arm/efi_stub.S | 1 +
lib/arm/ldivmod.S | 1 +
lib/arm/llsl.S | 1 +
lib/arm/llsr.S | 1 +
lib/arm/mullu.S | 1 +
lib/arm/setjmp.S | 1 +
lib/arm/uldiv.S | 1 +
lib/ctors.S | 1 +
lib/ia32/efi_stub.S | 1 +
lib/ia32/setjmp.S | 1 +
lib/ia64/palproc.S | 1 +
lib/ia64/setjmp.S | 1 +
lib/mips64el/efi_stub.S | 1 +
lib/mips64el/setjmp.S | 1 +
lib/x64/efi_stub.S | 1 +
lib/x64/setjmp.S | 1 +
27 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/apps/trivial.S b/apps/trivial.S
index 40bc68fedaa..a94e31ab71d 100644
--- a/apps/trivial.S
+++ b/apps/trivial.S
@@ -41,3 +41,4 @@ _start:
hello: .byte 'h',0,'e',0,'l',0,'l',0,'o',0,'\n',0,'\r',0,0,0
#endif
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-aa64.S b/gnuefi/crt0-efi-aa64.S
index a9302588b71..c028213a03f 100644
--- a/gnuefi/crt0-efi-aa64.S
+++ b/gnuefi/crt0-efi-aa64.S
@@ -128,3 +128,4 @@ _start:
0: ldp x29, x30, [sp], #32
ret
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-arm.S b/gnuefi/crt0-efi-arm.S
index 04e75e9481a..66f0b0777e7 100644
--- a/gnuefi/crt0-efi-arm.S
+++ b/gnuefi/crt0-efi-arm.S
@@ -143,3 +143,4 @@ _start:
.L_DYNAMIC:
.word _DYNAMIC - .
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-ia32.S b/gnuefi/crt0-efi-ia32.S
index 031a592ab35..1d3787fa79e 100644
--- a/gnuefi/crt0-efi-ia32.S
+++ b/gnuefi/crt0-efi-ia32.S
@@ -75,3 +75,4 @@ _start:
.long .dummy1-.dummy0 // Page RVA
.long 10 // Block Size (2*4+2)
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-ia64.S b/gnuefi/crt0-efi-ia64.S
index dacb4c4c658..f02adc1d3fb 100644
--- a/gnuefi/crt0-efi-ia64.S
+++ b/gnuefi/crt0-efi-ia64.S
@@ -85,3 +85,4 @@ _start_plabel:
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
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-mips64el.S b/gnuefi/crt0-efi-mips64el.S
index 5ad2503ca79..34853dd06af 100644
--- a/gnuefi/crt0-efi-mips64el.S
+++ b/gnuefi/crt0-efi-mips64el.S
@@ -186,3 +186,4 @@ _pc:
.end _start
.set pop
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/crt0-efi-x64.S b/gnuefi/crt0-efi-x64.S
index 5c86cde12e8..eb6b30c934c 100644
--- a/gnuefi/crt0-efi-x64.S
+++ b/gnuefi/crt0-efi-x64.S
@@ -74,3 +74,4 @@ _start:
.long 10 // Block Size (2*4+2)
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
+ .section .note.GNU-stack,"a"
diff --git a/gnuefi/reloc_ia64.S b/gnuefi/reloc_ia64.S
index 40203bfb982..af2c934dd14 100644
--- a/gnuefi/reloc_ia64.S
+++ b/gnuefi/reloc_ia64.S
@@ -225,3 +225,4 @@ apply_FPTR64:
fptr_mem_base:
.space MAX_FUNCTION_DESCRIPTORS*16
fptr_mem_limit:
+ .section .note.GNU-stack,"a"
diff --git a/lib/aa64/efi_stub.S b/lib/aa64/efi_stub.S
index 464eae58aea..dbefa895d78 100644
--- a/lib/aa64/efi_stub.S
+++ b/lib/aa64/efi_stub.S
@@ -1 +1,2 @@
/* This stub is a stub to make the build happy */
+ .section .note.GNU-stack,"a"
diff --git a/lib/aa64/setjmp.S b/lib/aa64/setjmp.S
index 46c29b16d23..e8afaa78478 100644
--- a/lib/aa64/setjmp.S
+++ b/lib/aa64/setjmp.S
@@ -58,3 +58,4 @@ longjmp:
mov w0, #1
csel w0, w1, w0, ne
br x30
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/div.S b/lib/arm/div.S
index 71158b6f621..1dcbfb00119 100644
--- a/lib/arm/div.S
+++ b/lib/arm/div.S
@@ -153,3 +153,4 @@ label1:
@ What to do about division by zero? For now, just return.
ASM_PFX(__aeabi_idiv0):
bx r14
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/efi_stub.S b/lib/arm/efi_stub.S
index 464eae58aea..dbefa895d78 100644
--- a/lib/arm/efi_stub.S
+++ b/lib/arm/efi_stub.S
@@ -1 +1,2 @@
/* This stub is a stub to make the build happy */
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/ldivmod.S b/lib/arm/ldivmod.S
index edbf89ed58b..aa140d8af23 100644
--- a/lib/arm/ldivmod.S
+++ b/lib/arm/ldivmod.S
@@ -59,3 +59,4 @@ L_Exit:
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/llsl.S b/lib/arm/llsl.S
index 0f5c4078b97..cdb0ff76ea8 100644
--- a/lib/arm/llsl.S
+++ b/lib/arm/llsl.S
@@ -39,3 +39,4 @@ ASM_PFX(__aeabi_llsl):
lsl r1,r0,r3
mov r0,#0
bx lr
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/llsr.S b/lib/arm/llsr.S
index 432b27d7ac7..c04e5ae6fbe 100644
--- a/lib/arm/llsr.S
+++ b/lib/arm/llsr.S
@@ -39,3 +39,4 @@ ASM_PFX(__aeabi_llsr):
lsr r0,r1,r3
mov r1,#0
bx lr
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/mullu.S b/lib/arm/mullu.S
index 39b9a80bd26..7fb12eaa248 100644
--- a/lib/arm/mullu.S
+++ b/lib/arm/mullu.S
@@ -31,3 +31,4 @@ ASM_PFX(__aeabi_lmul):
mla r1, r2, r1, ip
mla r1, r3, lr, r1
ldmia sp!, {pc}
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/setjmp.S b/lib/arm/setjmp.S
index bd61a8d803a..ac6779ec0c1 100644
--- a/lib/arm/setjmp.S
+++ b/lib/arm/setjmp.S
@@ -23,3 +23,4 @@ setjmp:
.type longjmp, %function
longjmp:
ldmia r0, {r3-r12,r14}
+ .section .note.GNU-stack,"a"
diff --git a/lib/arm/uldiv.S b/lib/arm/uldiv.S
index f478898d23c..1ce4d3202b3 100644
--- a/lib/arm/uldiv.S
+++ b/lib/arm/uldiv.S
@@ -265,3 +265,4 @@ ASM_PFX(__aeabi_ldiv0):
bx r14
+ .section .note.GNU-stack,"a"
diff --git a/lib/ctors.S b/lib/ctors.S
index 522d31b90d2..c8146af1dd9 100644
--- a/lib/ctors.S
+++ b/lib/ctors.S
@@ -40,4 +40,5 @@ _fini_array:
.globl _fini_array_end
_fini_array_end:
.long 0
+ .section .note.GNU-stack,"a"
diff --git a/lib/ia32/efi_stub.S b/lib/ia32/efi_stub.S
index 464eae58aea..dbefa895d78 100644
--- a/lib/ia32/efi_stub.S
+++ b/lib/ia32/efi_stub.S
@@ -1 +1,2 @@
/* This stub is a stub to make the build happy */
+ .section .note.GNU-stack,"a"
diff --git a/lib/ia32/setjmp.S b/lib/ia32/setjmp.S
index aa9c08469e1..64d0f111a6e 100644
--- a/lib/ia32/setjmp.S
+++ b/lib/ia32/setjmp.S
@@ -43,3 +43,4 @@ longjmp:
movl (%edx), %ebx
movl 4(%edx), %esi
movl 8(%edx), %edi
+ .section .note.GNU-stack,"a"
diff --git a/lib/ia64/palproc.S b/lib/ia64/palproc.S
index c304a78d85e..9751c505384 100644
--- a/lib/ia64/palproc.S
+++ b/lib/ia64/palproc.S
@@ -159,3 +159,4 @@ StackedComeBackFromPALCall:
PROCEDURE_EXIT(MakeStackedPALCall)
+ .section .note.GNU-stack,"a"
diff --git a/lib/ia64/setjmp.S b/lib/ia64/setjmp.S
index bbb29d8b8f5..8e53c022117 100644
--- a/lib/ia64/setjmp.S
+++ b/lib/ia64/setjmp.S
@@ -197,3 +197,4 @@ _skip_flushrs:
invala
mov ar.rsc = r16
br.ret.sptk b0
+ .section .note.GNU-stack,"a"
diff --git a/lib/mips64el/efi_stub.S b/lib/mips64el/efi_stub.S
index 464eae58aea..dbefa895d78 100644
--- a/lib/mips64el/efi_stub.S
+++ b/lib/mips64el/efi_stub.S
@@ -1 +1,2 @@
/* This stub is a stub to make the build happy */
+ .section .note.GNU-stack,"a"
diff --git a/lib/mips64el/setjmp.S b/lib/mips64el/setjmp.S
index 930aca44102..f0808e49288 100644
--- a/lib/mips64el/setjmp.S
+++ b/lib/mips64el/setjmp.S
@@ -90,3 +90,4 @@ longjmp:
li $v0, 1
movn $v0, $a1, $a1
jr $ra
+ .section .note.GNU-stack,"a"
diff --git a/lib/x64/efi_stub.S b/lib/x64/efi_stub.S
index b4312556e00..fc0cced6878 100644
--- a/lib/x64/efi_stub.S
+++ b/lib/x64/efi_stub.S
@@ -187,3 +187,4 @@ ENTRY(efi_call10)
ret
#endif
+ .section .note.GNU-stack,"a"
diff --git a/lib/x64/setjmp.S b/lib/x64/setjmp.S
index e3e51959719..3892d016c6d 100644
--- a/lib/x64/setjmp.S
+++ b/lib/x64/setjmp.S
@@ -46,3 +46,4 @@ longjmp:
cmp %rax,%rdx
cmove %rcx,%rax
jmp *0x38(%rdi)
+ .section .note.GNU-stack,"a"
--
2.39.0

View File

@ -1,74 +1,36 @@
From 67dcf9b096c12a4801e9ef68c1107e0dcc311b27 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 21 Feb 2023 14:14:41 -0500
Subject: [PATCH] ld: Don't warn about RWX segment maps
commit 0f2ec3d6a60fc5dce2a0cc79ea24fa1cc03c0251
Author: Peter Jones <pjones@redhat.com>
Date: Tue Feb 21 14:14:41 2023 -0500
Newer gnu ld complains about RWX segment maps, and since we build with
"--fatal-warnings" we get the following:
ld -nostdlib --warn-common --no-undefined --fatal-warnings \
--build-id=sha1 -shared -Bsymbolic \
-L/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/lib \
-L/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/gnuefi \
/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/gnuefi/crt0-efi-aa64.o \
--defsym=EFI_SUBSYSTEM=0xa t.o -o t.so -lefi -lgnuefi \
/usr/lib/gcc/aarch64-redhat-linux/13/libgcc.a \
-T /builddir/build/BUILD/gnu-efi-3.0.9//apps/../gnuefi/elf_aa64_efi.lds
ld: warning: t.so has a LOAD segment with RWX permissions
Since the final linked binary will be PE, rather than ELF, and won't
even *have* segment maps, this should be safe to just disable.
This patch adds "--no-warn-rwx-segments" to the ld command lines.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
Make.defaults | 2 +-
inc/efi.mk.3.in | 3 ++-
inc/efi.mk.in | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
ld: Don't warn about RWX segment maps
Newer gnu ld complains about RWX segment maps, and since we build with
"--fatal-warnings" we get the following:
ld -nostdlib --warn-common --no-undefined --fatal-warnings \
--build-id=sha1 -shared -Bsymbolic \
-L/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/lib \
-L/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/gnuefi \
/builddir/build/BUILD/gnu-efi-3.0.9//apps/../aa64/gnuefi/crt0-efi-aarch64.o \
--defsym=EFI_SUBSYSTEM=0xa t.o -o t.so -lefi -lgnuefi \
/usr/lib/gcc/aarch64-redhat-linux/13/libgcc.a \
-T /builddir/build/BUILD/gnu-efi-3.0.9//apps/../gnuefi/elf_aarch64_efi.lds
ld: warning: t.so has a LOAD segment with RWX permissions
Since the final linked binary will be PE, rather than ELF, and won't
even *have* segment maps, this should be safe to just disable.
This patch adds "--no-warn-rwx-segments" to the ld command lines.
Signed-off-by: Peter Jones <pjones@redhat.com>
diff --git a/Make.defaults b/Make.defaults
index cc8beec..0510ac1 100755
index a504f42..bb18c30 100755
--- a/Make.defaults
+++ b/Make.defaults
@@ -218,7 +218,7 @@ endif
@@ -187,4 +187,4 @@ endif
ARFLAGS := rDv
ASFLAGS += $(ARCH3264)
LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \
- --build-id=sha1
+ --build-id=sha1 --no-warn-rwx-segments
ifneq ($(ARCH),arm)
export LIBGCC=$(shell $(CC) $(CFLAGS) $(ARCH3264) -print-libgcc-file-name)
diff --git a/inc/efi.mk.3.in b/inc/efi.mk.3.in
index c0bf3f1..f16b18a 100644
--- a/inc/efi.mk.3.in
+++ b/inc/efi.mk.3.in
@@ -83,7 +83,8 @@ Other command line to pass to \fBld\fR
before
object names. Defaults to
\fI-nostdlib --warn-common --no-undefined --fatal-warnings \
---build-id=sha1 -shared -Bsymbolic -L@@PREFIX@@/lib/gnuefi/$(EFI_ARCH) \
+--build-id=sha1 -shared -Bsymbolic --no-warn-rwx-segments \
+ -L@@PREFIX@@/lib/gnuefi/$(EFI_ARCH) \
@@PREFIX@@/lib/gnuefi/$(EFI_ARCH)/crt0.o\fR
.TP
.B \fBEFI_CCLDFLAGS\fR
diff --git a/inc/efi.mk.in b/inc/efi.mk.in
index 3de783a..d5f8544 100644
--- a/inc/efi.mk.in
+++ b/inc/efi.mk.in
@@ -43,7 +43,8 @@ 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 \
+ --build-id=sha1 -shared -Bsymbolic --no-warn-rwx-segments \
+ --exclude-libs ALL \
$(foreach x,$(GNUEFI_LIB_PATHS),-L$(x)) @@GNUEFIDIR@@/crt0.o
ifeq ($(origin EFI_CC_INCLUDES),undefined)
--
2.39.2

View File

@ -1,48 +0,0 @@
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
Patch0047: 0047-Add-gnu-stack-notes.patch
Patch0048: 0048-ld-Don-t-warn-about-RWX-segment-maps.patch

View File

@ -3,60 +3,45 @@
Name: gnu-efi
Epoch: 1
Version: 3.0.11
%global tarball_version 3.0.9
Release: 13%{?dist}%{?buildid}
Version: 3.0.18
Release: %autorelease -e 0.riscv64
Summary: Development Libraries and headers for EFI
License: BSD
License: BSD-2-Clause AND BSD-2-Clause-Patent AND BSD-3-Clause AND BSD-4-Clause AND GPL-2.0-or-later AND GPL-2.0-only
URL: https://sourceforge.net/projects/gnu-efi/
Source0: https://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{tarball_version}.tar.bz2
Source1: gnu-efi.patches
%include %{SOURCE1}
Source0: https://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{version}.tar.bz2
# upstream this breaks non-GNU LD, Heinrich Schuchardt asked us not to do this:
# "The correct approach is to adjust the loader script to put non-static
# data into a different section than the code and to make the .text section RX."
#Patch0048: 0048-ld-Don-t-warn-about-RWX-segment-maps.patch
ExclusiveArch: %{efi}
BuildRequires: binutils
BuildRequires: efi-srpm-macros >= 5-4
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
# So... in some build environments, glibc32 provides some headers. In
# others, glibc-devel.i686 does. They have no non-file provides in common.
#BuildRequires: glibc32
#BuildRequires: glibc-devel(x86-32)
BuildRequires: /usr/include/gnu/stubs-32.h
# others, glibc-devel.i686 does. They have no provides in common, as
# file provides in /usr/include or /usr/lib are not usable with dnf5.
BuildRequires: (glibc-devel(x86-32) or glibc32)
%endif
BuildRequires: make
# added 2020-01-24, so time is up...
Obsoletes: %{name}-compat < 3.0.11-12
# dammit, rpmlint, shut up.
# rpmlint, shut up.
%define lib %{nil}lib%{nil}
%define debug_package %{nil}
# brp-strip-static-archive will senselessly /add/ timestamps and uid/gid
# data to our .a and make them not multilib clean if we don't have this.
#
# 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
# invocation, and so it completely ignores it.
#
# Also note that if we try to use -D as we should (so it doesn't add
# uid/gid), strip(1) from binutils-2.25.1-22.base.el7.x86_64 throws a
# syntax error.
#
# But someone helpfully re-wrote %%__brp_strip_static_archive and that
# doesn't work any more.
#
# True story.
#
%undefine __brp_strip_static_archive
%global __brp_strip_static_archive find '%{buildroot}' -name '*.a' -print -exec %{__strip} -gDp {} \\;
@ -68,7 +53,6 @@ applications that run under EFI (Extensible Firmware Interface).
Summary: Development Libraries and headers for EFI
Obsoletes: gnu-efi < 1:3.0.2-1
Requires: gnu-efi = %{epoch}:%{version}-%{release}
BuildArch: noarch
%description devel
This package contains development headers and libraries for developing
@ -81,403 +65,41 @@ Summary: Utilities for EFI systems
This package contains utilities for debugging and developing EFI systems.
%prep
%setup -q -n gnu-efi-%{tarball_version}
git init
git config user.email "gnu-efi-owner@fedoraproject.org"
git config user.name "Fedora Ninjas"
git config sendemail.to "gnu-efi-owner@fedoraproject.org"
git add .
git commit -a -q -m "%{version} baseline."
git am %{patches} </dev/null
git config --unset user.email
git config --unset user.name
%autosetup -p1
%build
%undefine _hardened_ldflags
# Package cannot build with %%{?_smp_mflags}.
make LIBDIR=%{_prefix}/lib
make apps
%if %{efi_has_alt_arch}
setarch linux32 -B make ARCH=%{efi_alt_arch} PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib
setarch linux32 -B make ARCH=%{efi_alt_arch} PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib apps
%endif
%install
make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} install
mkdir -p %{buildroot}/%{efi_esp_dir}/%{efi_arch}
mv %{efi_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi_arch}/
mv %{buildroot}/usr/lib/gnuefi/apps/*.efi %{buildroot}%{efi_esp_dir}/%{efi_arch}/
%if %{efi_has_alt_arch}
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} ARCH=%{efi_alt_arch} install
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}/
%ifarch x86_64 aarch64 riscv64
mkdir -p %{buildroot}%{_libdir}
mv %{buildroot}%{_prefix}/lib/pkgconfig %{buildroot}%{_libdir}
%endif
# delete useless file
rm %{buildroot}/usr/lib/gnuefi/apps/debughook.efi.debug
%files
%dir %{_prefix}/lib/gnuefi/
%{_prefix}/lib/gnuefi/*/
%{_prefix}/lib/*.o
%{_prefix}/lib/*.lds
%files devel
%doc README.*
%{_mandir}/man3/*
%{_includedir}/efi
%{_includedir}/*.mk
%{_prefix}/lib/libefi.a
%{_prefix}/lib/libgnuefi.a
%{_libdir}/pkgconfig/gnu-efi.pc
%files utils
%dir %attr(0700,root,root) %{efi_esp_dir}/%{efi_arch}/
%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
* Thu Mar 02 2023 Robbie Harwood <rharwood@redhat.com> - 3.0.11-13
- Richard's patch to drop -compat
* Tue Feb 21 2023 Peter Jones <pjones@redhat.com> - 3.0.11-12
- Build with --no-warn-rwx-segment, since we don't wind up with segment maps
in the final bianries anyway.
- Add .note.GNU-stack sections to all the .S files we build.
- Don't use _hardened_ldflags since it's meant for GCC rather than ld and
doesn't do anything meaningful for us anyway.
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jan 25 2022 Robbie Harwood <rharwood@redhat.com> - 3.0.11-9
- Cope with Fedora insisting harder on default buildflags
- Resolves: #2045450
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Sep 24 2021 Robbie Harwood - 3.0.9-7.1
- Rebuild to prove we can
- Resolves: #1987506
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org>
- 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
- Update to 3.0.8 (from git).
* Tue Mar 13 2018 Peter Jones <pjones@redhat.com> - 3.0.7-1
- Update to 3.0.7 (from git) and add some pending patches we need.
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.5-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 24 2017 Peter Jones <pjones@redhat.com> - 3.0.5-11
- Don't make .reloc sections on Aarch64 binaries.
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.5-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.5-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Tue Jun 13 2017 Peter Jones <pjones@redhat.com> - 3.0.5-8
- Update this to try to get determanistic builds.
* Mon Mar 20 2017 Peter Jones <pjones@redhat.com> - 3.0.5-7
- Also build the ia32 bits in a separate 32-bit package for other consumers.
* Mon Mar 13 2017 Peter Jones <pjones@redhat.com> - 3.0.5-6
- Include ia32 bits in the x86_64 packages instead of making a separate
32-bit package
* Tue Feb 28 2017 Peter Jones <pjones@redhat.com> - 3.0.5-5
- Fix some bugs from the 3.0.5 release...
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Feb 02 2017 Peter Jones <pjones@redhat.com> - 3.0.5-3
- Update to 3.0.5
* Tue Feb 23 2016 Peter Jones <pjones@redhat.com> - 3.0.3-3
- Include patches from upstream that are after 3.0.3 This should fix the arm
and aarch64 builds.
* Tue Feb 23 2016 Peter Jones <pjones@redhat.com> - 3.0.3-2
- We still need build-id patches in some places.
* Mon Feb 22 2016 Peter Jones <pjones@redhat.com> - 3.0.3-1
- Rebase to 3.0.3
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jan 29 2016 Dan Horák <dan[at]danny.cz> - 1:3.0.2-3
- use safer method to evaluate %%efidir
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.0.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed May 13 2015 Peter Jones <pjones@redhat.com> - 3.0.2-1
- Update to 3.0.2
- Fix base package requirement on subpackages
- Add setjmp, because this is my life.
* Tue Mar 10 2015 Peter Jones <pjones@redhat.com> - 3.0.1-1
- Update to 3.0.1
- New versioning scheme!
* Thu Nov 20 2014 Peter Jones <pjones@redhat.com> - 3.0w-2
- Use patches upstream is going to take for the build fixes
- Add some new protocol definitons.
* Fri Aug 22 2014 Kyle McMartin <kyle@fedoraproject.org> - 3.0w-0.1
- New upstream version 3.0w
- Add pjones' build fixes patch from that other distro.
- Enable AArch64
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0u-0.4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0u-0.3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue Sep 24 2013 Peter Jones <pjones@redhat.com> - 3.0u-0.1
- Update to 3.0u
- Split out subpackages so -devel can be multilib
- Fix path in apps subpackage to vary by distro.
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0t-0.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Fri Jun 07 2013 Peter Jones <pjones@redhat.com> - 3.0t-0.1
- Update to 3.0t
- Don't allow use of mmx or sse registers.
* Thu May 16 2013 Peter Jones <pjones@redhat.com> - 3.0s-2
- Update to 3.0s
Related: rhbz#963359
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0q-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Jul 27 2012 Matthew Garrett <mjg@redhat.com> - 3.0q-1
- Update to current upstream
- License change - GPLv2+ to BSD
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed Apr 25 2012 Peter Jones <pjones@redhat.com> - 3.0e-17
- Align .reloc section as well to make secureboot work (mfleming)
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Thu Aug 11 2011 Peter Jones <pjones@redhat.com> - 3.0e-15
- Correctly pad the stack when doing uefi calls
Related: rhbz#677468
- Add ability to write UEFI callbacks and drivers
- Add test harness for ABI Calling Conventions
* Thu Jun 16 2011 Peter Jones <pjones@redhat.com> - 3.0e-14
- Handle uninitialized GOP driver gracefully.
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Sep 10 2010 Peter Jones <pjones@redhat.com> - 3.0e-12
- Add "modelist.efi" test utility in apps/
* Mon Jul 26 2010 Peter Jones <pjones@redhat.com> - 3.0e-11
- Add PciIo headers.
* Fri Jul 23 2010 Peter Jones <pjones@redhat.com> - 3.0e-10
- Add UEFI 2.x boot services.
* Tue Aug 11 2009 Peter Jones <pjones@redhat.com> - 3.0e-9
- Change ExclusiveArch to reflect arch changes in repos.
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Fri Apr 03 2009 Peter Jones <pjones@redhat.com> - 3.0e-7
- Use nickc's workaround for #492183
* Tue Mar 31 2009 Peter Jones <pjones@redhat.com> - 3.0e-6.1
- Make a test package for nickc.
* Thu Mar 12 2009 Chris Lumens <clumens@redhat.com> 3.0e-6
- Add IA64 back into the list of build arches (#489544).
* Mon Mar 02 2009 Peter Jones <pjones@redhat.com> - 3.0e-5
- Switch to i586 from i386.
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0e-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Fri Feb 13 2009 Peter Jones <pjones@redhat.com> - 3.0e-3
- Pad sections out in the provided linker scripts to make sure they all of
some content.
* Fri Oct 03 2008 Peter Jones <pjones@redhat.com> - 3.0e-2
- Fix install paths on x86_64.
* Thu Oct 02 2008 Peter Jones <pjones@redhat.com> - 3.0e-1
- Update to 3.0e
- Fix relocation bug in 3.0e
* Tue Jul 29 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 3.0d-6
- fix license tag
* Mon Jul 28 2008 Peter Jones <pjones@redhat.com> - 3.0d-5
- Remove ia64 palproc code since its license isn't usable.
- Remove ia64 from ExclusiveArch since it can't build...
* Thu Mar 27 2008 Peter Jones <pjones@redhat.com> - 3.0d-4
- Fix uefi_call_wrapper(x, 10, ...) .
- Add efi_main wrappers and EFI_CALL() macro so drivers are possible.
* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.0d-3
- Autorebuild for GCC 4.3
* Fri Jan 11 2008 Peter Jones <pjones@redhat.com> - 3.0d-2
- Get rid of a bogus #ifdef .
* Wed Dec 19 2007 Peter Jones <pjones@redhat.com> - 3.0d-1
- Update to 3.0d
* Tue Jun 12 2007 Chris Lumens <clumens@redhat.com> - 3.0c-2
- Fixes for package review (#225846).
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.0c-1.1
- rebuild
* Thu Apr 27 2006 Chris Lumens <clumens@redhat.com> 3.0c-1
- Upgrade to gnu-efi-3.0c.
- Enable build on i386.
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.0a-7.2
- rebuilt for new gcc4.1 snapshot and glibc changes
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Thu Mar 3 2005 Jeremy Katz <katzj@redhat.com> - 3.0a-7
- rebuild with gcc 4
* Tue Sep 21 2004 Jeremy Katz <katzj@redhat.com> - 3.0a-6
- add fix from Jesse Barnes for newer binutils (#129197)
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Wed Apr 21 2004 Jeremy Katz <katzj@redhat.com> - 3.0a-4
- actually add the patch
* Tue Apr 20 2004 Bill Nottingham <notting@redhat.com> 3.0a-3
- add patch to coalesce some relocations (#120080, <erikj@sgi.com>)
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Fri Oct 4 2002 Jeremy Katz <katzj@redhat.com>
- rebuild in new environment
* Sun Jul 8 2001 Bill Nottingham <notting@redhat.com>
- update to 3.0
* Tue Jun 5 2001 Bill Nottingham <notting@redhat.com>
- add fix for invocations from the boot manager menu (#42222)
* Tue May 22 2001 Bill Nottingham <notting@redhat.com>
- add bugfix for efibootmgr (<schwab@suse.de>)
* Mon May 21 2001 Bill Nottingham <notting@redhat.com>
- update to 2.5
- add in efibootmgr from Dell (<Matt_Domsch@dell.com>)
* Thu May 3 2001 Bill Nottingham <notting@redhat.com>
- fix booting of kernels with extra arguments (#37711)
* Wed Apr 25 2001 Bill Nottingham <notting@redhat.com>
- take out Stephane's initrd patch
* Fri Apr 20 2001 Bill Nottingham <notting@redhat.com>
- fix the verbosity patch to not break passing arguments to images
* Wed Apr 18 2001 Bill Nottingham <notting@redhat.com>
- update to 2.0, build elilo, obsolete eli
* Tue Dec 5 2000 Bill Nottingham <notting@redhat.com>
- update to 1.1
* Thu Oct 26 2000 Bill Nottingham <notting@redhat.com>
- add patch for new toolchain, update to 1.0
* Thu Aug 17 2000 Bill Nottingham <notting@redhat.com>
- update to 0.9
%autochangelog

View File

@ -1 +1 @@
SHA512 (gnu-efi-3.0.9.tar.bz2) = 1a775476fcbe354e57c9db258b1c6ad4346b84d1794178ab5d5195b3ffba250066ca4c42a553d5b2866fa1b4e03019d61df0197f269188c73297042990adf316
SHA512 (gnu-efi-3.0.18.tar.bz2) = 39f9fa14b880441a94a04400ff8850efdd9474929e5501dfd05af06e7747b4d0f7cb742ac811c7026cf52d00508efb73018be4d61d63a1211de0cd931cbc473d