Update to 3.0.11 and add some fixes and enhancements.

- 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 our older packages.
  These will go away once we've migrated everything using them in fedora
  to use the newer make system...

Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
Peter Jones 2019-11-14 09:35:45 -05:00
parent 142b2dd6ee
commit e7a09764c4
48 changed files with 6694 additions and 404 deletions

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 5bb5032fdacf183d53b1e0154d281a223d684eea 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()
Subject: [PATCH 01/45] 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
@ -26,3 +26,6 @@ index 129c9f21ad5..73965cae192 100644
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
}
--
2.24.1

View File

@ -1,7 +1,8 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 5d0d538c2574dfe32e87e87ff977f2830ae2990c 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.
Subject: [PATCH 02/45] 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>
@ -22,3 +23,6 @@ index dfd3d3cf486..d351c1ca225 100644
#define EFI_WARN_DELETE_FAILURE EFIWARN(2)
#define EFI_WARN_WRITE_FAILURE EFIWARN(3)
#define EFI_WARN_BUFFER_TOO_SMALL EFIWARN(4)
--
2.24.1

View File

@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From d34132e62f666904158c7ec2f1eef5a9d5281c36 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).
Subject: [PATCH 03/45] * 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>
@ -183,3 +183,6 @@ index 73965cae192..802e7f43309 100644
return i;
}
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 6335e5c697c57d8b5854b8202de3733bcb151ca6 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
Subject: [PATCH 04/45] efilink: fix build with gcc 4.8
intptr_t is undefined without an include on stdint.h
@ -28,3 +28,6 @@ index cc5aa2dc57b..b69a6fd5cf5 100644
/*++
Copyright (c) 1998 Intel Corporation
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 1a53d8f88a452847b25f9689f9a08dbcf82c86e4 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
Subject: [PATCH 05/45] Fix for problem with undeclared intptr_t type
When building gnu-efi with old compilers with pre C90 compilers:
@ -106,3 +106,6 @@ index 4309f9f0e17..ae40595be0b 100644
#elif defined(__GNUC__)
#include <stdint.h>
#endif
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 5b74db0e154ffd2fba4bcc254069844f21913988 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.
Subject: [PATCH 06/45] 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>
@ -129,3 +129,6 @@ index a489993c174..b1ad1fe3087 100644
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
#endif /* GNU_EFI_X86_64_SETJMP_H */
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From de4e5e4e3b6faaf05b0b9a9a7ead882269078dc3 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
Subject: [PATCH 07/45] 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
@ -46,3 +46,6 @@ index 5b1c2862e1b..8cb93b0a039 100644
+
+%.s: %.S
$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
--
2.24.1

View File

@ -1,9 +1,9 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 230c36c6aa4fcb1db61ce177264e224c26314da1 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.
Subject: [PATCH 08/45] 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:
@ -31,3 +31,6 @@ index 2a61699ac25..10d4e7addd0 100644
clean:
rm -f $(TARGETS) *~ *.o $(OBJS)
--
2.24.1

View File

@ -1,8 +1,8 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 238358c6df96923c4510f5e2793a9976c3afdd44 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
Subject: [PATCH 09/45] 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
@ -26,3 +26,6 @@ index e7d2abd79de..bdf5de26a3f 100644
OUT EFI_EVENT *Event
);
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 486ba3c3bdd147b7d98159b9e650be60bce0f027 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
Subject: [PATCH 10/45] Do not include efisetjmp.h on efi.h
People than really want to use efisetjmp implementation can include
the header on their own.
@ -35,3 +35,6 @@ index 9cbc22dc370..2ddd53e0d95 100644
-#include "efisetjmp.h"
#endif
--
2.24.1

View File

@ -0,0 +1,25 @@
From 9b14e7dab0abf0ef062db60666b677b33e10c627 Mon Sep 17 00:00:00 2001
From: Nigel Croxon <ncroxon@redhat.com>
Date: Thu, 3 Oct 2019 12:05:00 -0400
Subject: [PATCH 11/45] 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))
--
2.24.1

View File

@ -1,20 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 11 Apr 2018 17:13:21 -0400
Subject: [PATCH] Make travis build the right project...
Signed-off-by: Peter Jones <pjones@redhat.com>
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index a2cad354b1a..eb9be1e46f2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,4 +14,4 @@ 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 fwupdate" ; fi
+ - 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

@ -0,0 +1,34 @@
From 8b2da2c2247af28bd681a9c8e3231559964c80a6 Mon Sep 17 00:00:00 2001
From: Nigel Croxon <ncroxon@redhat.com>
Date: Mon, 28 Oct 2019 07:45:38 -0400
Subject: [PATCH 12/45] 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
--
2.24.1

View File

@ -0,0 +1,25 @@
From 2ab1abfd26ea0a87a4fdf3d3c532544a65ae6954 Mon Sep 17 00:00:00 2001
From: Nigel Croxon <ncroxon@redhat.com>
Date: Mon, 28 Oct 2019 07:48:52 -0400
Subject: [PATCH 13/45] 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))
--
2.24.1

View File

