]> sourceware.org Git - systemtap.git/commitdiff
Allow multiple architecture syscall_num.stp files to be used by bpf backend
authorWilliam Cohen <wcohen@redhat.com>
Mon, 11 Oct 2021 20:17:41 +0000 (16:17 -0400)
committerWilliam Cohen <wcohen@redhat.com>
Mon, 11 Oct 2021 21:01:55 +0000 (17:01 -0400)
Systemtap's BPF still has the concept of target architecture and isn't
write once run anywhere for BPF code.  Thus, to make the syscall_any
tapset work the tapset needs to have all the different architecture
initialization code available and select the appropriate one based on
the architecture.  Thus, each syscalls_num.stp file has preprocessing
guards to make them empty unless the architecture matches.

scripts/dump-syscalls.sh

index 543b789ccb6fd8c50c07c22cf8cd6e5ca937d436..07ca35494793bc7b7063bb32c50bcd6c4e09cfc1 100755 (executable)
@@ -54,6 +54,7 @@ function __generate_tapset() {
     cat > $__TAPSET_FILE <<EOF01
 # This is arch specific syscall table generated by scripts/dump-syscalls.sh
 
+%( arch =="$2" %?
 EOF01
 
     test $__L32 -gt 0 && cat >> $__TAPSET_FILE <<EOF02
@@ -67,8 +68,10 @@ global __syscall_64_name2num[$((${__L64} / 2))]
 EOF03
 
     cat >> $__TAPSET_FILE <<EOF04
+%)
 
 probe init {
+%( arch =="$2" %?
 EOF04
 
 cat $SYSCALLS_32 $SYSCALLS_64  | sort -t\" -k2 >> $__TAPSET_FILE
@@ -76,6 +79,7 @@ cat $SYSCALLS_32 $SYSCALLS_64  | sort -t\" -k2 >> $__TAPSET_FILE
 
 
     cat >> $__TAPSET_FILE <<EOF05
+%)
 } /* probe init */
 EOF05
 }
@@ -85,46 +89,46 @@ EOF05
 __init
 __dump_syscalls $STRACE_SRC/linux/x86_64/syscallent.h 64
 __dump_syscalls $STRACE_SRC/linux/i386/syscallent.h 32
-__generate_tapset $TAPSET_X86_64
+__generate_tapset $TAPSET_X86_64 x86_64
 
 # ======= i386 =======
 __init
 __dump_syscalls $STRACE_SRC/linux/i386/syscallent.h 32
-__generate_tapset $TAPSET_I386
+__generate_tapset $TAPSET_I386 i386
 
 # ======= powerpc =======
 __init
 __dump_syscalls $STRACE_SRC/linux/powerpc64/syscallent.h 64
 __dump_syscalls $STRACE_SRC/linux/powerpc/syscallent.h 32
-__generate_tapset $TAPSET_POWERPC
+__generate_tapset $TAPSET_POWERPC powerpc
 
 # ======= s390 =======
 __init
 __dump_syscalls $STRACE_SRC/linux/s390x/syscallent.h 64
 __dump_syscalls $STRACE_SRC/linux/s390/syscallent.h 32
-__generate_tapset $TAPSET_S390
+__generate_tapset $TAPSET_S390 s390
 
 # ======= arm =======
 __init
 __dump_syscalls $STRACE_SRC/linux/arm/syscallent.h 32
-__generate_tapset $TAPSET_ARM
+__generate_tapset $TAPSET_ARM arm
 
 # ======= aarch64 =======
 __init
 __dump_syscalls $STRACE_SRC/linux/arm/syscallent.h 32
 __dump_syscalls $STRACE_SRC/linux/64/syscallent.h 64
 __dump_syscalls $STRACE_SRC/linux/aarch64/syscallent.h 64
-__generate_tapset $TAPSET_AARCH64
+__generate_tapset $TAPSET_AARCH64 arm64
 
 # ======= mips =======
 __init
 __dump_syscalls $STRACE_SRC/linux/mips/syscallent-n64.h 64
 __dump_syscalls $STRACE_SRC/linux/mips/syscallent-o32.h 32
 __dump_syscalls $STRACE_SRC/linux/mips/syscallent-n32.h 32
-__generate_tapset $TAPSET_MIPS
+__generate_tapset $TAPSET_MIPS mips
 # ======= riscv =======
 __init
 __dump_syscalls $STRACE_SRC/linux/riscv64/syscallent.h 64
-__generate_tapset $TAPSET_RISCV
+__generate_tapset $TAPSET_RISCV riscv
 
 rm -f $SYSCALLS_32 $SYSCALLS_64
This page took 0.033927 seconds and 5 git commands to generate.