cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Makefile (2663B)


      1# SPDX-License-Identifier: GPL-2.0
      2
      3# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
      4# the inclusion of generic Makefile.
      5ARCH_REL_TYPE_ABS := R_ARM_JUMP_SLOT|R_ARM_GLOB_DAT|R_ARM_ABS32
      6include $(srctree)/lib/vdso/Makefile
      7
      8hostprogs := vdsomunge
      9
     10obj-vdso := vgettimeofday.o datapage.o note.o
     11
     12# Build rules
     13targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.so.raw vdso.lds
     14obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
     15
     16ccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector
     17ccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32
     18
     19ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8
     20ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
     21	    -z max-page-size=4096 -shared $(ldflags-y) \
     22	    --hash-style=sysv --build-id=sha1 \
     23	    -T
     24
     25obj-$(CONFIG_VDSO) += vdso.o
     26CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
     27
     28CFLAGS_REMOVE_vdso.o = -pg
     29
     30# Force -O2 to avoid libgcc dependencies
     31CFLAGS_REMOVE_vgettimeofday.o = -pg -Os $(RANDSTRUCT_CFLAGS) $(GCC_PLUGINS_CFLAGS)
     32ifeq ($(c-gettimeofday-y),)
     33CFLAGS_vgettimeofday.o = -O2
     34else
     35CFLAGS_vgettimeofday.o = -O2 -include $(c-gettimeofday-y)
     36endif
     37
     38# Disable gcov profiling for VDSO code
     39GCOV_PROFILE := n
     40
     41# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
     42KCOV_INSTRUMENT := n
     43
     44KASAN_SANITIZE := n
     45
     46# Force dependency
     47$(obj)/vdso.o : $(obj)/vdso.so
     48
     49# Link rule for the .so file
     50$(obj)/vdso.so.raw: $(obj)/vdso.lds $(obj-vdso) FORCE
     51	$(call if_changed,vdsold_and_vdso_check)
     52
     53$(obj)/vdso.so.dbg: $(obj)/vdso.so.raw $(obj)/vdsomunge FORCE
     54	$(call if_changed,vdsomunge)
     55
     56# Strip rule for the .so file
     57$(obj)/%.so: OBJCOPYFLAGS := -S
     58$(obj)/%.so: $(obj)/%.so.dbg FORCE
     59	$(call if_changed,objcopy)
     60
     61# Actual build commands
     62quiet_cmd_vdsold_and_vdso_check = LD      $@
     63      cmd_vdsold_and_vdso_check = $(cmd_ld); $(cmd_vdso_check)
     64
     65quiet_cmd_vdsomunge = MUNGE   $@
     66      cmd_vdsomunge = $(objtree)/$(obj)/vdsomunge $< $@
     67
     68#
     69# Install the unstripped copy of vdso.so.dbg.  If our toolchain
     70# supports build-id, install .build-id links as well.
     71#
     72# Cribbed from arch/x86/vdso/Makefile.
     73#
     74quiet_cmd_vdso_install = INSTALL $<
     75define cmd_vdso_install
     76	cp $< "$(MODLIB)/vdso/vdso.so"; \
     77	if readelf -n $< | grep -q 'Build ID'; then \
     78	  buildid=`readelf -n $< |grep 'Build ID' |sed -e 's/^.*Build ID: \(.*\)$$/\1/'`; \
     79	  first=`echo $$buildid | cut -b-2`; \
     80	  last=`echo $$buildid | cut -b3-`; \
     81	  mkdir -p "$(MODLIB)/vdso/.build-id/$$first"; \
     82	  ln -sf "../../vdso.so" "$(MODLIB)/vdso/.build-id/$$first/$$last.debug"; \
     83	fi
     84endef
     85
     86$(MODLIB)/vdso: FORCE
     87	@mkdir -p $(MODLIB)/vdso
     88
     89PHONY += vdso_install
     90vdso_install: $(obj)/vdso.so.dbg $(MODLIB)/vdso
     91	$(call cmd,vdso_install)