1e23d9c0bSHelge Deller# Include the generic Makefile to check the built vdso. 2*127b0e05SThomas Weißschuhinclude $(srctree)/lib/vdso/Makefile.include 3e23d9c0bSHelge Deller 4e23d9c0bSHelge DellerKCOV_INSTRUMENT := n 5e23d9c0bSHelge Deller 6e23d9c0bSHelge Deller# Disable gcov profiling, ubsan and kasan for VDSO code 7e23d9c0bSHelge DellerGCOV_PROFILE := n 8e23d9c0bSHelge DellerUBSAN_SANITIZE := n 9e23d9c0bSHelge DellerKASAN_SANITIZE := n 10e23d9c0bSHelge DellerKCSAN_SANITIZE := n 11df24e178SHelge Deller 12df24e178SHelge Dellerobj-vdso32 = note.o sigtramp.o restart_syscall.o 13e23d9c0bSHelge Dellerobj-cvdso32 = vdso32_generic.o 14df24e178SHelge Deller 15df24e178SHelge Deller# Build rules 16df24e178SHelge Deller 17e23d9c0bSHelge Dellertargets := $(obj-vdso32) $(obj-cvdso32) vdso32.so 18df24e178SHelge Dellerobj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32)) 19e23d9c0bSHelge Dellerobj-cvdso32 := $(addprefix $(obj)/, $(obj-cvdso32)) 20e23d9c0bSHelge Deller 21e23d9c0bSHelge DellerVDSO_CFLAGS_REMOVE := -pg $(CC_FLAGS_FTRACE) 22e23d9c0bSHelge DellerCFLAGS_REMOVE_vdso32_generic.o = $(VDSO_CFLAGS_REMOVE) 23df24e178SHelge Deller 24df24e178SHelge Dellerccflags-y := -shared -fno-common -fbuiltin -mno-fast-indirect-calls -O2 -mno-long-calls 25df24e178SHelge Deller# -march=1.1 -mschedule=7100LC 26df24e178SHelge Dellerccflags-y += -nostdlib -Wl,-soname=linux-vdso32.so.1 \ 27df24e178SHelge Deller $(call ld-option, -Wl$(comma)--hash-style=sysv) 28df24e178SHelge Dellerasflags-y := -D__VDSO32__ -s 29df24e178SHelge Deller 30df24e178SHelge DellerKBUILD_AFLAGS += -DBUILD_VDSO 31df24e178SHelge DellerKBUILD_CFLAGS += -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING 32df24e178SHelge Deller 33df24e178SHelge DellerVDSO_LIBGCC := $(shell $(CROSS32CC) -print-libgcc-file-name) 34df24e178SHelge Deller 35df24e178SHelge Dellerobj-y += vdso32_wrapper.o 3636b2f3aeSMasahiro Yamadatargets += vdso32.lds 37df24e178SHelge DellerCPPFLAGS_vdso32.lds += -P -C # -U$(ARCH) 38df24e178SHelge Deller 39df24e178SHelge Deller$(obj)/vdso32_wrapper.o : $(obj)/vdso32.so FORCE 40df24e178SHelge Deller 41df24e178SHelge Deller# Force dependency (incbin is bad) 42df24e178SHelge Deller# link rule for the .so file, .lds has to be first 43e23d9c0bSHelge Deller$(obj)/vdso32.so: $(obj)/vdso32.lds $(obj-vdso32) $(obj-cvdso32) $(VDSO_LIBGCC) FORCE 44df24e178SHelge Deller $(call if_changed,vdso32ld) 45df24e178SHelge Deller 46df24e178SHelge Deller# assembly rules for the .S files 47df24e178SHelge Deller$(obj-vdso32): %.o: %.S FORCE 48df24e178SHelge Deller $(call if_changed_dep,vdso32as) 49e23d9c0bSHelge Deller$(obj-cvdso32): %.o: %.c FORCE 50e23d9c0bSHelge Deller $(call if_changed_dep,vdso32cc) 51df24e178SHelge Deller 52df24e178SHelge Deller# actual build commands 53df24e178SHelge Dellerquiet_cmd_vdso32ld = VDSO32L $@ 549086e601SHelge Deller cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $(filter-out FORCE, $^) -o $@ 55df24e178SHelge Dellerquiet_cmd_vdso32as = VDSO32A $@ 56df24e178SHelge Deller cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $< 57e23d9c0bSHelge Dellerquiet_cmd_vdso32cc = VDSO32C $@ 58e23d9c0bSHelge Deller cmd_vdso32cc = $(CROSS32CC) $(c_flags) -c -o $@ $< 59df24e178SHelge Deller 60df24e178SHelge Deller# Generate VDSO offsets using helper script 61b1992c37SMasahiro Yamadagen-vdsosym := $(src)/gen_vdso_offsets.sh 62df24e178SHelge Dellerquiet_cmd_vdsosym = VDSOSYM $@ 63df24e178SHelge Deller cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ 64df24e178SHelge Deller 65df24e178SHelge Dellerinclude/generated/vdso32-offsets.h: $(obj)/vdso32.so FORCE 66df24e178SHelge Deller $(call if_changed,vdsosym) 67