add DTrace systrace support for linux32 and freebsd32 on amd64 syscalls

This commits makes necessary changes in syscall/sysent generation
infrastructure.

PR:		kern/152822
Submitted by:	Artem Belevich <fbsdlist@src.cx>
Reviewed by:	jhb (ealier version)
MFC after:	3 weeks
This commit is contained in:
Andriy Gapon 2011-03-12 08:51:43 +00:00
parent 31f7ad1545
commit 56ede1074e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=219559
9 changed files with 28 additions and 16 deletions

View File

@ -5,11 +5,13 @@
all: all:
@echo "make sysent only" @echo "make sysent only"
sysent: linux32_sysent.c linux32_syscall.h linux32_proto.h sysent: linux32_sysent.c linux32_syscall.h linux32_proto.h linux32_syscalls.c linux32_systrace_args.c
linux32_sysent.c linux32_syscall.h linux32_proto.h: ../../kern/makesyscalls.sh \ linux32_sysent.c linux32_syscall.h linux32_proto.h linux32_syscalls.c linux32_systrace_args.c: ../../kern/makesyscalls.sh \
syscalls.master syscalls.conf syscalls.master syscalls.conf
-mv -f linux32_sysent.c linux32_sysent.c.bak -mv -f linux32_sysent.c linux32_sysent.c.bak
-mv -f linux32_syscall.h linux32_syscall.h.bak -mv -f linux32_syscall.h linux32_syscall.h.bak
-mv -f linux32_proto.h linux32_proto.h.bak -mv -f linux32_proto.h linux32_proto.h.bak
-mv -f linux32_syscalls.c linux32_syscalls.c.bak
-mv -f linux32_systrace_args.c linux32_systrace_args.c.bak
sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf

View File

@ -1,5 +1,5 @@
# $FreeBSD$ # $FreeBSD$
sysnames="/dev/null" sysnames="linux32_syscalls.c"
sysproto="linux32_proto.h" sysproto="linux32_proto.h"
sysproto_h=_LINUX_SYSPROTO_H_ sysproto_h=_LINUX_SYSPROTO_H_
syshdr="linux32_syscall.h" syshdr="linux32_syscall.h"
@ -8,4 +8,4 @@ sysmk="/dev/null"
syscallprefix="LINUX_SYS_" syscallprefix="LINUX_SYS_"
switchname="linux_sysent" switchname="linux_sysent"
namesname="linux_syscallnames" namesname="linux_syscallnames"
systrace="/dev/null" systrace="linux32_systrace_args.c"

View File

