On Mon, Feb 10, 2025, at 17:51, Ian Rogers wrote: > +# Each line of the syscall table should have the following format: > +# > +# NR ABI NAME [NATIVE] [COMPAT] > +# > +# NR syscall number > +# ABI ABI name > +# NAME syscall name > +# NATIVE native entry point (optional) > +# COMPAT compat entry point (optional)
On x86, there is now a sixth optional field. > +#if defined(ALL_SYSCALLTBL) || defined(__arm__) || defined(__aarch64__) > +EOF > +build_tables "$tools_dir/perf/arch/arm/entry/syscalls/syscall.tbl" > "$outfile" common,32,oabi EM_ARM > +build_tables The oabi syscalls probably shouldn't be part of the default set here. Technically these are two separate ABIs, though EABI is a subset of OABI for the most most part. Some of the calling conventions are also different. > "$tools_dir/perf/arch/arm64/entry/syscalls/syscall_64.tbl" "$outfile" > common,64,renameat,rlimit,memfd_secret EM_AARCH64 > +cat >> "$outfile" <<EOF > +#endif // defined(ALL_SYSCALLTBL) || defined(__arm__) || > defined(__aarch64__) Hardcoding the set of ABIs in the middle of the script seems too fragile to me, I'm worried that these get out of sync quickly. > +#if defined(ALL_SYSCALLTBL) || defined(__mips__) > +EOF > +build_tables > "$tools_dir/perf/arch/mips/entry/syscalls/syscall_n64.tbl" "$outfile" > common,64,n64 EM_MIPS > +cat >> "$outfile" <<EOF > +#endif // defined(ALL_SYSCALLTBL) || defined(__mips__) What about n32/o32? The syscall tables are completely different here. > +#if defined(ALL_SYSCALLTBL) || defined(__powerpc__) || > defined(__powerpc64__) > +EOF > +build_tables "$tools_dir/perf/arch/powerpc/entry/syscalls/syscall.tbl" > "$outfile" common,32,nospu EM_PPC > +build_tables "$tools_dir/perf/arch/powerpc/entry/syscalls/syscall.tbl" > "$outfile" common,64,nospu EM_PPC64 > +cat >> "$outfile" <<EOF > +#endif // defined(ALL_SYSCALLTBL) || defined(__powerpc__) || > defined(__powerpc64__) This skips the SPU table, but I think that's fine. > +EOF > +build_tables "$tools_dir/perf/arch/s390/entry/syscalls/syscall.tbl" > "$outfile" common,64,renameat,rlimit,memfd_secret EM_S390 > +cat >> "$outfile" <<EOF > +#endif // defined(ALL_SYSCALLTBL) || defined(__s390x__) This skips the 32-bit table, though I think that one is already planned to be discontinued in the future. > +#if defined(ALL_SYSCALLTBL) || defined(__i386__) || defined(__x86_64__) > +EOF > +build_tables "$tools_dir/perf/arch/x86/entry/syscalls/syscall_32.tbl" > "$outfile" common,32,i386 EM_386 > +build_tables "$tools_dir/perf/arch/x86/entry/syscalls/syscall_64.tbl" > "$outfile" common,64 EM_X86_64 > +cat >> "$outfile" <<EOF > +#endif // defined(ALL_SYSCALLTBL) || defined(__i386__) || > defined(__x86_64__) This misses the x32 table. Arnd