@ -1,7 +1,7 @@
From 6685cd000223f6b7d667e2854cd3d622d078d147 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 1/2] efibind: Fix usage of efi headers from C++ code
Subject: [PATCH 14/45] 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
@ -11,29 +11,29 @@ Subject: [PATCH 1/2] efibind: Fix usage of efi headers from C++ code
* 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/aa64/efibind.h | 2 +-
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/x64/efibind.h | 4 ++--
inc/x86_64/efibind.h | 4 ++--
6 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/inc/aa64/efibind.h b/inc/aa64/efibind.h
index 3c8cf96..c2c546b 100644
--- a/inc/aa64/efibind.h
+++ b/inc/aa64/efibind.h
@@ -16,7 +16,7 @@
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.
*/
#ifndef GNU_EFI_AA64_EFI_BIND_H
#define GNU_EFI_AA64_EFI_BIND_H
-#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 7a22b9c..012d3d2 100644
index 7a22b9c8458..012d3d2f8c9 100644
--- a/inc/arm/efibind.h
+++ b/inc/arm/efibind.h
@@ -15,7 +15,7 @@
@ -46,7 +46,7 @@ index 7a22b9c..012d3d2 100644
// ANSI C 1999/2000 stdint.h integer width declarations
diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h
index dd01385..27459e4 100644
index dd0138573d9..27459e454d1 100644
--- a/inc/ia32/efibind.h
+++ b/inc/ia32/efibind.h
@@ -25,7 +25,7 @@ Revision History
@ -59,7 +59,7 @@ index dd01385..27459e4 100644
// No ANSI C 1999/2000 stdint.h integer width declarations
diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h
index b9b2e62..3ace8d5 100644
index b9b2e624657..3ace8d59190 100644
--- a/inc/ia64/efibind.h
+++ b/inc/ia64/efibind.h
@@ -24,7 +24,7 @@ Revision History
@ -72,7 +72,7 @@ index b9b2e62..3ace8d5 100644
// No ANSI C 1999/2000 stdint.h integer width declarations
diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h
index 32241e5..1f08cd3 100644
index 32241e5ad46..1f08cd346d0 100644
--- a/inc/mips64el/efibind.h
+++ b/inc/mips64el/efibind.h
@@ -17,7 +17,7 @@
@ -84,10 +84,10 @@ index 32241e5..1f08cd3 100644
// ANSI C 1999/2000 stdint.h integer width declarations
diff --git a/inc/x64/efibind.h b/inc/x64/efibind.h
index ae40595..31e9e11 100644
--- a/inc/x64/efibind.h
+++ b/inc/x64/efibind.h
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
//

View File

@ -0,0 +1,35 @@
From 44267b59d892041048c70e1f8fa17be0829d0978 Mon Sep 17 00:00:00 2001
From: Ben Wolsieffer <benwolsieffer@gmail.com>
Date: Tue, 5 Nov 2019 00:09:12 -0500
Subject: [PATCH 15/45] 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
--
2.24.1

View File

@ -0,0 +1,30 @@
From 9b63de7db6850b2415bb46fa28e0d62fa2f2f50e Mon Sep 17 00:00:00 2001
From: Nigel Croxon <ncroxon@redhat.com>
Date: Thu, 16 Jan 2020 14:35:56 -0500
Subject: [PATCH 16/45] 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)
--
2.24.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
From 643f7e5d01fb6a5633b24c811c098b38a1b60d89 Mon Sep 17 00:00:00 2001
From: sgerwk <sgerwk@aol.com>
Date: Thu, 2 May 2019 12:57:16 +0200
Subject: [PATCH 18/45] 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
--
2.24.1

View File

@ -0,0 +1,89 @@
From ba53984ceeba5309c2769b0cfb34328fe10ee6ca Mon Sep 17 00:00:00 2001
From: Rick Mark <rickmark@outlook.com>
Date: Fri, 27 Oct 2017 14:05:39 -0700
Subject: [PATCH 19/45] 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
--
2.24.1

View File

@ -0,0 +1,33 @@
From 8858302ab24885e96e4094cbd604e8781a7a4bf3 Mon Sep 17 00:00:00 2001
From: Soop <sebastian_osorio@outlook.cl>
Date: Wed, 16 Dec 2015 22:33:33 -0300
Subject: [PATCH 20/45] 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)
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 87cbb23de321f4fbc3d795ed5e40bcbeb833deaf 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
Subject: [PATCH 21/45] Add .travis.yml
Signed-off-by: Peter Jones <pjones@redhat.com>
---
@ -11,7 +11,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000000..a2cad354b1a
index 00000000000..eb9be1e46f2
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,17 @@
@ -31,4 +31,7 @@ index 00000000000..a2cad354b1a
+ - 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 fwupdate" ; fi
+ - 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
--
2.24.1

View File

@ -1,44 +1,48 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 452e6edc834fcbc8eb033b85b48e27ff199058ec 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.
Subject: [PATCH 22/45] 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 | 4 ++-
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(+), 40 deletions(-)
Make.defaults | 39 +++++++++++++------
README.gnuefi | 6 +--
apps/Makefile | 6 +--
gnuefi/Makefile | 6 +--
.../{crt0-efi-aarch64.S => crt0-efi-aa64.S} | 2 +-
gnuefi/{crt0-efi-x86_64.S => crt0-efi-x64.S} | 2 +-
.../{elf_aarch64_efi.lds => elf_aa64_efi.lds} | 0
.../{elf_x86_64_efi.lds => elf_x64_efi.lds} | 2 +-
...6_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%)
@ -64,36 +68,36 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
rename lib/{x86_64 => x64}/setjmp.S (100%)
diff --git a/Make.defaults b/Make.defaults
index ba743f17893..7a8a95c5704 100755
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,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,' )
+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,armv7.*,arm,' \
+ -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,armv7.*,arm,' \
+ -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,armv7.*,arm,' \
+ -e 's,armv[[:digit:]].*,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,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
@ -103,7 +107,7 @@ index ba743f17893..7a8a95c5704 100755
+ -e s,i[3456789]86,ia32, \
+ -e s,amd64,x64, -e s,x86_64,x64, \
+ -e s,aarch64,aa64, \
+ -e 's,armv7.*,arm,' \
+ -e 's,armv[[:digit:]].*,arm,' \
+ )
endif
@ -142,7 +146,7 @@ index ba743f17893..7a8a95c5704 100755
ifneq ($(ARCH),mips64el)
export HAVE_EFI_OBJCOPY=y
diff --git a/README.gnuefi b/README.gnuefi
index 512698c28b4..ac3f0aa6b04 100644
index a65e5f9042a..dd714de116d 100644
--- a/README.gnuefi
+++ b/README.gnuefi
@@ -100,7 +100,7 @@ the appropriate compiler, assembler, linker, ar, and ranlib binaries,
@ -173,7 +177,7 @@ index 512698c28b4..ac3f0aa6b04 100644
The self-relocator operates as follows: the startup code invokes it
diff --git a/apps/Makefile b/apps/Makefile
index 4e1b69a38c8..cba84f4a3c1 100644
index 310c6fdb5fc..a95620cba2d 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -68,9 +68,9 @@ TARGET_RTDRIVERS =
@ -300,20 +304,19 @@ 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 3c8cf963c31..a58b0e1cbef 100644
index c2c546b892a..c4eafa0d8a8 100644
--- a/inc/aarch64/efibind.h
+++ b/inc/aa64/efibind.h
@@ -14,7 +14,8 @@
* GNU General Public License as published by the Free Software Foundation;
@@ -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 ))
#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && !defined(__cplusplus)
// ANSI C 1999/2000 stdint.h integer width declarations
@@ -156,3 +157,4 @@ typedef uint64_t UINTN;
@@ -156,3 +158,4 @@ typedef uint64_t UINTN;
#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
#define EFI_FUNCTION
@ -377,7 +380,7 @@ 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 ae40595be0b..986a73b7775 100644
index 31e9e119d74..2750ab9be7d 100644
--- a/inc/x86_64/efibind.h
+++ b/inc/x64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
@ -478,3 +481,6 @@ 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
--
2.24.1

