mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 22:02:28 +00:00
363e9f05cb
SH-2A is unable to combine the kernel and libgcc objects due to fundamental disagreements over FDPIC settings. As the kernel already contains all of the libgcc bits broken out, there's not much need to bother with the linking anymore, as everything can already be derived from the lib dir. This simply plugs in the necessary bits to ensure that everything is built uniformly, enabling us to wean the compressed build off of explicit libgcc linking. Reported-by: Phil Edworthy <phil.edworthy@renesas.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
82 lines
2.2 KiB
Makefile
82 lines
2.2 KiB
Makefile
#
|
|
# linux/arch/sh/boot/compressed/Makefile
|
|
#
|
|
# create a compressed vmlinux image from the original vmlinux
|
|
#
|
|
|
|
targets := vmlinux vmlinux.bin vmlinux.bin.gz \
|
|
vmlinux.bin.bz2 vmlinux.bin.lzma \
|
|
vmlinux.bin.xz vmlinux.bin.lzo \
|
|
head_$(BITS).o misc.o piggy.o
|
|
|
|
OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/cache.o
|
|
|
|
GCOV_PROFILE := n
|
|
|
|
#
|
|
# IMAGE_OFFSET is the load offset of the compression loader
|
|
#
|
|
ifeq ($(CONFIG_32BIT),y)
|
|
IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \
|
|
$$[$(CONFIG_MEMORY_START) + \
|
|
$(CONFIG_BOOT_LINK_OFFSET)]')
|
|
else
|
|
IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \
|
|
$$[$(CONFIG_PAGE_OFFSET) + \
|
|
$(KERNEL_MEMORY) + \
|
|
$(CONFIG_BOOT_LINK_OFFSET)]')
|
|
endif
|
|
|
|
ifeq ($(CONFIG_MCOUNT),y)
|
|
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
|
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
|
endif
|
|
|
|
LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(IMAGE_OFFSET) -e startup \
|
|
-T $(obj)/../../kernel/vmlinux.lds
|
|
|
|
#
|
|
# Pull in the necessary libgcc bits from the in-kernel implementation.
|
|
#
|
|
lib1funcs-$(CONFIG_SUPERH32) := ashiftrt.S ashldi3.c ashrsi3.S ashlsi3.S \
|
|
lshrsi3.S
|
|
lib1funcs-obj := \
|
|
$(addsuffix .o, $(basename $(addprefix $(obj)/, $(lib1funcs-y))))
|
|
|
|
lib1funcs-dir := $(srctree)/arch/$(SRCARCH)/lib
|
|
ifeq ($(BITS),64)
|
|
lib1funcs-dir := $(addsuffix $(BITS), $(lib1funcs-dir))
|
|
endif
|
|
|
|
KBUILD_CFLAGS += -I$(lib1funcs-dir)
|
|
|
|
$(addprefix $(obj)/,$(lib1funcs-y)): $(obj)/%: $(lib1funcs-dir)/% FORCE
|
|
$(call cmd,shipped)
|
|
|
|
$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(lib1funcs-obj) FORCE
|
|
$(call if_changed,ld)
|
|
@:
|
|
|
|
$(obj)/vmlinux.bin: vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
vmlinux.bin.all-y := $(obj)/vmlinux.bin
|
|
|
|
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
|
|
$(call if_changed,gzip)
|
|
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
|
|
$(call if_changed,bzip2)
|
|
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
|
|
$(call if_changed,lzma)
|
|
$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
|
|
$(call if_changed,xzkern)
|
|
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
|
|
$(call if_changed,lzo)
|
|
|
|
OBJCOPYFLAGS += -R .empty_zero_page
|
|
|
|
LDFLAGS_piggy.o := -r --format binary --oformat $(ld-bfd) -T
|
|
|
|
$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) FORCE
|
|
$(call if_changed,ld)
|