mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
MIPS: Use Makefile.postlink to insert relocations into vmlinux
When relocatable support for MIPS was merged, there was no support for
an architecture to add a postlink step for vmlinux. This meant that only
invoking a target within the boot directory, such as uImage, caused the
relocations to be inserted into vmlinux. Building just the vmlinux
target would result in a relocatable kernel with no relocation
information present.
Commit fbe6e37dab
("kbuild: add arch specific post-link Makefile")
recified this situation, so MIPS can now define a postlink step to add
relocation information into vmlinux, and remove the additional steps
tacked onto boot targets.
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Tested-by: Steven J. Hill <steven.hill@cavium.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/14554/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
096a0de427
commit
44079d3509
2 changed files with 35 additions and 12 deletions
|
@ -330,10 +330,6 @@ rom.bin rom.sw: vmlinux
|
|||
$(bootvars-y) $@
|
||||
endif
|
||||
|
||||
CMD_RELOCS = arch/mips/boot/tools/relocs
|
||||
quiet_cmd_relocs = RELOCS $<
|
||||
cmd_relocs = $(CMD_RELOCS) $<
|
||||
|
||||
#
|
||||
# Some machines like the Indy need 32-bit ELF binaries for booting purposes.
|
||||
# Other need ECOFF, so we build a 32-bit ELF binary for them which we then
|
||||
|
@ -342,11 +338,6 @@ quiet_cmd_relocs = RELOCS $<
|
|||
quiet_cmd_32 = OBJCOPY $@
|
||||
cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
|
||||
vmlinux.32: vmlinux
|
||||
ifeq ($(CONFIG_RELOCATABLE)$(CONFIG_64BIT),yy)
|
||||
# Currently, objcopy fails to handle the relocations in the elf64
|
||||
# So the relocs tool must be run here to remove them first
|
||||
$(call cmd,relocs)
|
||||
endif
|
||||
$(call cmd,32)
|
||||
|
||||
#
|
||||
|
@ -362,9 +353,6 @@ all: $(all-y)
|
|||
|
||||
# boot
|
||||
$(boot-y): $(vmlinux-32) FORCE
|
||||
ifeq ($(CONFIG_RELOCATABLE)$(CONFIG_32BIT),yy)
|
||||
$(call cmd,relocs)
|
||||
endif
|
||||
$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) \
|
||||
$(bootvars-y) arch/mips/boot/$@
|
||||
|
||||
|
|
35
arch/mips/Makefile.postlink
Normal file
35
arch/mips/Makefile.postlink
Normal file
|
@ -0,0 +1,35 @@
|
|||
# ===========================================================================
|
||||
# Post-link MIPS pass
|
||||
# ===========================================================================
|
||||
#
|
||||
# 1. Insert relocations into vmlinux
|
||||
|
||||
PHONY := __archpost
|
||||
__archpost:
|
||||
|
||||
include include/config/auto.conf
|
||||
include scripts/Kbuild.include
|
||||
|
||||
CMD_RELOCS = arch/mips/boot/tools/relocs
|
||||
quiet_cmd_relocs = RELOCS $@
|
||||
cmd_relocs = $(CMD_RELOCS) $@
|
||||
|
||||
# `@true` prevents complaint when there is nothing to be done
|
||||
|
||||
vmlinux: FORCE
|
||||
@true
|
||||
ifeq ($(CONFIG_RELOCATABLE),y)
|
||||
$(call if_changed,relocs)
|
||||
endif
|
||||
|
||||
%.ko: FORCE
|
||||
@true
|
||||
|
||||
clean:
|
||||
@true
|
||||
|
||||
PHONY += FORCE clean
|
||||
|
||||
FORCE:
|
||||
|
||||
.PHONY: $(PHONY)
|
Loading…
Reference in a new issue