View File

@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 3219b3e5201a3dd207839c6cc234252b79be6caf 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
Subject: [PATCH 23/45] 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:
@ -54,3 +54,6 @@ index 53a255afbb9..ac50f4eafa9 100644
BufferSize = NumPixels * sizeof(UINT32);
if (BufferSize == gop->Mode->FrameBufferSize) {
CopySize = BufferSize;
--
2.24.1

View File

@ -1,20 +1,36 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 060258e1de84d1de3a5975bebe27575114220cdc 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
Subject: [PATCH 24/45] Get rid of some unused junk that has the BSD 4-clause
license.
We don't need any of this, and its license is not GPL compatible.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
inc/protocol/efidbg.h | 210 -----------------------------------------
inc/protocol/ia64/eficontext.h | 208 ----------------------------------------
inc/protocol/makefile.hdr | 4 +-
3 files changed, 1 insertion(+), 421 deletions(-)
inc/Makefile | 4 -
inc/protocol/efidbg.h | 210 ---------------------------------
inc/protocol/ia64/eficontext.h | Bin 5111 -> 0 bytes
inc/protocol/makefile.hdr | Bin 640 -> 0 bytes
4 files changed, 214 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 1f95a70bb42..00000000000
@ -233,237 +249,64 @@ index 1f95a70bb42..00000000000
-#endif /* _EFIDBG_H_ */
diff --git a/inc/protocol/ia64/eficontext.h b/inc/protocol/ia64/eficontext.h
deleted file mode 100644
index 1a39a6db1e4..00000000000
--- a/inc/protocol/ia64/eficontext.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright (c) 1999, 2000
- * Intel Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- *
- * This product includes software developed by Intel Corporation and
- * its contributors.
- *
- * 4. Neither the name of Intel Corporation or its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-#ifndef _EFICONTEXT_H_
-#define _EFICONTEXT_H_
-
-
-//
-// IA-64 processor exception types
-//
-#define EXCPT_ALT_DTLB 4
-#define EXCPT_DNESTED_TLB 5
-#define EXCPT_BREAKPOINT 11
-#define EXCPT_EXTERNAL_INTERRUPT 12
-#define EXCPT_GEN_EXCEPT 24
-#define EXCPT_NAT_CONSUMPTION 26
-#define EXCPT_DEBUG_EXCEPT 29
-#define EXCPT_UNALIGNED_ACCESS 30
-#define EXCPT_FP_FAULT 32
-#define EXCPT_FP_TRAP 33
-#define EXCPT_TAKEN_BRANCH 35
-#define EXCPT_SINGLE_STEP 36
-
-//
-// IA-64 processor context definition - must be 512 byte aligned!!!
-//
-typedef
-struct {
- UINT64 reserved; // necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned...
-
- UINT64 r1;
- UINT64 r2;
- UINT64 r3;
- UINT64 r4;
- UINT64 r5;
- UINT64 r6;
- UINT64 r7;
- UINT64 r8;
- UINT64 r9;
- UINT64 r10;
- UINT64 r11;
- UINT64 r12;
- UINT64 r13;
- UINT64 r14;
- UINT64 r15;
- UINT64 r16;
- UINT64 r17;
- UINT64 r18;
- UINT64 r19;
- UINT64 r20;
- UINT64 r21;
- UINT64 r22;
- UINT64 r23;
- UINT64 r24;
- UINT64 r25;
- UINT64 r26;
- UINT64 r27;
- UINT64 r28;
- UINT64 r29;
- UINT64 r30;
- UINT64 r31;
-
- UINT64 f2[2];
- UINT64 f3[2];
- UINT64 f4[2];
- UINT64 f5[2];
- UINT64 f6[2];
- UINT64 f7[2];
- UINT64 f8[2];
- UINT64 f9[2];
- UINT64 f10[2];
- UINT64 f11[2];
- UINT64 f12[2];
- UINT64 f13[2];
- UINT64 f14[2];
- UINT64 f15[2];
- UINT64 f16[2];
- UINT64 f17[2];
- UINT64 f18[2];
- UINT64 f19[2];
- UINT64 f20[2];
- UINT64 f21[2];
- UINT64 f22[2];
- UINT64 f23[2];
- UINT64 f24[2];
- UINT64 f25[2];
- UINT64 f26[2];
- UINT64 f27[2];
- UINT64 f28[2];
- UINT64 f29[2];
- UINT64 f30[2];
- UINT64 f31[2];
-
- UINT64 pr;
-
- UINT64 b0;
- UINT64 b1;
- UINT64 b2;
- UINT64 b3;
- UINT64 b4;
- UINT64 b5;
- UINT64 b6;
- UINT64 b7;
-
- // application registers
- UINT64 ar_rsc;
- UINT64 ar_bsp;
- UINT64 ar_bspstore;
- UINT64 ar_rnat;
-
- UINT64 ar_fcr;
-
- UINT64 ar_eflag;
- UINT64 ar_csd;
- UINT64 ar_ssd;
- UINT64 ar_cflg;
- UINT64 ar_fsr;
- UINT64 ar_fir;
- UINT64 ar_fdr;
-
- UINT64 ar_ccv;
-
- UINT64 ar_unat;
-
- UINT64 ar_fpsr;
-
- UINT64 ar_pfs;
- UINT64 ar_lc;
- UINT64 ar_ec;
-
- // control registers
- UINT64 cr_dcr;
- UINT64 cr_itm;
- UINT64 cr_iva;
- UINT64 cr_pta;
- UINT64 cr_ipsr;
- UINT64 cr_isr;
- UINT64 cr_iip;
- UINT64 cr_ifa;
- UINT64 cr_itir;
- UINT64 cr_iipa;
- UINT64 cr_ifs;
- UINT64 cr_iim;
- UINT64 cr_iha;
-
- // debug registers
- UINT64 dbr0;
- UINT64 dbr1;
- UINT64 dbr2;
- UINT64 dbr3;
- UINT64 dbr4;
- UINT64 dbr5;
- UINT64 dbr6;
- UINT64 dbr7;
-
- UINT64 ibr0;
- UINT64 ibr1;
- UINT64 ibr2;
- UINT64 ibr3;
- UINT64 ibr4;
- UINT64 ibr5;
- UINT64 ibr6;
- UINT64 ibr7;
-
- // virtual registers
- UINT64 int_nat; // nat bits for R1-R31
-
-} SYSTEM_CONTEXT;
-
-#endif /* _EFI_CONTEXT_H_ */
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
index 118d6ba3a08..e66e67889c2 100644
--- a/inc/protocol/makefile.hdr
+++ b/inc/protocol/makefile.hdr
@@ -9,8 +9,7 @@
INC_DEPS = $(INC_DEPS) \
$(SDK_INSTALL_DIR)\include\efi\protocol\efivar.h \
$(SDK_INSTALL_DIR)\include\efi\protocol\legacyboot.h \
- $(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h \
- $(SDK_INSTALL_DIR)\include\efi\protocol\efidbg.h \
+ $(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h
!IF "$(PROCESSOR)" == "Ia32"
@@ -22,7 +21,6 @@ INC_DEPS = $(INC_DEPS) \
!IF "$(PROCESSOR)" == "Ia64"
INC_DEPS = $(INC_DEPS) \
- $(SDK_INSTALL_DIR)\include\efi\protocol\$(PROCESSOR)\eficontext.h \
!ENDIF
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
--
2.24.1

View File

@ -1,7 +1,7 @@
From f08f27f5939559997c3177692348fdb7fcde7c89 Mon Sep 17 00:00:00 2001
From 3788e125ecaf08e8cb23ea817bbd9aff42e0bdfe Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 23 Aug 2019 16:23:21 -0400
Subject: [PATCH 01/18] Make ELF constructors and destructors work.
Subject: [PATCH 25/45] Make ELF constructors and destructors work.
This makes setup and teardown functions defined with
__attribute__((__constructor__) and __attribute__((__destructor__)) work
@ -55,7 +55,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
create mode 100644 lib/entry.c
diff --git a/apps/Makefile b/apps/Makefile
index a95620c..2808837 100644
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 \
@ -79,7 +79,7 @@ index a95620c..2808837 100644
diff --git a/apps/ctors_fns.c b/apps/ctors_fns.c
new file mode 100644
index 0000000..6241904
index 00000000000..624190462ea
--- /dev/null
+++ b/apps/ctors_fns.c
@@ -0,0 +1,26 @@
@ -111,7 +111,7 @@ index 0000000..6241904
+// vim:fenc=utf-8:tw=75:noet
diff --git a/apps/ctors_test.c b/apps/ctors_test.c
new file mode 100644
index 0000000..7e48da8
index 00000000000..7e48da8ef35
--- /dev/null
+++ b/apps/ctors_test.c
@@ -0,0 +1,20 @@
@ -136,7 +136,7 @@ index 0000000..7e48da8
+
+// vim:fenc=utf-8:tw=75:noet
diff --git a/gnuefi/crt0-efi-aa64.S b/gnuefi/crt0-efi-aa64.S
index d6e610b..a930258 100644
index d6e610b8c79..a9302588b71 100644
--- a/gnuefi/crt0-efi-aa64.S
+++ b/gnuefi/crt0-efi-aa64.S
@@ -124,7 +124,7 @@ _start:
@ -149,7 +149,7 @@ index d6e610b..a930258 100644
0: ldp x29, x30, [sp], #32
ret
diff --git a/gnuefi/crt0-efi-arm.S b/gnuefi/crt0-efi-arm.S
index c5bb6d4..04e75e9 100644
index c5bb6d482da..04e75e9481a 100644
--- a/gnuefi/crt0-efi-arm.S
+++ b/gnuefi/crt0-efi-arm.S
@@ -136,7 +136,7 @@ _start:
@ -162,7 +162,7 @@ index c5bb6d4..04e75e9 100644
0: add sp, sp, #12
ldr pc, [sp], #4
diff --git a/gnuefi/crt0-efi-ia32.S b/gnuefi/crt0-efi-ia32.S
index f9d5191..8e8e372 100644
index f9d5191ecb5..8e8e372f551 100644
--- a/gnuefi/crt0-efi-ia32.S
+++ b/gnuefi/crt0-efi-ia32.S
@@ -56,13 +56,13 @@ _start:
@ -184,7 +184,7 @@ index f9d5191..8e8e372 100644
// 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 40c3c83..dacb4c4 100644
index 40c3c837a1c..dacb4c4c658 100644
--- a/gnuefi/crt0-efi-ia64.S
+++ b/gnuefi/crt0-efi-ia64.S
@@ -56,7 +56,7 @@ _start:
@ -197,7 +197,7 @@ index 40c3c83..dacb4c4 100644
.exit:
mov ar.pfs=loc0
diff --git a/gnuefi/crt0-efi-mips64el.S b/gnuefi/crt0-efi-mips64el.S
index 6a62aca..5ad2503 100644
index 6a62aca98b4..5ad2503ca79 100644
--- a/gnuefi/crt0-efi-mips64el.S
+++ b/gnuefi/crt0-efi-mips64el.S
@@ -172,8 +172,8 @@ _pc:
@ -212,7 +212,7 @@ index 6a62aca..5ad2503 100644
// a1: SystemTable
ld $a1, 24($sp)
diff --git a/gnuefi/crt0-efi-x64.S b/gnuefi/crt0-efi-x64.S
index 6533af7..3fe361b 100644
index 6533af7461f..3fe361b7ffd 100644
--- a/gnuefi/crt0-efi-x64.S
+++ b/gnuefi/crt0-efi-x64.S
@@ -56,7 +56,7 @@ _start:
@ -225,7 +225,7 @@ index 6533af7..3fe361b 100644
.exit:
diff --git a/gnuefi/elf_aa64_efi.lds b/gnuefi/elf_aa64_efi.lds
index 836d982..7220636 100644
index 836d98255d8..7220636e40c 100644
--- a/gnuefi/elf_aa64_efi.lds
+++ b/gnuefi/elf_aa64_efi.lds
@@ -26,6 +26,20 @@ SECTIONS
@ -258,7 +258,7 @@ index 836d982..7220636 100644
}
diff --git a/gnuefi/elf_arm_efi.lds b/gnuefi/elf_arm_efi.lds
index 665bbdb..f891921 100644
index 665bbdbf065..f891921e58f 100644
--- a/gnuefi/elf_arm_efi.lds
+++ b/gnuefi/elf_arm_efi.lds
@@ -26,6 +26,20 @@ SECTIONS
@ -283,7 +283,7 @@ index 665bbdb..f891921 100644
it all into .data: */
. = ALIGN(16);
diff --git a/gnuefi/elf_ia32_efi.lds b/gnuefi/elf_ia32_efi.lds
index f27fe5f..739c370 100644
index f27fe5fc6e6..739c370c9eb 100644
--- a/gnuefi/elf_ia32_efi.lds
+++ b/gnuefi/elf_ia32_efi.lds
@@ -40,6 +40,21 @@ SECTIONS
@ -309,7 +309,7 @@ index f27fe5f..739c370 100644
it all into .data: */
*(.sbss)
diff --git a/gnuefi/elf_ia32_fbsd_efi.lds b/gnuefi/elf_ia32_fbsd_efi.lds
index cd309e2..33c38a0 100644
index cd309e24f7f..33c38a0b2d0 100644
--- a/gnuefi/elf_ia32_fbsd_efi.lds
+++ b/gnuefi/elf_ia32_fbsd_efi.lds
@@ -40,6 +40,21 @@ SECTIONS
@ -335,7 +335,7 @@ index cd309e2..33c38a0 100644
it all into .data: */
*(.sbss)
diff --git a/gnuefi/elf_ia64_efi.lds b/gnuefi/elf_ia64_efi.lds
index 190792a..5afd644 100644
index 190792a0c94..5afd6443722 100644
--- a/gnuefi/elf_ia64_efi.lds
+++ b/gnuefi/elf_ia64_efi.lds
@@ -39,6 +39,21 @@ SECTIONS
@ -361,7 +361,7 @@ index 190792a..5afd644 100644
it all into .data: */
*(.dynbss)
diff --git a/gnuefi/elf_mips64el_efi.lds b/gnuefi/elf_mips64el_efi.lds
index 4d1a077..cc0eee3 100644
index 4d1a077d8f8..cc0eee3bdcd 100644
--- a/gnuefi/elf_mips64el_efi.lds
+++ b/gnuefi/elf_mips64el_efi.lds
@@ -27,6 +27,20 @@ SECTIONS
@ -386,7 +386,7 @@ index 4d1a077..cc0eee3 100644
it all into .data: */
. = ALIGN(16);
diff --git a/gnuefi/elf_x64_efi.lds b/gnuefi/elf_x64_efi.lds
index c7a1058..356e63b 100644
index c7a105898c8..356e63bb8a7 100644
--- a/gnuefi/elf_x64_efi.lds
+++ b/gnuefi/elf_x64_efi.lds
@@ -30,6 +30,7 @@ SECTIONS
@ -420,7 +420,7 @@ index c7a1058..356e63b 100644
it all into .data: */
*(.sbss)
diff --git a/gnuefi/elf_x64_fbsd_efi.lds b/gnuefi/elf_x64_fbsd_efi.lds
index 705719b..e371e5b 100644
index 705719bf68b..e371e5b784f 100644
--- a/gnuefi/elf_x64_fbsd_efi.lds
+++ b/gnuefi/elf_x64_fbsd_efi.lds
@@ -36,6 +36,21 @@ SECTIONS
@ -446,7 +446,7 @@ index 705719b..e371e5b 100644
it all into .data: */
*(.sbss)
diff --git a/lib/Makefile b/lib/Makefile
index 8bf9400..1c2ff1d 100644
index 8bf94000e33..1c2ff1db89a 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -43,8 +43,8 @@ include $(SRCDIR)/../Make.defaults
@ -462,7 +462,7 @@ index 8bf9400..1c2ff1d 100644
$(ARCH)/initplat $(ARCH)/math $(ARCH)/setjmp
diff --git a/lib/entry.c b/lib/entry.c
new file mode 100644
index 0000000..79d0002
index 00000000000..79d00025eda
--- /dev/null
+++ b/lib/entry.c
@@ -0,0 +1,58 @@
@ -525,7 +525,7 @@ index 0000000..79d0002
+
+// vim:fenc=utf-8:tw=75:noet
diff --git a/lib/init.c b/lib/init.c
index 4f238c0..c3df3ee 100644
index 4f238c0a2cc..c3df3ee8879 100644
--- a/lib/init.c
+++ b/lib/init.c
@@ -46,57 +46,59 @@ Returns:

View File

@ -0,0 +1,111 @@
From 5695f90080b20ff4911a5a18f4c4a7dcd4e2b237 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 14 Nov 2019 10:08:08 -0500
Subject: [PATCH 26/45] 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
--
2.24.1

View File

@ -0,0 +1,27 @@
From 217acd337cbdfd466978124049e42fa973edf6f4 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 13 Nov 2019 13:38:20 -0500
Subject: [PATCH 27/45] 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
--
2.24.1

View File

@ -0,0 +1,53 @@
From 3b79571d75d46b5c7101ee0ae508a4eac6378103 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 14 Nov 2019 09:54:39 -0500
Subject: [PATCH 28/45] 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 1c2ff1db89a..4847f4d7a86 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) $@ $^
--
2.24.1

View File

@ -0,0 +1,97 @@
From ad5579d29986631c34f36c633dd202b3dea9d448 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Thu, 14 Nov 2019 09:55:07 -0500
Subject: [PATCH 29/45] 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 4847f4d7a86..0e950db9c0c 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -64,7 +64,7 @@ endif
OBJS = $(FILES:%=%.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 $@
--
2.24.1

View File

@ -0,0 +1,30 @@
From 5139f7315ef5fee331ced3e851a8833f30aac656 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:45:38 -0400
Subject: [PATCH 30/45] 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 | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 .gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000000..d3a9be78dfa
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+inc/inc.mak binary
+inc/make.inf binary
+inc/makefile.hdr binary
+inc/protocol/ia64/eficontext.h binary
+inc/protocol/make.inf binary
+inc/protocol/makefile.hdr binary
--
2.24.1

View File

@ -0,0 +1,78 @@
From 572be899ca9d1fb33fa72e496a3e0fb312dd263d Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:37:17 -0400
Subject: [PATCH 31/45] 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
--
2.24.1

View File

@ -0,0 +1,83 @@
From 6eb63b104e77f9244a31d183cbe34e929afe1975 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 30 Sep 2019 14:29:45 -0400
Subject: [PATCH 32/45] 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
--
2.24.1

View File

@ -0,0 +1,207 @@
From 75e454f76846808e6b81c39c273d85b70afb330b Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 27 Aug 2019 13:44:15 -0400
Subject: [PATCH 33/45] 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,18 +74,25 @@ 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;
+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
--
2.24.1

View File

@ -0,0 +1,103 @@
From ecf4e093f27902ef42d56b48db3fd583e9a0c62a Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:36:18 -0400
Subject: [PATCH 34/45] Make: make TOPDIR actually work and get rid of unused
CDIR
Signed-off-by: Peter Jones <pjones@redhat.com>
---
Make.defaults | 2 +-
apps/Makefile | 4 +---
gnuefi/Makefile | 4 +---
inc/Makefile | 5 +----
lib/Makefile | 2 +-
5 files changed, 5 insertions(+), 12 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)
+TOPDIR = $(SRCDIR)/..
include $(SRCDIR)/../Make.defaults
-TOPDIR = $(SRCDIR)/..
-
-CDIR=$(TOPDIR)/..
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)
+TOPDIR = $(SRCDIR)/..
include $(SRCDIR)/../Make.defaults
-TOPDIR = $(SRCDIR)/..
-
-CDIR=$(TOPDIR)/..
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 0e950db9c0c..9a2b611cab7 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 \
--
2.24.1

View File

@ -0,0 +1,41 @@
From 9e329624639e5c3a6d16c61dfaa0304806709fc4 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:39:35 -0400
Subject: [PATCH 35/45] 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
--
2.24.1

View File

@ -0,0 +1,56 @@
From 1071f82a88908aacc2de36111045f721ec53a644 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:41:16 -0400
Subject: [PATCH 36/45] Install our libraries in $(LIBDIR)/gnuefi/$(ARCH)
This makes it possible to install all the output on the same machine for
cross-builds.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
gnuefi/Makefile | 10 +++++-----
lib/Makefile | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
index bea629b0b29..5bdaec7579b 100644
--- a/gnuefi/Makefile
+++ b/gnuefi/Makefile
@@ -60,16 +60,16 @@ clean:
@rm -vf $(TARGETS) *~ *.o $(OBJS)
install:
- mkdir -p $(INSTALLROOT)$(LIBDIR)
- $(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(LIBDIR)
+ 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)
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
else
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
endif
else
- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)
+ $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
endif
include $(SRCDIR)/../Make.rules
diff --git a/lib/Makefile b/lib/Makefile
index 9a2b611cab7..14cf9059b28 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -66,7 +66,7 @@ OBJS = $(FILES:%=%.o)
SUBDIRS = $(ARCHES) runtime
-LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)
+LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR)/gnuefi/$(ARCH)
all: libsubdirs libefi.a
--
2.24.1

