63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# SPDX-License-Identifier: GPL-2.0
 | 
						|
#
 | 
						|
# Generate system call table for perf. Derived from
 | 
						|
# powerpc script.
 | 
						|
#
 | 
						|
# Copyright IBM Corp. 2017
 | 
						|
# Author(s):  Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
 | 
						|
# Changed by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
 | 
						|
# Changed by: Kim Phillips <kim.phillips@arm.com>
 | 
						|
 | 
						|
gcc=$1
 | 
						|
hostcc=$2
 | 
						|
incpath=$3
 | 
						|
input=$4
 | 
						|
 | 
						|
if ! test -r $input; then
 | 
						|
	echo "Could not read input file" >&2
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
create_table_from_c()
 | 
						|
{
 | 
						|
	local sc nr last_sc
 | 
						|
 | 
						|
	create_table_exe=`mktemp ${TMPDIR:-/tmp}/create-table-XXXXXX`
 | 
						|
 | 
						|
	{
 | 
						|
 | 
						|
	cat <<-_EoHEADER
 | 
						|
		#include <stdio.h>
 | 
						|
		#include "$input"
 | 
						|
		int main(int argc, char *argv[])
 | 
						|
		{
 | 
						|
	_EoHEADER
 | 
						|
 | 
						|
	while read sc nr; do
 | 
						|
		printf "%s\n" "	printf(\"\\t[%d] = \\\"$sc\\\",\\n\", __NR_$sc);"
 | 
						|
		last_sc=$sc
 | 
						|
	done
 | 
						|
 | 
						|
	printf "%s\n" "	printf(\"#define SYSCALLTBL_ARM64_MAX_ID %d\\n\", __NR_$last_sc);"
 | 
						|
	printf "}\n"
 | 
						|
 | 
						|
	} | $hostcc -I $incpath/include/uapi -o $create_table_exe -x c -
 | 
						|
 | 
						|
	$create_table_exe
 | 
						|
 | 
						|
	rm -f $create_table_exe
 | 
						|
}
 | 
						|
 | 
						|
create_table()
 | 
						|
{
 | 
						|
	echo "static const char *syscalltbl_arm64[] = {"
 | 
						|
	create_table_from_c
 | 
						|
	echo "};"
 | 
						|
}
 | 
						|
 | 
						|
$gcc -E -dM -x c -I $incpath/include/uapi $input \
 | 
						|
	|sed -ne 's/^#define __NR_//p' \
 | 
						|
	|sort -t' ' -k2 -nu	       \
 | 
						|
	|create_table
 |