diff options
author | Hans-Peter Nilsson <[email protected]> | 2020-12-28 03:41:59 +0100 |
---|---|---|
committer | Arnaldo Carvalho de Melo <[email protected]> | 2022-12-21 17:13:31 -0300 |
commit | 9854e7ad35fecf3007d44e58484e05cf39a62bd6 (patch) | |
tree | eb3cba5cdf9a93408cec0bd7cd99dc13095907a0 | |
parent | c3c2e8ebe365ae028ec82ceab039b2035875b6d5 (diff) |
perf arm64: Simplify mksyscalltbl
This patch isn't intended to have any effect on the compiled code. It
just removes one level of indirection: calling the *host* compiler to
build and then run a program that just printf:s the numerical entries of
the syscall-table. In other words, the generated syscalls.c changes
from:
[46] = "ftruncate",
to:
[__NR3264_ftruncate] = "ftruncate",
The latter is as good as the former to the user of perf, and this can be
done directly by the shell-script. The syscalls defined as non-literal
values (like "#define __NR_ftruncate __NR3264_ftruncate") are trivially
resolved at compile-time without namespace-leaking and/or collision for
its sole user, perf/util/syscalltbl.c, that just #includes the generated
file. A future "-mabi=32" support would probably have to handle this
differently, but that is a pre-existing problem not affected by this
simplification.
Calling the *host* compiler only complicates things and accidentally can
get a completely wrong set of files and syscall numbers, see earlier
commits. Note that the script parameter hostcc is now unused.
At the time of this patch, powerpc (the origin, see comments), and also
e.g. x86 has moved on, from filtering "gcc -dM -E" output to reading
separate specific text-file, a table of syscall numbers. IMHO should
arm64 consider adopting this.
Signed-off-by: Hans-Peter Nilsson <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Reviewed-by: Leo Yan <[email protected]>
Tested-by: Leo Yan <[email protected]>
Acked-by: Arnd Bergmann <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: John Garry <[email protected]>
Cc: Kim Phillips <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Mathieu Poirier <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: [email protected]
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rwxr-xr-x | tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl index a7ca48d1e37b..22cdf911dd9a 100755 --- a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl +++ b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl @@ -23,34 +23,17 @@ 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);" + printf "%s\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 + printf "%s\n" "#define SYSCALLTBL_ARM64_MAX_ID __NR_$last_sc" } create_table() { + echo "#include \"$input\"" echo "static const char *syscalltbl_arm64[] = {" create_table_from_c echo "};" |