View File

@ -0,0 +1,40 @@
From 0a12613849ffb6e32e1014b94d1e48b6ba2bef45 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 25 Oct 2019 15:42:10 -0400
Subject: [PATCH 37/45] 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 | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/inc/Makefile b/inc/Makefile
index 13022fd6ae1..f993cc5b108 100644
--- a/inc/Makefile
+++ b/inc/Makefile
@@ -9,12 +9,14 @@ 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); \
+ )
include $(SRCDIR)/../Make.rules
--
2.24.1

View File

@ -0,0 +1,49 @@
From 01560cac5ddbbb93d642c29758c27909ce1c1d18 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 13 Nov 2019 15:24:27 -0500
Subject: [PATCH 38/45] 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 | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
index 5bdaec7579b..d96ec74e96f 100644
--- a/gnuefi/Makefile
+++ b/gnuefi/Makefile
@@ -55,21 +55,21 @@ 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
include $(SRCDIR)/../Make.rules
--
2.24.1

View File

@ -0,0 +1,616 @@
From ea15a51ab4f9d513c773d9d8824e0dac8c883c0b Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 13 Nov 2019 15:24:41 -0500
Subject: [PATCH 39/45] 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 157559d20ee..284819977ed 100755
--- a/Make.defaults
+++ b/Make.defaults
@@ -81,12 +81,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, \
@@ -101,6 +103,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
@@ -160,7 +163,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 f993cc5b108..34d49a075d0 100644
--- a/inc/Makefile
+++ b/inc/Makefile
@@ -5,18 +5,37 @@ 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
include $(SRCDIR)/../Make.rules
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
--
2.24.1

