@@ -80,6 +80,15 @@ STUBCOPY_FLAGS-$(CONFIG_ARM64) += --prefix-alloc-sections=.init \
--prefix-symbols=__efistub_
STUBCOPY_RELOC-$(CONFIG_ARM64) := R_AARCH64_ABS
+#
+# ARM discards the .data section because it disallows r/w data in the
+# decompressor. So move our .data to .data.efistub and .bss to .bss.efistub,
+# which are preserved explicitly by the decompressor linker script.
+#
+STUBCOPY_FLAGS-$(CONFIG_ARM) += --rename-section .data=.data.efistub \
+ --rename-section .bss=.bss.efistub,load,alloc
+STUBCOPY_RELOC-$(CONFIG_ARM) := R_ARM_ABS
+
$(obj)/%.stub.o: $(obj)/%.o FORCE
$(call if_changed,stubcopy)
@@ -89,20 +98,17 @@ $(obj)/%.stub.o: $(obj)/%.o FORCE
# such relocations. If none are found, regenerate the output object, but
# this time, use objcopy and leave all sections in place.
#
-quiet_cmd_stubcopy = STUBCPY $@
- cmd_stubcopy = \
+
+cmd_stubrelocs_check-y = /bin/true
+
+cmd_stubrelocs_check-$(CONFIG_EFI_ARMSTUB) = \
$(STRIP) --strip-debug -o $@ $<; \
if $(OBJDUMP) -r $@ | grep $(STUBCOPY_RELOC-y); then \
echo "$@: absolute symbol references not allowed in the EFI stub" >&2; \
/bin/false; \
- fi; \
- $(OBJCOPY) $(STUBCOPY_FLAGS-y) $< $@
+ fi
-#
-# ARM discards the .data section because it disallows r/w data in the
-# decompressor. So move our .data to .data.efistub and .bss to .bss.efistub,
-# which are preserved explicitly by the decompressor linker script.
-#
-STUBCOPY_FLAGS-$(CONFIG_ARM) += --rename-section .data=.data.efistub \
- --rename-section .bss=.bss.efistub,load,alloc
-STUBCOPY_RELOC-$(CONFIG_ARM) := R_ARM_ABS
+quiet_cmd_stubcopy = STUBCPY $@
+ cmd_stubcopy = \
+ $(cmd_stubrelocs_check-y); \
+ $(OBJCOPY) $(STUBCOPY_FLAGS-y) $< $@
In preparation for using STUBCOPY for x86 as well, which doesn't require relocation checking, move the checking code into its own variable so it can be left out for x86. Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> --- drivers/firmware/efi/libstub/Makefile | 30 ++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-)