1*aa0fdccdSJoel Granados#!/usr/bin/env bash 284b4a51fSLuis Chamberlain 384b4a51fSLuis ChamberlainTARGET=$(basename $1) 484b4a51fSLuis ChamberlainDIR=lib/tests/module 584b4a51fSLuis ChamberlainTARGET="$DIR/$TARGET" 684b4a51fSLuis ChamberlainNUM_SYMS=$2 784b4a51fSLuis ChamberlainSCALE_FACTOR=$3 884b4a51fSLuis ChamberlainTEST_TYPE=$(echo $TARGET | sed -e 's|lib/tests/module/test_kallsyms_||g') 984b4a51fSLuis ChamberlainTEST_TYPE=$(echo $TEST_TYPE | sed -e 's|.c||g') 103e1d95b6SLuis ChamberlainFIRST_B_LOOKUP=1 113e1d95b6SLuis Chamberlain 123e1d95b6SLuis Chamberlainif [[ $NUM_SYMS -gt 2 ]]; then 133e1d95b6SLuis Chamberlain FIRST_B_LOOKUP=$((NUM_SYMS/2)) 143e1d95b6SLuis Chamberlainfi 1584b4a51fSLuis Chamberlain 1684b4a51fSLuis Chamberlaingen_template_module_header() 1784b4a51fSLuis Chamberlain{ 1884b4a51fSLuis Chamberlain cat <<____END_MODULE 1984b4a51fSLuis Chamberlain// SPDX-License-Identifier: GPL-2.0-or-later OR copyleft-next-0.3.1 2084b4a51fSLuis Chamberlain/* 2184b4a51fSLuis Chamberlain * Copyright (C) 2023 Luis Chamberlain <mcgrof@kernel.org> 2284b4a51fSLuis Chamberlain * 2384b4a51fSLuis Chamberlain * Automatically generated code for testing, do not edit manually. 2484b4a51fSLuis Chamberlain */ 2584b4a51fSLuis Chamberlain 2684b4a51fSLuis Chamberlain#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 2784b4a51fSLuis Chamberlain 2884b4a51fSLuis Chamberlain#include <linux/init.h> 2984b4a51fSLuis Chamberlain#include <linux/module.h> 3084b4a51fSLuis Chamberlain#include <linux/printk.h> 3184b4a51fSLuis Chamberlain 3284b4a51fSLuis Chamberlain____END_MODULE 3384b4a51fSLuis Chamberlain} 3484b4a51fSLuis Chamberlain 3584b4a51fSLuis Chamberlaingen_num_syms() 3684b4a51fSLuis Chamberlain{ 3784b4a51fSLuis Chamberlain PREFIX=$1 3884b4a51fSLuis Chamberlain NUM=$2 3984b4a51fSLuis Chamberlain for i in $(seq 1 $NUM); do 402466b312SLuis Chamberlain printf "int auto_test_%s_%010d = 0;\n" $PREFIX $i 4184b4a51fSLuis Chamberlain printf "EXPORT_SYMBOL_GPL(auto_test_%s_%010d);\n" $PREFIX $i 4284b4a51fSLuis Chamberlain done 4384b4a51fSLuis Chamberlain echo 4484b4a51fSLuis Chamberlain} 4584b4a51fSLuis Chamberlain 4684b4a51fSLuis Chamberlaingen_template_module_data_a() 4784b4a51fSLuis Chamberlain{ 4884b4a51fSLuis Chamberlain gen_num_syms a $1 4984b4a51fSLuis Chamberlain cat <<____END_MODULE 5084b4a51fSLuis Chamberlainstatic int auto_runtime_test(void) 5184b4a51fSLuis Chamberlain{ 5284b4a51fSLuis Chamberlain return 0; 5384b4a51fSLuis Chamberlain} 5484b4a51fSLuis Chamberlain 5584b4a51fSLuis Chamberlain____END_MODULE 5684b4a51fSLuis Chamberlain} 5784b4a51fSLuis Chamberlain 5884b4a51fSLuis Chamberlaingen_template_module_data_b() 5984b4a51fSLuis Chamberlain{ 603e1d95b6SLuis Chamberlain printf "\nextern int auto_test_a_%010d;\n\n" $FIRST_B_LOOKUP 6184b4a51fSLuis Chamberlain echo "static int auto_runtime_test(void)" 6284b4a51fSLuis Chamberlain echo "{" 633e1d95b6SLuis Chamberlain printf "\nreturn auto_test_a_%010d;\n" $FIRST_B_LOOKUP 6484b4a51fSLuis Chamberlain echo "}" 6584b4a51fSLuis Chamberlain} 6684b4a51fSLuis Chamberlain 6784b4a51fSLuis Chamberlaingen_template_module_data_c() 6884b4a51fSLuis Chamberlain{ 6984b4a51fSLuis Chamberlain gen_num_syms c $1 7084b4a51fSLuis Chamberlain cat <<____END_MODULE 7184b4a51fSLuis Chamberlainstatic int auto_runtime_test(void) 7284b4a51fSLuis Chamberlain{ 7384b4a51fSLuis Chamberlain return 0; 7484b4a51fSLuis Chamberlain} 7584b4a51fSLuis Chamberlain 7684b4a51fSLuis Chamberlain____END_MODULE 7784b4a51fSLuis Chamberlain} 7884b4a51fSLuis Chamberlain 7984b4a51fSLuis Chamberlaingen_template_module_data_d() 8084b4a51fSLuis Chamberlain{ 8184b4a51fSLuis Chamberlain gen_num_syms d $1 8284b4a51fSLuis Chamberlain cat <<____END_MODULE 8384b4a51fSLuis Chamberlainstatic int auto_runtime_test(void) 8484b4a51fSLuis Chamberlain{ 8584b4a51fSLuis Chamberlain return 0; 8684b4a51fSLuis Chamberlain} 8784b4a51fSLuis Chamberlain 8884b4a51fSLuis Chamberlain____END_MODULE 8984b4a51fSLuis Chamberlain} 9084b4a51fSLuis Chamberlain 9184b4a51fSLuis Chamberlaingen_template_module_exit() 9284b4a51fSLuis Chamberlain{ 9384b4a51fSLuis Chamberlain cat <<____END_MODULE 9484b4a51fSLuis Chamberlainstatic int __init auto_test_module_init(void) 9584b4a51fSLuis Chamberlain{ 9684b4a51fSLuis Chamberlain return auto_runtime_test(); 9784b4a51fSLuis Chamberlain} 9884b4a51fSLuis Chamberlainmodule_init(auto_test_module_init); 9984b4a51fSLuis Chamberlain 10084b4a51fSLuis Chamberlainstatic void __exit auto_test_module_exit(void) 10184b4a51fSLuis Chamberlain{ 10284b4a51fSLuis Chamberlain} 10384b4a51fSLuis Chamberlainmodule_exit(auto_test_module_exit); 10484b4a51fSLuis Chamberlain 10584b4a51fSLuis ChamberlainMODULE_AUTHOR("Luis Chamberlain <mcgrof@kernel.org>"); 10684b4a51fSLuis ChamberlainMODULE_LICENSE("GPL"); 107af084753SArnd BergmannMODULE_DESCRIPTION("Test module for kallsyms"); 10884b4a51fSLuis Chamberlain____END_MODULE 10984b4a51fSLuis Chamberlain} 11084b4a51fSLuis Chamberlain 11184b4a51fSLuis Chamberlaincase $TEST_TYPE in 11284b4a51fSLuis Chamberlain a) 11384b4a51fSLuis Chamberlain gen_template_module_header > $TARGET 11484b4a51fSLuis Chamberlain gen_template_module_data_a $NUM_SYMS >> $TARGET 11584b4a51fSLuis Chamberlain gen_template_module_exit >> $TARGET 11684b4a51fSLuis Chamberlain ;; 11784b4a51fSLuis Chamberlain b) 11884b4a51fSLuis Chamberlain gen_template_module_header > $TARGET 11984b4a51fSLuis Chamberlain gen_template_module_data_b >> $TARGET 12084b4a51fSLuis Chamberlain gen_template_module_exit >> $TARGET 12184b4a51fSLuis Chamberlain ;; 12284b4a51fSLuis Chamberlain c) 12384b4a51fSLuis Chamberlain gen_template_module_header > $TARGET 12484b4a51fSLuis Chamberlain gen_template_module_data_c $((NUM_SYMS * SCALE_FACTOR)) >> $TARGET 12584b4a51fSLuis Chamberlain gen_template_module_exit >> $TARGET 12684b4a51fSLuis Chamberlain ;; 12784b4a51fSLuis Chamberlain d) 12884b4a51fSLuis Chamberlain gen_template_module_header > $TARGET 12984b4a51fSLuis Chamberlain gen_template_module_data_d $((NUM_SYMS * SCALE_FACTOR * 2)) >> $TARGET 13084b4a51fSLuis Chamberlain gen_template_module_exit >> $TARGET 13184b4a51fSLuis Chamberlain ;; 13284b4a51fSLuis Chamberlain *) 13384b4a51fSLuis Chamberlain ;; 13484b4a51fSLuis Chamberlainesac 135