View File

@ -0,0 +1,220 @@
From ff402db6d28775e0ff5412d9d00f1986b877ea77 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 18 Nov 2019 13:05:15 -0500
Subject: [PATCH 40/45] 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 | 132 ++++++++++++++++++++++++++--------------------------
1 file changed, 65 insertions(+), 67 deletions(-)
diff --git a/lib/print.c b/lib/print.c
index 35e43c03db5..0b823481347 100644
--- a/lib/print.c
+++ b/lib/print.c
@@ -1067,24 +1067,24 @@ Returns:
Item.Item.pw = Item.Scratch;
break;
- case '0':
- Item.Pad = '0';
+ case ',':
+ Item.Comma = TRUE;
break;
case '-':
Item.PadBefore = FALSE;
break;
- case ',':
- Item.Comma = TRUE;
+ case '*':
+ *Item.WidthParse = va_arg(ps->args, UINTN);
break;
case '.':
Item.WidthParse = &Item.FieldWidth;
break;
- case '*':
- *Item.WidthParse = va_arg(ps->args, UINTN);
+ case '0':
+ Item.Pad = '0';
break;
case '1':
@@ -1112,52 +1112,23 @@ 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 'D':
+ {
+ EFI_DEVICE_PATH *dp = va_arg(ps->args, EFI_DEVICE_PATH *);
+ CHAR16 *dpstr = DevicePathToStr(dp);
+ StrnCpy(Item.Scratch, dpstr, PRINT_ITEM_BUFFER_LEN);
+ Item.Scratch[PRINT_ITEM_BUFFER_LEN-1] = L'\0';
+ FreePool(dpstr);
- 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 (
@@ -1168,17 +1139,13 @@ Returns:
Item.Item.pw = Item.Scratch;
break;
- case 'D':
- {
- EFI_DEVICE_PATH *dp = va_arg(ps->args, EFI_DEVICE_PATH *);
- CHAR16 *dpstr = DevicePathToStr(dp);
- StrnCpy(Item.Scratch, dpstr, PRINT_ITEM_BUFFER_LEN);
- Item.Scratch[PRINT_ITEM_BUFFER_LEN-1] = L'\0';
- FreePool(dpstr);
+ case 'E':
+ Attr = ps->AttrError;
+ break;
- Item.Item.pw = Item.Scratch;
+ case 'e':
+ PSETATTR(ps, ps->AttrError);
break;
- }
case 'f':
FloatToString (
@@ -1189,38 +1156,69 @@ Returns:
Item.Item.pw = Item.Scratch;
break;
- case 't':
- TimeToString (Item.Scratch, va_arg(ps->args, EFI_TIME *));
- Item.Item.pw = Item.Scratch;
- break;
-
- case 'r':
- StatusToString (Item.Scratch, va_arg(ps->args, EFI_STATUS));
+ case 'g':
+ GuidToString (Item.Scratch, va_arg(ps->args, EFI_GUID *));
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:
--
2.24.1

View File

@ -0,0 +1,38 @@
From 37e7f439442c89f5bcb30ba7b65f3d7ba5eff9bf Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 18 Nov 2019 13:06:23 -0500
Subject: [PATCH 41/45] 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;
--
2.24.1

30
0042-Switch-to-fPIE.patch Normal file
View File

@ -0,0 +1,30 @@
From 34e890bcf098ef21194db9d440762b5a34e50196 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 19 Nov 2019 13:23:14 -0500
Subject: [PATCH 42/45] 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 284819977ed..27d74a74954 100755
--- a/Make.defaults
+++ b/Make.defaults
@@ -192,10 +192,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))
--
2.24.1

View File

@ -0,0 +1,42 @@
From f5d8b8181ff9241a313810d9a5fd62e35d7a9d8a Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 14 Jan 2020 10:13:30 -0500
Subject: [PATCH 43/45] 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
--
2.24.1

View File

@ -0,0 +1,42 @@
From 7fcc84bd9b5d99a9966269483692eaa58ebf9662 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 15 Jan 2020 13:07:49 -0500
Subject: [PATCH 44/45] 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/
--
2.24.1

View File

@ -0,0 +1,40 @@
From 981ef7277241d0c5986b79cce16f3960f7e17ee4 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 15 Jan 2020 13:10:11 -0500
Subject: [PATCH 45/45] 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 27d74a74954..fd5ccde7dbc 100755
--- a/Make.defaults
+++ b/Make.defaults
@@ -180,10 +180,6 @@ endif
endif
endif
-ifneq ($(ARCH),arm)
-export LIBGCC=$(shell $(CC) $(ARCH3264) -print-libgcc-file-name)
-endif
-
ifeq ($(ARCH),arm)
CFLAGS += -marm
endif
@@ -222,3 +218,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
--
2.24.1

View File

@ -8,10 +8,38 @@ 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-Add-.travis.yml.patch
Patch0012: 0012-Make-travis-build-the-right-project.patch
Patch0013: 0013-Use-EFI-canonical-names-everywhere-the-compiler-does.patch
Patch0014: 0014-Fix-a-minor-coverity-complaint-in-some-apps.patch
Patch0015: 0015-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
Patch0016: 0016-Make-ELF-constructors-and-destructors-work.patch
Patch0017: 0001-efibind-Fix-usage-of-efi-headers-from-C-code.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-Get-rid-of-some-unused-junk-that-has-the-BSD-4-claus.patch
Patch0025: 0025-Make-ELF-constructors-and-destructors-work.patch
Patch0026: 0026-Remove-the-accidental-lib-Makefile.orig.patch
Patch0027: 0027-gitignore-add-our-build-directories.patch
Patch0028: 0028-make-Fix-shell-exit-status-handling.patch
Patch0029: 0029-make-Make-make-clean-use-and-rm-v-everywhere.patch
Patch0030: 0030-Add-stuff-that-s-got-weird-characters-to-.gitattribu.patch
Patch0031: 0031-Get-rid-of-unused-make-like-files-from-yore.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

View File

@ -1,8 +1,8 @@
Name: gnu-efi
Epoch: 1
Version: 3.0.9
Version: 3.0.11
%global tarball_version 3.0.9
Release: 4%{?dist}%{?buildid}
Release: 1%{?dist}%{?buildid}
Summary: Development Libraries and headers for EFI
License: BSD
URL: https://sourceforge.net/projects/gnu-efi/
@ -59,6 +59,7 @@ 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
BuildArch: noarch
%description devel
This package contains development headers and libraries for developing
@ -84,35 +85,69 @@ git config --unset user.name
%build
# Package cannot build with %%{?_smp_mflags}.
make
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
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
mkdir -p %{buildroot}/%{_libdir}/gnuefi
mkdir -p %{buildroot}/%{_prefix}/lib/
mkdir -p %{buildroot}/%{efi_esp_dir}/%{efi_arch}
make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} install
mv %{buildroot}/%{_libdir}/*.lds %{buildroot}/%{_libdir}/*.o %{buildroot}/%{_libdir}/gnuefi
make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} install
mv %{efi_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi_arch}/
# temporarily, for compatibility with our older packages
mkdir -p %{buildroot}/%{_libdir}/gnuefi/
mkdir -p %{buildroot}/%{_includedir}/efi/
%if %{efi_has_alt_arch}
mkdir -p %{buildroot}/%{_prefix}/%{lib}/gnuefi
mkdir -p %{buildroot}%{efi_esp_dir}/%{efi_alt_arch}
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/%{lib} INSTALLROOT=%{buildroot} ARCH=%{efi_alt_arch} install
mv %{buildroot}/%{_prefix}/%{lib}/*.{lds,o} %{buildroot}/%{_prefix}/%{lib}/gnuefi/
setarch linux32 -B make PREFIX=%{_prefix} LIBDIR=%{_prefix}/lib INSTALLROOT=%{buildroot} ARCH=%{efi_alt_arch} install
mv %{efi_alt_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi_alt_arch}/
# temporarily, for compatibility with our older packages
cd %{buildroot}/%{_prefix}/lib/
ln -s gnuefi/%{efi_alt_arch}/*.a .
cd gnuefi
ln -s %{efi_alt_arch}/crt0.o crt0-efi-%{efi_alt_arch}.o
ln -s %{efi_alt_arch}/efi.lds elf_%{efi_alt_arch}_efi.lds
%endif
# temporarily, for compatibility with our older packages
cd %{buildroot}/%{_libdir}/
ln -s ../lib/gnuefi/%{efi_arch}/*.a .
cd gnuefi
ln -s ../../lib/gnuefi/%{efi_arch}/crt0.o crt0-efi-%{efi_arch}.o
ln -s ../../lib/gnuefi/%{efi_arch}/efi.lds elf_%{efi_arch}_efi.lds
%ifarch x86_64
ln -s ../../lib/gnuefi/%{efi_arch}/crt0.o crt0-efi-x86_64.o
ln -s ../../lib/gnuefi/%{efi_arch}/efi.lds elf_x86_64_efi.lds
%endif
%ifarch aarch64
ln -s ../../lib/gnuefi/%{efi_arch}/crt0.o crt0-efi-aarch64.o
ln -s ../../lib/gnuefi/%{efi_arch}/efi.lds elf_aarch64_efi.lds
%endif
cd %{buildroot}/%{_includedir}/efi
if [[ -d aa64 ]] ; then
ln -s aa64 aarch64
fi
if [[ -d x64 ]] ; then
ln -s x64 x86_64
fi
%files
%{_prefix}/%{lib}*/*
%{_prefix}/lib*/*
%files devel
%doc README.*
%{_mandir}/man3/*
%{_includedir}/efi
%{_includedir}/*.mk
%files utils
%dir %attr(0700,root,root) %{efi_esp_dir}/%{efi_arch}/
@ -123,6 +158,20 @@ mv %{efi_arch}/apps/{route80h.efi,modelist.efi} %{buildroot}%{efi_esp_dir}/%{efi
%endif
%changelog
* 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