1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 24bff8cb5SSven Schnelle# List of files in the vdso 3b020632eSMartin Schwidefsky 4907fa061SHeiko CarstensKCOV_INSTRUMENT := n 5907fa061SHeiko Carstens 6aff69273SFangrui Song# Include the generic Makefile to check the built vdso. 74bff8cb5SSven Schnelleinclude $(srctree)/lib/vdso/Makefile 887d59863SHeiko Carstensobj-vdso64 = vdso_user_wrapper.o note.o 980f06306SHeiko Carstensobj-cvdso64 = vdso64_generic.o getcpu.o 1000b55eafSSven SchnelleVDSO_CFLAGS_REMOVE := -pg $(CC_FLAGS_FTRACE) $(CC_FLAGS_EXPOLINE) $(CC_FLAGS_CHECK_STACK) 1100b55eafSSven SchnelleCFLAGS_REMOVE_getcpu.o = $(VDSO_CFLAGS_REMOVE) 1200b55eafSSven SchnelleCFLAGS_REMOVE_vdso64_generic.o = $(VDSO_CFLAGS_REMOVE) 13b020632eSMartin Schwidefsky 14b020632eSMartin Schwidefsky# Build rules 15b020632eSMartin Schwidefsky 164bff8cb5SSven Schnelletargets := $(obj-vdso64) $(obj-cvdso64) vdso64.so vdso64.so.dbg 17b020632eSMartin Schwidefskyobj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) 184bff8cb5SSven Schnelleobj-cvdso64 := $(addprefix $(obj)/, $(obj-cvdso64)) 19b020632eSMartin Schwidefsky 20bc3703f2SHendrik BruecknerKBUILD_AFLAGS += -DBUILD_VDSO 214bf3ec38SSven SchnelleKBUILD_CFLAGS += -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING 22bc3703f2SHendrik Brueckner 23b020632eSMartin SchwidefskyKBUILD_AFLAGS_64 := $(filter-out -m64,$(KBUILD_AFLAGS)) 24f8210229SNathan ChancellorKBUILD_AFLAGS_64 += -m64 25b020632eSMartin Schwidefsky 26b020632eSMartin SchwidefskyKBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) 27*2028823fSHeiko CarstensKBUILD_CFLAGS_64 := $(filter-out -mpacked-stack,$(KBUILD_CFLAGS_64)) 28d15e4314SSumanth KorikkarKBUILD_CFLAGS_64 := $(filter-out -mno-pic-data-is-text-relative,$(KBUILD_CFLAGS_64)) 296bd72dd0SSumanth KorikkarKBUILD_CFLAGS_64 := $(filter-out -munaligned-symbols,$(KBUILD_CFLAGS_64)) 30a4228691SJens RemusKBUILD_CFLAGS_64 := $(filter-out -fno-asynchronous-unwind-tables,$(KBUILD_CFLAGS_64)) 31a4228691SJens RemusKBUILD_CFLAGS_64 += -m64 -fPIC -fno-common -fno-builtin -fasynchronous-unwind-tables 32d19c74e2SNathan Chancellorldflags-y := -shared -soname=linux-vdso64.so.1 \ 33a9684337SBill Wendling --hash-style=both --build-id=sha1 -T 34b020632eSMartin Schwidefsky 35b020632eSMartin Schwidefsky$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) 36b020632eSMartin Schwidefsky$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) 37b020632eSMartin Schwidefsky 38b020632eSMartin Schwidefskyobj-y += vdso64_wrapper.o 39887af6d7SMasahiro Yamadatargets += vdso64.lds 40b020632eSMartin SchwidefskyCPPFLAGS_vdso64.lds += -P -C -U$(ARCH) 41b020632eSMartin Schwidefsky 4234849845SVasily Gorbik# Disable gcov profiling, ubsan and kasan for VDSO code 43add7490cSPeter OberparleiterGCOV_PROFILE := n 44c42d8c7dSChristian BorntraegerUBSAN_SANITIZE := n 4534849845SVasily GorbikKASAN_SANITIZE := n 46e37b3dd0SIlya LeoshkevichKCSAN_SANITIZE := n 47add7490cSPeter Oberparleiter 48b020632eSMartin Schwidefsky# Force dependency (incbin is bad) 49b020632eSMartin Schwidefsky$(obj)/vdso64_wrapper.o : $(obj)/vdso64.so 50b020632eSMartin Schwidefsky 510dd0bbc2SSven Schnellequiet_cmd_vdso_and_check = VDSO $@ 520dd0bbc2SSven Schnelle cmd_vdso_and_check = $(cmd_ld); $(cmd_vdso_check) 530dd0bbc2SSven Schnelle 54b020632eSMartin Schwidefsky# link rule for the .so file, .lds has to be first 554bff8cb5SSven Schnelle$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj-cvdso64) FORCE 560dd0bbc2SSven Schnelle $(call if_changed,vdso_and_check) 57b020632eSMartin Schwidefsky 58b020632eSMartin Schwidefsky# strip rule for the .so file 59b020632eSMartin Schwidefsky$(obj)/%.so: OBJCOPYFLAGS := -S 60b020632eSMartin Schwidefsky$(obj)/%.so: $(obj)/%.so.dbg FORCE 61b020632eSMartin Schwidefsky $(call if_changed,objcopy) 62b020632eSMartin Schwidefsky 63b020632eSMartin Schwidefsky# assembly rules for the .S files 64b44b136aSVasily Gorbik$(obj-vdso64): %.o: %.S FORCE 65b020632eSMartin Schwidefsky $(call if_changed_dep,vdso64as) 66b020632eSMartin Schwidefsky 674bff8cb5SSven Schnelle$(obj-cvdso64): %.o: %.c FORCE 684bff8cb5SSven Schnelle $(call if_changed_dep,vdso64cc) 694bff8cb5SSven Schnelle 70b020632eSMartin Schwidefsky# actual build commands 71b020632eSMartin Schwidefskyquiet_cmd_vdso64as = VDSO64A $@ 72b020632eSMartin Schwidefsky cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $< 734bff8cb5SSven Schnellequiet_cmd_vdso64cc = VDSO64C $@ 744bff8cb5SSven Schnelle cmd_vdso64cc = $(CC) $(c_flags) -c -o $@ $< 75b020632eSMartin Schwidefsky 76779df224SSven Schnelle# Generate VDSO offsets using helper script 77779df224SSven Schnellegen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh 78779df224SSven Schnellequiet_cmd_vdsosym = VDSOSYM $@ 79779df224SSven Schnelle cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ 80779df224SSven Schnelle 81779df224SSven Schnelleinclude/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE 82779df224SSven Schnelle $(call if_changed,vdsosym) 83