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

probepoint.tc (1148B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0
      3# description: Kprobe events - probe points
      4# requires: kprobe_events
      5
      6TARGET_FUNC=tracefs_create_dir
      7
      8dec_addr() { # hexaddr
      9  printf "%d" "0x"`echo $1 | tail -c 8`
     10}
     11
     12set_offs() { # prev target next
     13  A1=`dec_addr $1`
     14  A2=`dec_addr $2`
     15  A3=`dec_addr $3`
     16  TARGET="0x$2" # an address
     17  PREV=`expr $A1 - $A2` # offset to previous symbol
     18  NEXT=+`expr $A3 - $A2` # offset to next symbol
     19  OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol
     20}
     21
     22# We have to decode symbol addresses to get correct offsets.
     23# If the offset is not an instruction boundary, it cause -EILSEQ.
     24set_offs `grep -A1 -B1 ${TARGET_FUNC} /proc/kallsyms | cut -f 1 -d " " | xargs`
     25
     26UINT_TEST=no
     27# printf "%x" -1 returns (unsigned long)-1.
     28if [ `printf "%x" -1 | wc -c` != 9 ]; then
     29  UINT_TEST=yes
     30fi
     31
     32echo "p:testprobe ${TARGET_FUNC}" > kprobe_events
     33echo "p:testprobe ${TARGET}" > kprobe_events
     34echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
     35! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events
     36if [ "${UINT_TEST}" = yes ]; then
     37! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events
     38fi