Don't make .reloc sections on Aarch64 binaries.
Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
parent
c4ded8b842
commit
253342666f
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
|
Summary: Development Libraries and headers for EFI
|
||||||
Name: gnu-efi
|
Name: gnu-efi
|
||||||
Version: 3.0.5
|
Version: 3.0.5
|
||||||
Release: 10%{?dist}%{?buildid}
|
Release: 11%{?dist}%{?buildid}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
License: BSD
|
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
|
Patch0011: 0011-Nerf-Werror-pragma-away.patch
|
||||||
Patch0012: 0012-Make-ia32-use-our-own-div-asm-on-gnu-C-as-well.patch
|
Patch0012: 0012-Make-ia32-use-our-own-div-asm-on-gnu-C-as-well.patch
|
||||||
Patch0013: 0013-Call-ar-in-deterministic-mode.patch
|
Patch0013: 0013-Call-ar-in-deterministic-mode.patch
|
||||||
|
Patch0014: 0001-arm64-efi-remove-pointless-dummy-.reloc-section.patch
|
||||||
|
|
||||||
%define debug_package %{nil}
|
%define debug_package %{nil}
|
||||||
|
|
||||||
@ -140,6 +141,9 @@ rm -rf %{buildroot}
|
|||||||
%attr(0644,root,root) /boot/efi/EFI/%{efidir}/*/*.efi
|
%attr(0644,root,root) /boot/efi/EFI/%{efidir}/*/*.efi
|
||||||
|
|
||||||
%changelog
|
%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
|
* 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
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user