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 (1402B)


      1# SPDX-License-Identifier: GPL-2.0
      2# Copyright (C) 2020 ARM Limited
      3
      4# preserve CC value from top level Makefile
      5ifeq ($(CC),cc)
      6CC := $(CROSS_COMPILE)gcc
      7endif
      8
      9CFLAGS += -mbranch-protection=pac-ret
     10# check if the compiler supports ARMv8.3 and branch protection with PAuth
     11pauth_cc_support := $(shell if ($(CC) $(CFLAGS) -march=armv8.3-a -E -x c /dev/null -o /dev/null 2>&1) then echo "1"; fi)
     12
     13ifeq ($(pauth_cc_support),1)
     14TEST_GEN_PROGS := pac
     15TEST_GEN_FILES := pac_corruptor.o helper.o
     16TEST_GEN_PROGS_EXTENDED := exec_target
     17endif
     18
     19include ../../lib.mk
     20
     21ifeq ($(pauth_cc_support),1)
     22# pac* and aut* instructions are not available on architectures berfore
     23# ARMv8.3. Therefore target ARMv8.3 wherever they are used directly
     24$(OUTPUT)/pac_corruptor.o: pac_corruptor.S
     25	$(CC) -c $^ -o $@ $(CFLAGS) -march=armv8.3-a
     26
     27$(OUTPUT)/helper.o: helper.c
     28	$(CC) -c $^ -o $@ $(CFLAGS) -march=armv8.3-a
     29
     30# when -mbranch-protection is enabled and the target architecture is ARMv8.3 or
     31# greater, gcc emits pac* instructions which are not in HINT NOP space,
     32# preventing the tests from occurring at all. Compile for ARMv8.2 so tests can
     33# run on earlier targets and print a meaningful error messages
     34$(OUTPUT)/exec_target: exec_target.c $(OUTPUT)/helper.o
     35	$(CC) $^ -o $@ $(CFLAGS) -march=armv8.2-a
     36
     37$(OUTPUT)/pac: pac.c $(OUTPUT)/pac_corruptor.o $(OUTPUT)/helper.o
     38	$(CC) $^ -o $@ $(CFLAGS) -march=armv8.2-a
     39endif