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

adjust_autoksyms.sh (2133B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0-only
      3
      4# Script to update include/generated/autoksyms.h and dependency files
      5#
      6# Copyright:	(C) 2016  Linaro Limited
      7# Created by:	Nicolas Pitre, January 2016
      8#
      9
     10# Update the include/generated/autoksyms.h file.
     11#
     12# For each symbol being added or removed, the corresponding dependency
     13# file's timestamp is updated to force a rebuild of the affected source
     14# file. All arguments passed to this script are assumed to be a command
     15# to be exec'd to trigger a rebuild of those files.
     16
     17set -e
     18
     19cur_ksyms_file="include/generated/autoksyms.h"
     20new_ksyms_file="include/generated/autoksyms.h.tmpnew"
     21
     22info() {
     23	if [ "$quiet" != "silent_" ]; then
     24		printf "  %-7s %s\n" "$1" "$2"
     25	fi
     26}
     27
     28info "CHK" "$cur_ksyms_file"
     29
     30# Use "make V=1" to debug this script.
     31case "$KBUILD_VERBOSE" in
     32*1*)
     33	set -x
     34	;;
     35esac
     36
     37# Generate a new symbol list file
     38$CONFIG_SHELL $srctree/scripts/gen_autoksyms.sh --modorder "$new_ksyms_file"
     39
     40# Extract changes between old and new list and touch corresponding
     41# dependency files.
     42changed=$(
     43count=0
     44sort "$cur_ksyms_file" "$new_ksyms_file" | uniq -u |
     45sed -n 's/^#define __KSYM_\(.*\) 1/\1/p' |
     46while read sympath; do
     47	if [ -z "$sympath" ]; then continue; fi
     48	depfile="include/ksym/${sympath}"
     49	mkdir -p "$(dirname "$depfile")"
     50	touch "$depfile"
     51	# Filesystems with coarse time precision may create timestamps
     52	# equal to the one from a file that was very recently built and that
     53	# needs to be rebuild. Let's guard against that by making sure our
     54	# dep files are always newer than the first file we created here.
     55	while [ ! "$depfile" -nt "$new_ksyms_file" ]; do
     56		touch "$depfile"
     57	done
     58	echo $((count += 1))
     59done | tail -1 )
     60changed=${changed:-0}
     61
     62if [ $changed -gt 0 ]; then
     63	# Replace the old list with tne new one
     64	old=$(grep -c "^#define __KSYM_" "$cur_ksyms_file" || true)
     65	new=$(grep -c "^#define __KSYM_" "$new_ksyms_file" || true)
     66	info "KSYMS" "symbols: before=$old, after=$new, changed=$changed"
     67	info "UPD" "$cur_ksyms_file"
     68	mv -f "$new_ksyms_file" "$cur_ksyms_file"
     69	# Then trigger a rebuild of affected source files
     70	exec $@
     71else
     72	rm -f "$new_ksyms_file"
     73fi