xref: /linux/arch/s390/kernel/vdso/Makefile (revision 24f171c7e145f43b9f187578e89b0982ce87e54c)
1c0087d80SHeiko Carstens# SPDX-License-Identifier: GPL-2.0
2c0087d80SHeiko Carstens# List of files in the vdso
3c0087d80SHeiko Carstens
4c0087d80SHeiko Carstens# Include the generic Makefile to check the built vdso.
5c0087d80SHeiko Carstensinclude $(srctree)/lib/vdso/Makefile.include
6c0087d80SHeiko Carstensobj-vdso = vdso_user_wrapper.o note.o vgetrandom-chacha.o
7c0087d80SHeiko Carstensobj-cvdso = vdso_generic.o getcpu.o vgetrandom.o
8c0087d80SHeiko CarstensVDSO_CFLAGS_REMOVE := -pg $(CC_FLAGS_FTRACE) $(CC_FLAGS_EXPOLINE)
9c0087d80SHeiko CarstensCFLAGS_REMOVE_getcpu.o = $(VDSO_CFLAGS_REMOVE)
10c0087d80SHeiko CarstensCFLAGS_REMOVE_vgetrandom.o = $(VDSO_CFLAGS_REMOVE)
11c0087d80SHeiko CarstensCFLAGS_REMOVE_vdso_generic.o = $(VDSO_CFLAGS_REMOVE)
12c0087d80SHeiko Carstens
13c0087d80SHeiko Carstensifneq ($(c-getrandom-y),)
14c0087d80SHeiko Carstens	CFLAGS_vgetrandom.o += -include $(c-getrandom-y)
15c0087d80SHeiko Carstensendif
16c0087d80SHeiko Carstens
17c0087d80SHeiko Carstens# Build rules
18c0087d80SHeiko Carstens
19c0087d80SHeiko Carstenstargets := $(obj-vdso) $(obj-cvdso) vdso.so vdso.so.dbg
20c0087d80SHeiko Carstensobj-vdso := $(addprefix $(obj)/, $(obj-vdso))
21c0087d80SHeiko Carstensobj-cvdso := $(addprefix $(obj)/, $(obj-cvdso))
22c0087d80SHeiko Carstens
23*509c3492SHeiko CarstensKBUILD_AFLAGS_VDSO := $(KBUILD_AFLAGS) -DBUILD_VDSO
24c0087d80SHeiko Carstens
25*509c3492SHeiko CarstensKBUILD_CFLAGS_VDSO := $(KBUILD_CFLAGS) -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING
26c0087d80SHeiko CarstensKBUILD_CFLAGS_VDSO := $(filter-out -mpacked-stack,$(KBUILD_CFLAGS_VDSO))
27c0087d80SHeiko CarstensKBUILD_CFLAGS_VDSO := $(filter-out -mno-pic-data-is-text-relative,$(KBUILD_CFLAGS_VDSO))
28c0087d80SHeiko CarstensKBUILD_CFLAGS_VDSO := $(filter-out -munaligned-symbols,$(KBUILD_CFLAGS_VDSO))
29c0087d80SHeiko CarstensKBUILD_CFLAGS_VDSO := $(filter-out -fno-asynchronous-unwind-tables,$(KBUILD_CFLAGS_VDSO))
30*509c3492SHeiko CarstensKBUILD_CFLAGS_VDSO += -fPIC -fno-common -fno-builtin -fasynchronous-unwind-tables
31c0087d80SHeiko CarstensKBUILD_CFLAGS_VDSO += -fno-stack-protector
32c0087d80SHeiko Carstensldflags-y := -shared -soname=linux-vdso.so.1 \
33c0087d80SHeiko Carstens	     --hash-style=both --build-id=sha1 -T
34c0087d80SHeiko Carstens
35c0087d80SHeiko Carstens$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_VDSO)
36c0087d80SHeiko Carstens$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_VDSO)
37c0087d80SHeiko Carstens
38c0087d80SHeiko Carstensobj-y += vdso_wrapper.o
39c0087d80SHeiko Carstenstargets += vdso.lds
40c0087d80SHeiko CarstensCPPFLAGS_vdso.lds += -P -C -U$(ARCH)
41c0087d80SHeiko Carstens
42c0087d80SHeiko Carstens# Force dependency (incbin is bad)
43c0087d80SHeiko Carstens$(obj)/vdso_wrapper.o : $(obj)/vdso.so
44c0087d80SHeiko Carstens
45c0087d80SHeiko Carstensquiet_cmd_vdso_and_check = VDSO    $@
46c0087d80SHeiko Carstens      cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check)
47c0087d80SHeiko Carstens
48c0087d80SHeiko Carstens# link rule for the .so file, .lds has to be first
49c0087d80SHeiko Carstens$(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) $(obj-cvdso) FORCE
50c0087d80SHeiko Carstens	$(call if_changed,vdso_and_check)
51c0087d80SHeiko Carstens
52c0087d80SHeiko Carstens# strip rule for the .so file
53c0087d80SHeiko Carstens$(obj)/%.so: OBJCOPYFLAGS := -S
54c0087d80SHeiko Carstens$(obj)/%.so: $(obj)/%.so.dbg FORCE
55c0087d80SHeiko Carstens	$(call if_changed,objcopy)
56c0087d80SHeiko Carstens
57c0087d80SHeiko Carstens# assembly rules for the .S files
58c0087d80SHeiko Carstens$(obj-vdso): %.o: %.S FORCE
59c0087d80SHeiko Carstens	$(call if_changed_dep,vdsoas)
60c0087d80SHeiko Carstens
61c0087d80SHeiko Carstens$(obj-cvdso): %.o: %.c FORCE
62c0087d80SHeiko Carstens	$(call if_changed_dep,vdsocc)
63c0087d80SHeiko Carstens
64c0087d80SHeiko Carstens# actual build commands
65c0087d80SHeiko Carstensquiet_cmd_vdsoas = VDSOA $@
66c0087d80SHeiko Carstens      cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $<
67c0087d80SHeiko Carstensquiet_cmd_vdsocc = VDSOC $@
68c0087d80SHeiko Carstens      cmd_vdsocc = $(CC) $(c_flags) -c -o $@ $<
69c0087d80SHeiko Carstens
70c0087d80SHeiko Carstens# Generate VDSO offsets using helper script
71c0087d80SHeiko Carstensgen-vdsosym := $(src)/gen_vdso_offsets.sh
72c0087d80SHeiko Carstensquiet_cmd_vdsosym = VDSOSYM $@
73c0087d80SHeiko Carstens	cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
74c0087d80SHeiko Carstens
75c0087d80SHeiko Carstensinclude/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
76c0087d80SHeiko Carstens	$(call if_changed,vdsosym)
77