@ -291,7 +291,7 @@
l_uid16_t *euid, l_uid16_t *suid); } l_uid16_t *euid, l_uid16_t *suid); }
166 AUE_NULL UNIMPL vm86 166 AUE_NULL UNIMPL vm86
167 AUE_NULL STD { int linux_query_module(void); } 167 AUE_NULL STD { int linux_query_module(void); }
168 AUE_POLL NOPROTO { int poll(struct pollfd*, \ 168 AUE_POLL NOPROTO { int poll(struct pollfd *fds, \
unsigned int nfds, int timeout); } unsigned int nfds, int timeout); }
169 AUE_NULL STD { int linux_nfsservctl(void); } 169 AUE_NULL STD { int linux_nfsservctl(void); }
170 AUE_SETRESGID STD { int linux_setresgid16(l_gid16_t rgid, \ 170 AUE_SETRESGID STD { int linux_setresgid16(l_gid16_t rgid, \

View File

@ -5,15 +5,17 @@
all: all:
@echo "make sysent only" @echo "make sysent only"
sysent: freebsd32_sysent.c freebsd32_syscall.h freebsd32_proto.h sysent: freebsd32_sysent.c freebsd32_syscall.h freebsd32_proto.h freebsd32_systrace_args.c
freebsd32_sysent.c freebsd32_syscalls.c freebsd32_syscall.h freebsd32_proto.h: \ freebsd32_sysent.c freebsd32_syscalls.c freebsd32_syscall.h freebsd32_proto.h freebsd32_systrace_args.c : \
../../kern/makesyscalls.sh syscalls.master syscalls.conf ../../kern/makesyscalls.sh syscalls.master syscalls.conf
-mv -f freebsd32_sysent.c freebsd32_sysent.c.bak -mv -f freebsd32_sysent.c freebsd32_sysent.c.bak
-mv -f freebsd32_syscalls.c freebsd32_syscalls.c.bak -mv -f freebsd32_syscalls.c freebsd32_syscalls.c.bak
-mv -f freebsd32_syscall.h freebsd32_syscall.h.bak -mv -f freebsd32_syscall.h freebsd32_syscall.h.bak
-mv -f freebsd32_proto.h freebsd32_proto.h.bak -mv -f freebsd32_proto.h freebsd32_proto.h.bak
-mv -f freebsd32_systrace_args.c freebsd32_systrace_args.c.bak
sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf
clean: clean:
rm -f freebsd32_sysent.c freebsd32_syscalls.c freebsd32_syscall.h freebsd32_proto.h rm -f freebsd32_sysent.c freebsd32_syscalls.c freebsd32_syscall.h freebsd32_proto.h
rm -f freebsd32_systrace_args.c

View File

@ -8,4 +8,4 @@ sysmk="/dev/null"
syscallprefix="FREEBSD32_SYS_" syscallprefix="FREEBSD32_SYS_"
switchname="freebsd32_sysent" switchname="freebsd32_sysent"
namesname="freebsd32_syscallnames" namesname="freebsd32_syscallnames"
systrace="/dev/null" systrace="freebsd32_systrace_args.c"

View File

@ -5,11 +5,13 @@
all: all:
@echo "make sysent only" @echo "make sysent only"
sysent: linux_sysent.c linux_syscall.h linux_proto.h sysent: linux_sysent.c linux_syscall.h linux_proto.h linux_syscalls.c linux_systrace_args.c
linux_sysent.c linux_syscall.h linux_proto.h: ../../kern/makesyscalls.sh \ linux_sysent.c linux_syscall.h linux_proto.h linux_syscalls.c linux_systrace_args.c: \
syscalls.master syscalls.conf ../../kern/makesyscalls.sh syscalls.master syscalls.conf
-mv -f linux_sysent.c linux_sysent.c.bak -mv -f linux_sysent.c linux_sysent.c.bak
-mv -f linux_syscall.h linux_syscall.h.bak -mv -f linux_syscall.h linux_syscall.h.bak
-mv -f linux_proto.h linux_proto.h.bak -mv -f linux_proto.h linux_proto.h.bak
-mv -f linux_syscalls.c linux_syscalls.c.bak
-mv -f linux_systrace_args.c linux_systrace_args.c.bak
sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf

View File

@ -1,5 +1,5 @@
# $FreeBSD$ # $FreeBSD$
sysnames="/dev/null" sysnames="linux_syscalls.c"
sysproto="linux_proto.h" sysproto="linux_proto.h"
sysproto_h=_LINUX_SYSPROTO_H_ sysproto_h=_LINUX_SYSPROTO_H_
syshdr="linux_syscall.h" syshdr="linux_syscall.h"
@ -8,4 +8,4 @@ sysmk="/dev/null"
syscallprefix="LINUX_SYS_" syscallprefix="LINUX_SYS_"
switchname="linux_sysent" switchname="linux_sysent"
namesname="linux_syscallnames" namesname="linux_syscallnames"
systrace="/dev/null" systrace="linux_systrace_args.c"

View File

@ -102,7 +102,7 @@
46 AUE_SETGID STD { int linux_setgid16(l_gid16_t gid); } 46 AUE_SETGID STD { int linux_setgid16(l_gid16_t gid); }
47 AUE_GETGID STD { int linux_getgid16(void); } 47 AUE_GETGID STD { int linux_getgid16(void); }
48 AUE_NULL STD { int linux_signal(l_int sig, \ 48 AUE_NULL STD { int linux_signal(l_int sig, \
l_handler_t handler); } void *handler); }
49 AUE_GETEUID STD { int linux_geteuid16(void); } 49 AUE_GETEUID STD { int linux_geteuid16(void); }
50 AUE_GETEGID STD { int linux_getegid16(void); } 50 AUE_GETEGID STD { int linux_getegid16(void); }
51 AUE_ACCT NOPROTO { int acct(char *path); } 51 AUE_ACCT NOPROTO { int acct(char *path); }
@ -148,7 +148,7 @@
struct timeval *tp, \ struct timeval *tp, \
struct timezone *tzp); } struct timezone *tzp); }
79 AUE_SETTIMEOFDAY NOPROTO { int settimeofday( \ 79 AUE_SETTIMEOFDAY NOPROTO { int settimeofday( \
struct timeval *tp, \ struct timeval *tv, \
struct timezone *tzp); } struct timezone *tzp); }
80 AUE_GETGROUPS STD { int linux_getgroups16(l_uint gidsetsize, \ 80 AUE_GETGROUPS STD { int linux_getgroups16(l_uint gidsetsize, \
l_gid16_t *gidset); } l_gid16_t *gidset); }
@ -293,7 +293,7 @@
l_uid16_t *euid, l_uid16_t *suid); } l_uid16_t *euid, l_uid16_t *suid); }
166 AUE_NULL STD { int linux_vm86(void); } 166 AUE_NULL STD { int linux_vm86(void); }
167 AUE_NULL STD { int linux_query_module(void); } 167 AUE_NULL STD { int linux_query_module(void); }
168 AUE_POLL NOPROTO { int poll(struct pollfd*, \ 168 AUE_POLL NOPROTO { int poll(struct pollfd* fds, \
unsigned int nfds, long timeout); } unsigned int nfds, long timeout); }
169 AUE_NULL STD { int linux_nfsservctl(void); } 169 AUE_NULL STD { int linux_nfsservctl(void); }
170 AUE_SETRESGID STD { int linux_setresgid16(l_gid16_t rgid, \ 170 AUE_SETRESGID STD { int linux_setresgid16(l_gid16_t rgid, \

View File

@ -200,6 +200,8 @@ s/\$//g
print > syscompat6 print > syscompat6
print > syscompat7 print > syscompat7
print > sysnames print > sysnames
print > systrace
print > systracetmp
savesyscall = syscall savesyscall = syscall
next next
} }
@ -212,6 +214,8 @@ s/\$//g
print > syscompat6 print > syscompat6
print > syscompat7 print > syscompat7
print > sysnames print > sysnames
print > systrace
print > systracetmp
syscall = savesyscall syscall = savesyscall
next next
} }
@ -224,6 +228,8 @@ s/\$//g
print > syscompat6 print > syscompat6
print > syscompat7 print > syscompat7
print > sysnames print > sysnames
print > systrace
print > systracetmp
next next
} }
syscall != $1 { syscall != $1 {