1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 220e2fc42SVincenzo Frascino 3*aff69273SFangrui Song# Include the generic Makefile to check the built vdso. 420e2fc42SVincenzo Frascinoinclude $(srctree)/lib/vdso/Makefile 520e2fc42SVincenzo Frascino 65f2fb52fSMasahiro Yamadahostprogs := vdsomunge 78512287aSNathan Lynch 820e2fc42SVincenzo Frascinoobj-vdso := vgettimeofday.o datapage.o note.o 98512287aSNathan Lynch 108512287aSNathan Lynch# Build rules 118512287aSNathan Lynchtargets := $(obj-vdso) vdso.so vdso.so.dbg vdso.so.raw vdso.lds 128512287aSNathan Lynchobj-vdso := $(addprefix $(obj)/, $(obj-vdso)) 138512287aSNathan Lynch 14d33ce23bSNathan Lynchccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector 15715f23b6SThomas Gleixnerccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32 16d33ce23bSNathan Lynch 17c5d0e49eSJason A. Donenfeldldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 18c5d0e49eSJason A. Donenfeldldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ 199bc19d47SMasahiro Yamada -z max-page-size=4096 -shared $(ldflags-y) \ 20a9684337SBill Wendling --hash-style=sysv --build-id=sha1 \ 21fe00e50bSMasahiro Yamada -T 228512287aSNathan Lynch 23f80f6531SNathan Lynchobj-$(CONFIG_VDSO) += vdso.o 248512287aSNathan LynchCPPFLAGS_vdso.lds += -P -C -U$(ARCH) 258512287aSNathan Lynch 268512287aSNathan LynchCFLAGS_REMOVE_vdso.o = -pg 278512287aSNathan Lynch 288512287aSNathan Lynch# Force -O2 to avoid libgcc dependencies 29613f4b3eSKees CookCFLAGS_REMOVE_vgettimeofday.o = -pg -Os $(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS) 3020e2fc42SVincenzo Frascinoifeq ($(c-gettimeofday-y),) 318512287aSNathan LynchCFLAGS_vgettimeofday.o = -O2 3220e2fc42SVincenzo Frascinoelse 3320e2fc42SVincenzo FrascinoCFLAGS_vgettimeofday.o = -O2 -include $(c-gettimeofday-y) 3420e2fc42SVincenzo Frascinoendif 358512287aSNathan Lynch 368512287aSNathan Lynch# Disable gcov profiling for VDSO code 378512287aSNathan LynchGCOV_PROFILE := n 38d539fee9SSeung-Woo KimUBSAN_SANITIZE := n 398512287aSNathan Lynch 4075851720SDmitry Vyukov# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in. 4175851720SDmitry VyukovKCOV_INSTRUMENT := n 4275851720SDmitry Vyukov 43d5d44e7eSLinus WalleijKASAN_SANITIZE := n 44d5d44e7eSLinus Walleij 458512287aSNathan Lynch# Force dependency 468512287aSNathan Lynch$(obj)/vdso.o : $(obj)/vdso.so 478512287aSNathan Lynch 488512287aSNathan Lynch# Link rule for the .so file 49fe00e50bSMasahiro Yamada$(obj)/vdso.so.raw: $(obj)/vdso.lds $(obj-vdso) FORCE 5020e2fc42SVincenzo Frascino $(call if_changed,vdsold_and_vdso_check) 518512287aSNathan Lynch 528512287aSNathan Lynch$(obj)/vdso.so.dbg: $(obj)/vdso.so.raw $(obj)/vdsomunge FORCE 538512287aSNathan Lynch $(call if_changed,vdsomunge) 548512287aSNathan Lynch 558512287aSNathan Lynch# Strip rule for the .so file 568512287aSNathan Lynch$(obj)/%.so: OBJCOPYFLAGS := -S 578512287aSNathan Lynch$(obj)/%.so: $(obj)/%.so.dbg FORCE 588512287aSNathan Lynch $(call if_changed,objcopy) 598512287aSNathan Lynch 6020e2fc42SVincenzo Frascino# Actual build commands 6120e2fc42SVincenzo Frascinoquiet_cmd_vdsold_and_vdso_check = LD $@ 6220e2fc42SVincenzo Frascino cmd_vdsold_and_vdso_check = $(cmd_ld); $(cmd_vdso_check) 6320e2fc42SVincenzo Frascino 648512287aSNathan Lynchquiet_cmd_vdsomunge = MUNGE $@ 658512287aSNathan Lynch cmd_vdsomunge = $(objtree)/$(obj)/vdsomunge $< $@ 66