Commit e6a03a66 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Masahiro Yamada
Browse files

x86: Get rid of Makefile.postlink



Instead of generating the vmlinux.relocs file (needed by the
decompressor build to construct the KASLR relocation tables) as a
vmlinux postlink step, which is dubious because it depends on data that
is stripped from vmlinux before the build completes, generate it from
vmlinux.unstripped, which has been introduced specifically for this
purpose.

This ensures that each artifact is rebuilt as needed, rather than as a
side effect of another build rule.

This effectively reverts commit

  9d9173e9 ("x86/build: Avoid relocation information in final vmlinux")

Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent ac4f0678
Loading
Loading
Loading
Loading

arch/x86/Makefile.postlink

deleted100644 → 0
+0 −38
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
# ===========================================================================
# Post-link x86 pass
# ===========================================================================
#
# 1. Separate relocations from vmlinux into vmlinux.relocs.
# 2. Strip relocations from vmlinux.

PHONY := __archpost
__archpost:

-include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include

CMD_RELOCS = arch/x86/tools/relocs
OUT_RELOCS = arch/x86/boot/compressed
quiet_cmd_relocs = RELOCS  $(OUT_RELOCS)/vmlinux.relocs
      cmd_relocs = \
	mkdir -p $(OUT_RELOCS); \
	$(CMD_RELOCS) $@ > $(OUT_RELOCS)/vmlinux.relocs; \
	$(CMD_RELOCS) --abs-relocs $@

# `@true` prevents complaint when there is nothing to be done

vmlinux vmlinux.unstripped: FORCE
	@true
ifeq ($(CONFIG_X86_NEED_RELOCS),y)
	$(call cmd,relocs)
endif

clean:
	@rm -f $(OUT_RELOCS)/vmlinux.relocs

PHONY += FORCE clean

FORCE:

.PHONY: $(PHONY)
+6 −3
Original line number Diff line number Diff line
@@ -117,9 +117,12 @@ $(obj)/vmlinux.bin: vmlinux FORCE

targets += $(patsubst $(obj)/%,%,$(vmlinux-objs-y)) vmlinux.bin.all vmlinux.relocs

# vmlinux.relocs is created by the vmlinux postlink step.
$(obj)/vmlinux.relocs: vmlinux
	@true
CMD_RELOCS = arch/x86/tools/relocs
quiet_cmd_relocs = RELOCS  $@
      cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $<

$(obj)/vmlinux.relocs: vmlinux.unstripped FORCE
	$(call if_changed,relocs)

vmlinux.bin.all-y := $(obj)/vmlinux.bin
vmlinux.bin.all-$(CONFIG_X86_NEED_RELOCS) += $(obj)/vmlinux.relocs