Skip to content

Commit 5903513

Browse files
committed
Merge tag 'x86_build_for_v6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 build update from Borislav Petkov: - Remove relocation information from vmlinux as it is not needed by other tooling and thus a slimmer binary is generated. This is important for distros who have to distribute vmlinux blobs with their kernel packages too and that extraneous unnecessary data bloats them for no good reason * tag 'x86_build_for_v6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/build: Avoid relocation information in final vmlinux
2 parents 8c69e7a + 9d9173e commit 5903513

2 files changed

Lines changed: 50 additions & 5 deletions

File tree

arch/x86/Makefile.postlink

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
# ===========================================================================
3+
# Post-link x86 pass
4+
# ===========================================================================
5+
#
6+
# 1. Separate relocations from vmlinux into vmlinux.relocs.
7+
# 2. Strip relocations from vmlinux.
8+
9+
PHONY := __archpost
10+
__archpost:
11+
12+
-include include/config/auto.conf
13+
include $(srctree)/scripts/Kbuild.include
14+
15+
CMD_RELOCS = arch/x86/tools/relocs
16+
OUT_RELOCS = arch/x86/boot/compressed
17+
quiet_cmd_relocs = RELOCS $(OUT_RELOCS)/$@.relocs
18+
cmd_relocs = \
19+
mkdir -p $(OUT_RELOCS); \
20+
$(CMD_RELOCS) $@ > $(OUT_RELOCS)/$@.relocs; \
21+
$(CMD_RELOCS) --abs-relocs $@
22+
23+
quiet_cmd_strip_relocs = RSTRIP $@
24+
cmd_strip_relocs = \
25+
$(OBJCOPY) --remove-section='.rel.*' --remove-section='.rel__*' \
26+
--remove-section='.rela.*' --remove-section='.rela__*' $@
27+
28+
# `@true` prevents complaint when there is nothing to be done
29+
30+
vmlinux: FORCE
31+
@true
32+
ifeq ($(CONFIG_X86_NEED_RELOCS),y)
33+
$(call cmd,relocs)
34+
$(call cmd,strip_relocs)
35+
endif
36+
37+
%.ko: FORCE
38+
@true
39+
40+
clean:
41+
@rm -f $(OUT_RELOCS)/vmlinux.relocs
42+
43+
PHONY += FORCE clean
44+
45+
FORCE:
46+
47+
.PHONY: $(PHONY)

arch/x86/boot/compressed/Makefile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ $(obj)/vmlinux.bin: vmlinux FORCE
121121

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

124-
CMD_RELOCS = arch/x86/tools/relocs
125-
quiet_cmd_relocs = RELOCS $@
126-
cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $<
127-
$(obj)/vmlinux.relocs: vmlinux FORCE
128-
$(call if_changed,relocs)
124+
# vmlinux.relocs is created by the vmlinux postlink step.
125+
$(obj)/vmlinux.relocs: vmlinux
126+
@true
129127

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

0 commit comments

Comments
 (0)