Now that dt(4) and btrace(8) are enabled by default and provide a nice and flexible way to debug syscalls on GENERIC kernels should we get rid of the SYSCALL_DEBUG mechanism?
Note that the auto-generated kern/syscalls.c providing the `syscallnames' array is still needed to build btrace(8). ok? Index: kern/exec_elf.c =================================================================== RCS file: /cvs/src/sys/kern/exec_elf.c,v retrieving revision 1.160 diff -u -p -r1.160 exec_elf.c --- kern/exec_elf.c 10 Mar 2021 10:21:47 -0000 1.160 +++ kern/exec_elf.c 30 Aug 2021 07:19:33 -0000 @@ -107,9 +107,6 @@ int elf_os_pt_note_name(Elf_Note *); int elf_os_pt_note(struct proc *, struct exec_package *, Elf_Ehdr *, int *); extern char sigcode[], esigcode[], sigcoderet[]; -#ifdef SYSCALL_DEBUG -extern char *syscallnames[]; -#endif /* round up and down to page boundaries. */ #define ELF_ROUND(a, b) (((a) + (b) - 1) & ~((b) - 1)) @@ -135,11 +132,7 @@ struct emul emul_elf = { SYS_syscall, SYS_MAXSYSCALL, sysent, -#ifdef SYSCALL_DEBUG - syscallnames, -#else NULL, -#endif (sizeof(AuxInfo) * ELF_AUX_ENTRIES / sizeof(char *)), elf_copyargs, setregs, Index: kern/kern_xxx.c =================================================================== RCS file: /cvs/src/sys/kern/kern_xxx.c,v retrieving revision 1.36 diff -u -p -r1.36 kern_xxx.c --- kern/kern_xxx.c 2 Apr 2019 11:00:22 -0000 1.36 +++ kern/kern_xxx.c 30 Aug 2021 07:19:17 -0000 @@ -84,75 +84,3 @@ __stack_smash_handler(char func[], int d panic("smashed stack in %s", func); } #endif - -#ifdef SYSCALL_DEBUG -#include <sys/proc.h> - -#define SCDEBUG_CALLS 0x0001 /* show calls */ -#define SCDEBUG_RETURNS 0x0002 /* show returns */ -#define SCDEBUG_ALL 0x0004 /* even syscalls that are implemented */ -#define SCDEBUG_SHOWARGS 0x0008 /* show arguments to calls */ - -int scdebug = SCDEBUG_CALLS|SCDEBUG_RETURNS|SCDEBUG_SHOWARGS; - -void -scdebug_call(struct proc *p, register_t code, const register_t args[]) -{ - struct process *pr; - struct sysent *sy; - struct emul *em; - int i; - - if (!(scdebug & SCDEBUG_CALLS)) - return; - - pr = p->p_p; - em = pr->ps_emul; - sy = &em->e_sysent[code]; - if (!(scdebug & SCDEBUG_ALL || code < 0 || code >= em->e_nsysent || - sy->sy_call == sys_nosys)) - return; - - printf("proc %d (%s): %s num ", pr->ps_pid, pr->ps_comm, em->e_name); - if (code < 0 || code >= em->e_nsysent) - printf("OUT OF RANGE (%ld)", code); - else { - printf("%ld call: %s", code, em->e_syscallnames[code]); - if (scdebug & SCDEBUG_SHOWARGS) { - printf("("); - for (i = 0; i < sy->sy_argsize / sizeof(register_t); - i++) - printf("%s0x%lx", i == 0 ? "" : ", ", args[i]); - printf(")"); - } - } - printf("\n"); -} - -void -scdebug_ret(struct proc *p, register_t code, int error, - const register_t retval[]) -{ - struct process *pr; - struct sysent *sy; - struct emul *em; - - if (!(scdebug & SCDEBUG_RETURNS)) - return; - - pr = p->p_p; - em = pr->ps_emul; - sy = &em->e_sysent[code]; - if (!(scdebug & SCDEBUG_ALL || code < 0 || code >= em->e_nsysent || - sy->sy_call == sys_nosys)) - return; - - printf("proc %d (%s): %s num ", pr->ps_pid, pr->ps_comm, em->e_name); - if (code < 0 || code >= em->e_nsysent) - printf("OUT OF RANGE (%ld)", code); - else - printf("%ld ret: err = %d, rv = 0x%lx,0x%lx", code, - error, retval[0], retval[1]); - printf("\n"); -} -#endif /* SYSCALL_DEBUG */ Index: kern/init_main.c =================================================================== RCS file: /cvs/src/sys/kern/init_main.c,v retrieving revision 1.308 diff -u -p -r1.308 init_main.c --- kern/init_main.c 30 Jun 2021 12:21:02 -0000 1.308 +++ kern/init_main.c 30 Aug 2021 07:17:55 -0000 @@ -155,9 +155,6 @@ void pool_gc_pages(void *); void percpu_init(void); extern char sigcode[], esigcode[], sigcoderet[]; -#ifdef SYSCALL_DEBUG -extern char *syscallnames[]; -#endif struct emul emul_native = { "native", @@ -165,11 +162,7 @@ struct emul emul_native = { SYS_syscall, SYS_MAXSYSCALL, sysent, -#ifdef SYSCALL_DEBUG - syscallnames, -#else NULL, -#endif 0, copyargs, setregs, Index: sys/systm.h =================================================================== RCS file: /cvs/src/sys/sys/systm.h,v retrieving revision 1.154 diff -u -p -r1.154 systm.h --- sys/systm.h 2 Jun 2021 00:39:25 -0000 1.154 +++ sys/systm.h 30 Aug 2021 07:18:06 -0000 @@ -131,12 +131,6 @@ extern struct sysent { /* system call t #error "what byte order is this machine?" #endif -#if defined(_KERNEL) && defined(SYSCALL_DEBUG) -void scdebug_call(struct proc *p, register_t code, const register_t retval[]); -void scdebug_ret(struct proc *p, register_t code, int error, - const register_t retval[]); -#endif /* _KERNEL && SYSCALL_DEBUG */ - extern int boothowto; /* reboot flags, from console subsystem */ extern void (*v_putc)(int); /* Virtual console putc routine */ Index: sys/syscall_mi.h =================================================================== RCS file: /cvs/src/sys/sys/syscall_mi.h,v retrieving revision 1.25 diff -u -p -r1.25 syscall_mi.h --- sys/syscall_mi.h 21 Jan 2020 16:16:23 -0000 1.25 +++ sys/syscall_mi.h 30 Aug 2021 07:19:10 -0000 @@ -60,11 +60,6 @@ mi_syscall(struct proc *p, register_t co /* refresh the thread's cache of the process's creds */ refreshcreds(p); -#ifdef SYSCALL_DEBUG - KERNEL_LOCK(); - scdebug_call(p, code, argp); - KERNEL_UNLOCK(); -#endif TRACEPOINT(raw_syscalls, sys_enter, code, NULL); #if NDT > 0 DT_ENTER(syscall, code, callp->sy_argsize, argp); @@ -113,11 +108,6 @@ static inline void mi_syscall_return(struct proc *p, register_t code, int error, const register_t retval[2]) { -#ifdef SYSCALL_DEBUG - KERNEL_LOCK(); - scdebug_ret(p, code, error, retval); - KERNEL_UNLOCK(); -#endif #if NDT > 0 DT_LEAVE(syscall, code, error, retval[0], retval[1]); #endif @@ -140,7 +130,7 @@ mi_syscall_return(struct proc *p, regist static inline void mi_child_return(struct proc *p) { -#if defined(SYSCALL_DEBUG) || defined(KTRACE) || NDT > 0 +#if defined(KTRACE) || NDT > 0 int code = (p->p_flag & P_THREAD) ? SYS___tfork : (p->p_p->ps_flags & PS_PPWAIT) ? SYS_vfork : SYS_fork; const register_t child_retval[2] = { 0, 1 }; @@ -148,11 +138,6 @@ mi_child_return(struct proc *p) TRACEPOINT(sched, on__cpu, NULL); -#ifdef SYSCALL_DEBUG - KERNEL_LOCK(); - scdebug_ret(p, code, 0, child_retval); - KERNEL_UNLOCK(); -#endif #if NDT > 0 DT_LEAVE(syscall, code, 0, child_retval[0], child_retval[1]); #endif