Don't make .reloc sections on Aarch64 binaries.
Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
parent
c4ded8b842
commit
ce8b17269b
76
0001-arm64-efi-remove-pointless-dummy-.reloc-section.patch
Normal file
76
0001-arm64-efi-remove-pointless-dummy-.reloc-section.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From 6e32a714438f3938e1fb64cb380e7fa8b0c8789a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 24 Aug 2017 16:54:18 -0400
|
||||
Subject: [PATCH] arm64: efi: remove pointless dummy .reloc section
|
||||
|
||||
The kernel's EFI PE/COFF header contains a dummy .reloc section, and
|
||||
an explanatory comment that claims that this is required for the EFI
|
||||
application loader to accept the Image as a relocatable image (i.e.,
|
||||
one that can be loaded at any offset and fixed up in place)
|
||||
|
||||
This was inherited from the x86 implementation, which has elaborate host
|
||||
tooling to mangle the PE/COFF header post-link time, and which populates
|
||||
the .reloc section with a single dummy base relocation. On ARM, no such
|
||||
tooling exists, and the .reloc section remains empty, and is never even
|
||||
exposed via the BaseRelocationTable directory entry, which is where the
|
||||
PE/COFF loader looks for it.
|
||||
|
||||
The PE/COFF spec is unclear about relocatable images that do not require
|
||||
any fixups, but the EDK2 implementation, which is the de facto reference
|
||||
for PE/COFF in the UEFI space, clearly does not care, and explicitly
|
||||
mentions (in a comment) that relocatable images with no base relocations
|
||||
are perfectly fine, as long as they don't have the RELOCS_STRIPPED
|
||||
attribute set (which is not the case for our PE/COFF image)
|
||||
|
||||
So simply remove the .reloc section altogether.
|
||||
|
||||
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Acked-by: Mark Rutland <mark.rutland@arm.com>
|
||||
Acked-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
gnuefi/crt0-efi-aarch64.S | 22 +---------------------
|
||||
1 file changed, 1 insertion(+), 21 deletions(-)
|
||||
|
||||
diff --git a/gnuefi/crt0-efi-aarch64.S b/gnuefi/crt0-efi-aarch64.S
|
||||
index 7a9e5c2..fef997b 100644
|
||||
--- a/gnuefi/crt0-efi-aarch64.S
|
||||
+++ b/gnuefi/crt0-efi-aarch64.S
|
||||
@@ -31,7 +31,7 @@ pe_header:
|
||||
.short 0
|
||||
coff_header:
|
||||
.short 0xaa64 // AArch64
|
||||
- .short 2 // nr_sections
|
||||
+ .short 1 // nr_sections
|
||||
.long 0 // TimeDateStamp
|
||||
.long 0 // PointerToSymbolTable
|
||||
.long 1 // NumberOfSymbols
|
||||
@@ -85,26 +85,6 @@ extra_header_fields:
|
||||
|
||||
// Section table
|
||||
section_table:
|
||||
-
|
||||
- /*
|
||||
- * The EFI application loader requires a relocation section
|
||||
- * because EFI applications must be relocatable. This is a
|
||||
- * dummy section as far as we are concerned.
|
||||
- */
|
||||
- .ascii ".reloc"
|
||||
- .byte 0
|
||||
- .byte 0 // end of 0 padding of section name
|
||||
- .long 0
|
||||
- .long 0
|
||||
- .long 0 // SizeOfRawData
|
||||
- .long 0 // PointerToRawData
|
||||
- .long 0 // PointerToRelocations
|
||||
- .long 0 // PointerToLineNumbers
|
||||
- .short 0 // NumberOfRelocations
|
||||
- .short 0 // NumberOfLineNumbers
|
||||
- .long 0x42100040 // Characteristics (section flags)
|
||||
-
|
||||
-
|
||||
.ascii ".text"
|
||||
.byte 0
|
||||
.byte 0
|
||||
--
|
||||
2.13.5
|
||||
|
@ -1,7 +1,7 @@
|
||||
Summary: Development Libraries and headers for EFI
|
||||
Name: gnu-efi
|
||||
Version: 3.0.5
|
||||
Release: 10%{?dist}%{?buildid}
|
||||
Release: 11%{?dist}%{?buildid}
|
||||
Epoch: 1
|
||||
Group: Development/System
|
||||
License: BSD
|
||||
@ -31,6 +31,7 @@ Patch0010: 0010-Make-clang-not-complain-about-the-debughook-s-optimi.patch
|
||||
Patch0011: 0011-Nerf-Werror-pragma-away.patch
|
||||
Patch0012: 0012-Make-ia32-use-our-own-div-asm-on-gnu-C-as-well.patch
|
||||
Patch0013: 0013-Call-ar-in-deterministic-mode.patch
|
||||
Patch0014: 0001-arm64-efi-remove-pointless-dummy-.reloc-section.patch
|
||||
|
||||
%define debug_package %{nil}
|
||||
|
||||
@ -140,6 +141,9 @@ rm -rf %{buildroot}
|
||||
%attr(0644,root,root) /boot/efi/EFI/%{efidir}/*/*.efi
|
||||
|
||||
%changelog
|
||||
* Thu Aug 24 2017 Peter Jones <pjones@redhat.com> - 3.0.5-11
|
||||
- Don't make .reloc sections on Aarch64 binaries.
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0.5-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user