xref: /openbmc/linux/arch/s390/kernel/vdso32/Makefile (revision 779df224)
1*779df224SSven Schnelle# SPDX-License-Identifier: GPL-2.0
2*779df224SSven Schnelle# List of files in the vdso
3*779df224SSven Schnelle
4*779df224SSven SchnelleKCOV_INSTRUMENT := n
5*779df224SSven SchnelleARCH_REL_TYPE_ABS := R_390_COPY|R_390_GLOB_DAT|R_390_JMP_SLOT|R_390_RELATIVE
6*779df224SSven SchnelleARCH_REL_TYPE_ABS += R_390_GOT|R_390_PLT
7*779df224SSven Schnelle
8*779df224SSven Schnelleinclude $(srctree)/lib/vdso/Makefile
9*779df224SSven Schnelleobj-vdso32 = vdso_user_wrapper-32.o note-32.o
10*779df224SSven Schnelle
11*779df224SSven Schnelle# Build rules
12*779df224SSven Schnelle
13*779df224SSven Schnelletargets := $(obj-vdso32) vdso32.so vdso32.so.dbg
14*779df224SSven Schnelleobj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32))
15*779df224SSven Schnelle
16*779df224SSven SchnelleKBUILD_AFLAGS += -DBUILD_VDSO
17*779df224SSven SchnelleKBUILD_CFLAGS += -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING
18*779df224SSven Schnelle
19*779df224SSven SchnelleKBUILD_AFLAGS_32 := $(filter-out -m64,$(KBUILD_AFLAGS))
20*779df224SSven SchnelleKBUILD_AFLAGS_32 += -m31 -s
21*779df224SSven Schnelle
22*779df224SSven SchnelleKBUILD_CFLAGS_32 := $(filter-out -m64,$(KBUILD_CFLAGS))
23*779df224SSven SchnelleKBUILD_CFLAGS_32 += -m31 -fPIC -shared -fno-common -fno-builtin
24*779df224SSven Schnelle
25*779df224SSven SchnelleLDFLAGS_vdso32.so.dbg += -fPIC -shared -nostdlib -soname=linux-vdso32.so.1 \
26*779df224SSven Schnelle	--hash-style=both --build-id=sha1 -melf_s390 -T
27*779df224SSven Schnelle
28*779df224SSven Schnelle$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_32)
29*779df224SSven Schnelle$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
30*779df224SSven Schnelle
31*779df224SSven Schnelleobj-y += vdso32_wrapper.o
32*779df224SSven SchnelleCPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
33*779df224SSven Schnelle
34*779df224SSven Schnelle# Disable gcov profiling, ubsan and kasan for VDSO code
35*779df224SSven SchnelleGCOV_PROFILE := n
36*779df224SSven SchnelleUBSAN_SANITIZE := n
37*779df224SSven SchnelleKASAN_SANITIZE := n
38*779df224SSven Schnelle
39*779df224SSven Schnelle# Force dependency (incbin is bad)
40*779df224SSven Schnelle$(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
41*779df224SSven Schnelle
42*779df224SSven Schnelle$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) FORCE
43*779df224SSven Schnelle	$(call if_changed,ld)
44*779df224SSven Schnelle
45*779df224SSven Schnelle# strip rule for the .so file
46*779df224SSven Schnelle$(obj)/%.so: OBJCOPYFLAGS := -S
47*779df224SSven Schnelle$(obj)/%.so: $(obj)/%.so.dbg FORCE
48*779df224SSven Schnelle	$(call if_changed,objcopy)
49*779df224SSven Schnelle
50*779df224SSven Schnelle$(obj-vdso32): %-32.o: %.S FORCE
51*779df224SSven Schnelle	$(call if_changed_dep,vdso32as)
52*779df224SSven Schnelle
53*779df224SSven Schnelle# actual build commands
54*779df224SSven Schnellequiet_cmd_vdso32as = VDSO32A $@
55*779df224SSven Schnelle      cmd_vdso32as = $(CC) $(a_flags) -c -o $@ $<
56*779df224SSven Schnellequiet_cmd_vdso32cc = VDSO32C $@
57*779df224SSven Schnelle      cmd_vdso32cc = $(CC) $(c_flags) -c -o $@ $<
58*779df224SSven Schnelle
59*779df224SSven Schnelle# install commands for the unstripped file
60*779df224SSven Schnellequiet_cmd_vdso_install = INSTALL $@
61*779df224SSven Schnelle      cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@
62*779df224SSven Schnelle
63*779df224SSven Schnellevdso32.so: $(obj)/vdso32.so.dbg
64*779df224SSven Schnelle	@mkdir -p $(MODLIB)/vdso
65*779df224SSven Schnelle	$(call cmd,vdso_install)
66*779df224SSven Schnelle
67*779df224SSven Schnellevdso_install: vdso32.so
68*779df224SSven Schnelle
69*779df224SSven Schnelle# Generate VDSO offsets using helper script
70*779df224SSven Schnellegen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
71*779df224SSven Schnellequiet_cmd_vdsosym = VDSOSYM $@
72*779df224SSven Schnelle	cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
73*779df224SSven Schnelle
74*779df224SSven Schnelleinclude/generated/vdso32-offsets.h: $(obj)/vdso32.so.dbg FORCE
75*779df224SSven Schnelle	$(call if_changed,vdsosym)
76