After 31c209ebf59 delivered, MokManager.efi has below error during shim invoked: [Bds]Booting suse-secureboot Loading driver at 0x0002FDBF000 EntryPoint=0x0002FDDD000 2 sections contain entry point Failed to load image: Unsupported Failed to start MokManager: Unsupported The root cause is the AArch64 PE section address overlapped. Sections ================================================================================ Name RWX VirtSize VirtAddr RawAddr RawSize Entropy md5 /4 R-- 0x16c34 0x5000 0x400 0x17c00 4.84 bdfa950df3517b30bc1ba386b19b322b .text R-X 0x5c88c 0x1c000 0x18000 0x5d000 6.32 b52855acbce7b2ea150c30bc4186898d Reason: The 0x5000 + 0x17c00 is lager than 0x1c000 which is an unsupported/illegal format. To fix this issue, there are 3 patches need to be applied from upstream: d91c67e8730 Re: Add support for AArch64 EFI (efi-*-aarch64) 32384aa396e Re: AArch64: Add support for AArch64 EFI (efi-*-aarch64) 5bb067dba don't over-align file positions of PE executable sections After above changes, the PE section address are correct. Sections ================================================================================ Name RWX VirtSize VirtAddr RawAddr RawSize Entropy md5 /4 R-- 0x16c34 0x5000 0x400 0x16e00 4.97 4facea77c0e1db16428ec65d790b13e3 .text R-X 0x5c88c 0x1c000 0x17200 0x5ca00 6.34 107cbdfa866047ff7a0463c71bbd2745 References: bsn#351 Change-Id: I2e4563b129e30ff55f2146526fc37776dcaf40dc Signed-off-by: Chenxi Mao <chenxi.mao@suse.com>
180 lines
6.7 KiB
Diff
180 lines
6.7 KiB
Diff
From 4b6391170a7c3a70946501fb51606c95827ed9cb Mon Sep 17 00:00:00 2001
|
|
From: Alan Modra <amodra@gmail.com>
|
|
Date: Thu, 25 Nov 2021 14:26:51 +1030
|
|
Subject: [PATCH 1/3] AArch64: Add support for AArch64 EFI (efi-*-aarch64)
|
|
|
|
Commit b69c9d41e8 edited bfd/Makefile.in rather than using automake,
|
|
which meant a typo in Makefile.am was not discovered and other
|
|
differences in Makefile.in are seen with a proper regeneration. One
|
|
difference was lack of an empty line between the pe-aarch64igen.c rule
|
|
and the following $(BFD32_LIBS) etc. dependency rule, in the
|
|
regenerated file. Not that it matters for proper "make" behaviour,
|
|
but it's nicer with a line between those rules. Moving the rule
|
|
earlier seems to cure the missing empty line.
|
|
|
|
* Makefile.am (BFD64_BACKENDS): Correct typo.
|
|
(BFD_H_DEPS, LOCAL_H_DEPS): Move earlier. Move rule using these
|
|
deps earlier too.
|
|
* Makefile.in: Regenerate.
|
|
* po/BLD-POTFILES.in: Regenerate.
|
|
* po/SRC-POTFILES.in: Regenerate.
|
|
|
|
References: bsn#351
|
|
Signed-off-by: Chenxi Mao <chenxi.mao@suse.com>
|
|
---
|
|
bfd/Makefile.am | 20 ++++++++++----------
|
|
bfd/Makefile.in | 21 ++++++++++-----------
|
|
bfd/po/BLD-POTFILES.in | 1 +
|
|
bfd/po/SRC-POTFILES.in | 1 +
|
|
4 files changed, 22 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
|
|
index a4e84a1d..7c859428 100644
|
|
--- a/bfd/Makefile.am
|
|
+++ b/bfd/Makefile.am
|
|
@@ -569,7 +569,7 @@ BFD64_BACKENDS = \
|
|
mmo.lo \
|
|
pe-aarch64igen.lo \
|
|
pe-x86_64.lo \
|
|
- pei-aarch64lo \
|
|
+ pei-aarch64.lo \
|
|
pei-ia64.lo \
|
|
pei-x86_64.lo \
|
|
pepigen.lo \
|
|
@@ -710,6 +710,15 @@ BUILT_SOURCES = $(BUILD_HFILES)
|
|
|
|
HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
|
|
|
|
+BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
|
|
+LOCAL_H_DEPS = libbfd.h sysdep.h config.h
|
|
+$(BFD32_LIBS) \
|
|
+ $(BFD64_LIBS) \
|
|
+ $(ALL_MACHINES) \
|
|
+ $(BFD32_BACKENDS) \
|
|
+ $(BFD64_BACKENDS) \
|
|
+ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
|
|
+
|
|
SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES)
|
|
BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
|
|
|
|
@@ -869,15 +878,6 @@ pe-aarch64igen.c: peXXigen.c
|
|
echo "#line 1 \"peXXigen.c\"" > $@
|
|
$(SED) -e s/XX/peAArch64/g < $< >> $@
|
|
|
|
-BFD_H_DEPS= $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
|
|
-LOCAL_H_DEPS= libbfd.h sysdep.h config.h
|
|
-$(BFD32_LIBS) \
|
|
- $(BFD64_LIBS) \
|
|
- $(ALL_MACHINES) \
|
|
- $(BFD32_BACKENDS) \
|
|
- $(BFD64_BACKENDS) \
|
|
- $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
|
|
-
|
|
host-aout.lo: Makefile
|
|
|
|
# The following program can be used to generate a simple config file
|
|
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
|
|
index dd029f68..66fa92c1 100644
|
|
--- a/bfd/Makefile.in
|
|
+++ b/bfd/Makefile.in
|
|
@@ -1131,6 +1131,8 @@ BUILD_HFILES = \
|
|
# Ensure they are built early:
|
|
BUILT_SOURCES = $(BUILD_HFILES)
|
|
HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
|
|
+BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
|
|
+LOCAL_H_DEPS = libbfd.h sysdep.h config.h
|
|
SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES)
|
|
BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
|
|
|
|
@@ -1156,8 +1158,6 @@ libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB)
|
|
# everything else starts using libtool. FIXME.
|
|
noinst_LIBRARIES = libbfd.a
|
|
libbfd_a_SOURCES =
|
|
-BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
|
|
-LOCAL_H_DEPS = libbfd.h sysdep.h config.h
|
|
BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c \
|
|
bfdio.c bfdwin.c section.c archures.c reloc.c \
|
|
syms.c bfd.c archive.c corefile.c targets.c format.c \
|
|
@@ -1540,6 +1540,7 @@ distclean-compile:
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf-core.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc532-mach.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdp11.Plo@am__quote@
|
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64igen.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm-wince.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-i386.Plo@am__quote@
|
|
@@ -1547,6 +1548,7 @@ distclean-compile:
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-sh.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-x86_64.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pef.Plo@am__quote@
|
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-aarch64.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm-wince.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-i386.Plo@am__quote@
|
|
@@ -1554,11 +1556,9 @@ distclean-compile:
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-mcore.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-sh.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-x86_64.Plo@am__quote@
|
|
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-aarch64.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peigen.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pepigen.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pex64igen.Plo@am__quote@
|
|
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64igen.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcboot.Plo@am__quote@
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@
|
|
@@ -1884,6 +1884,12 @@ uninstall-am: uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES
|
|
|
|
.PRECIOUS: Makefile
|
|
|
|
+$(BFD32_LIBS) \
|
|
+ $(BFD64_LIBS) \
|
|
+ $(ALL_MACHINES) \
|
|
+ $(BFD32_BACKENDS) \
|
|
+ $(BFD64_BACKENDS) \
|
|
+ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
|
|
|
|
po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
|
|
for file in $(SRC_POTFILES); do echo $$file; done \
|
|
@@ -2001,13 +2007,6 @@ pe-aarch64igen.c: peXXigen.c
|
|
echo "#line 1 \"peXXigen.c\"" > $@
|
|
$(SED) -e s/XX/peAArch64/g < $< >> $@
|
|
|
|
-$(BFD32_LIBS) \
|
|
- $(BFD64_LIBS) \
|
|
- $(ALL_MACHINES) \
|
|
- $(BFD32_BACKENDS) \
|
|
- $(BFD64_BACKENDS) \
|
|
- $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
|
|
-
|
|
host-aout.lo: Makefile
|
|
|
|
# The following program can be used to generate a simple config file
|
|
diff --git a/bfd/po/BLD-POTFILES.in b/bfd/po/BLD-POTFILES.in
|
|
index f81e2b40..f0a870df 100644
|
|
--- a/bfd/po/BLD-POTFILES.in
|
|
+++ b/bfd/po/BLD-POTFILES.in
|
|
@@ -7,6 +7,7 @@ elf64-aarch64.c
|
|
elf64-ia64.c
|
|
elf64-riscv.c
|
|
elf64-target.h
|
|
+pe-aarch64igen.c
|
|
peigen.c
|
|
pepigen.c
|
|
pex64igen.c
|
|
diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in
|
|
index c83b86cd..10de7bc0 100644
|
|
--- a/bfd/po/SRC-POTFILES.in
|
|
+++ b/bfd/po/SRC-POTFILES.in
|
|
@@ -320,6 +320,7 @@ pe-x86_64.c
|
|
pef-traceback.h
|
|
pef.c
|
|
pef.h
|
|
+pei-aarch64.c
|
|
pei-arm-wince.c
|
|
pei-arm.c
|
|
pei-i386.c
|
|
--
|
|
2.30.2
|
|
|