From: Nicholas Nethercote Date: Fri, 26 Aug 2005 04:27:54 +0000 (+0000) Subject: Move get*16 and set*16 syscalls from "generic" to "linux". X-Git-Tag: svn/VALGRIND_3_1_0~519 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1fa6f9bf7a7b1fc78e1d3e31bc5b167a013eb0a7;p=thirdparty%2Fvalgrind.git Move get*16 and set*16 syscalls from "generic" to "linux". git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4521 --- diff --git a/coregrind/m_syswrap/priv_syswrap-generic.h b/coregrind/m_syswrap/priv_syswrap-generic.h index 8986a53dc9..70dc1138db 100644 --- a/coregrind/m_syswrap/priv_syswrap-generic.h +++ b/coregrind/m_syswrap/priv_syswrap-generic.h @@ -169,16 +169,6 @@ DECL_TEMPLATE(generic, sys_utimes); // 4.3BSD // These ones may be Linux specific... not sure. They use 16-bit gid_t and // uid_t types. The similarly named (minus the "16" suffix) ones below use // 32-bit versions of these types. -DECL_TEMPLATE(generic, sys_setuid16); // ## P -DECL_TEMPLATE(generic, sys_getuid16); // ## P -DECL_TEMPLATE(generic, sys_setgid16); // ## SVr4,SVID -DECL_TEMPLATE(generic, sys_getgid16); // ## P -DECL_TEMPLATE(generic, sys_geteuid16); // ## P -DECL_TEMPLATE(generic, sys_getegid16); // ## P -DECL_TEMPLATE(generic, sys_setreuid16); // ## BSD4.3 -DECL_TEMPLATE(generic, sys_setregid16); // ## BSD4.3 -DECL_TEMPLATE(generic, sys_getgroups16); // ## P -DECL_TEMPLATE(generic, sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD DECL_TEMPLATE(generic, sys_fchown16); // ## SVr4,BSD4.3 DECL_TEMPLATE(generic, sys_chown16); // ## P diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 428dbf00f9..e3a4f05c3e 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -117,6 +117,19 @@ DECL_TEMPLATE(linux, sys_timer_delete); DECL_TEMPLATE(linux, sys_capget); DECL_TEMPLATE(linux, sys_capset); +// These ones have 32-bit generic equivalents, but the 16-bit versions (they +// use 16-bit gid_t and uid_t types) seem to be Linux-specific. +DECL_TEMPLATE(linux, sys_getuid16); +DECL_TEMPLATE(linux, sys_setuid16); +DECL_TEMPLATE(linux, sys_getgid16); +DECL_TEMPLATE(linux, sys_setgid16); +DECL_TEMPLATE(linux, sys_geteuid16); +DECL_TEMPLATE(linux, sys_getegid16); +DECL_TEMPLATE(linux, sys_setreuid16); +DECL_TEMPLATE(linux, sys_setregid16); +DECL_TEMPLATE(linux, sys_getgroups16); +DECL_TEMPLATE(linux, sys_setgroups16); + #endif // __PRIV_SYSWRAP_LINUX_H /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 0c22135140..cf961f2583 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -2106,12 +2106,6 @@ PRE(sys_getpriority) PRE_REG_READ2(long, "getpriority", int, which, int, who); } -PRE(sys_setregid16) -{ - PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2); - PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_gid_t, egid); -} - // The actual kernel definition of this routine takes a // single 64 bit offset argument. This version is for 32 bit // platforms only and treats the offset as two values - the @@ -2812,14 +2806,6 @@ POST(sys_getdents64) POST_MEM_WRITE( ARG2, RES ); } -PRE(sys_getgroups16) -{ - PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2); - PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, list); - if (ARG1 > 0) - PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) ); -} - POST(sys_getgroups16) { vg_assert(SUCCESS); @@ -2862,36 +2848,18 @@ POST(sys_getcwd) POST_MEM_WRITE( ARG1, RES ); } -PRE(sys_geteuid16) -{ - PRINT("sys_geteuid16 ( )"); - PRE_REG_READ0(long, "geteuid16"); -} - PRE(sys_geteuid) { PRINT("sys_geteuid ( )"); PRE_REG_READ0(long, "geteuid"); } -PRE(sys_getegid16) -{ - PRINT("sys_getegid16 ( )"); - PRE_REG_READ0(long, "getegid16"); -} - PRE(sys_getegid) { PRINT("sys_getegid ( )"); PRE_REG_READ0(long, "getegid"); } -PRE(sys_getgid16) -{ - PRINT("sys_getgid16 ( )"); - PRE_REG_READ0(long, "getgid16"); -} - PRE(sys_getgid) { PRINT("sys_getgid ( )"); @@ -3015,12 +2983,6 @@ PRE(sys_settimeofday) } } -PRE(sys_getuid16) -{ - PRINT("sys_getuid16 ( )"); - PRE_REG_READ0(long, "getuid16"); -} - PRE(sys_getuid) { PRINT("sys_getuid ( )"); @@ -4908,12 +4870,6 @@ PRE(sys_select) PRE_MEM_READ( "select(timeout)", ARG5, sizeof(struct vki_timeval) ); } -PRE(sys_setgid16) -{ - PRINT("sys_setgid16 ( %d )", ARG1); - PRE_REG_READ1(long, "setgid16", vki_old_gid_t, gid); -} - PRE(sys_setgid) { PRINT("sys_setgid ( %d )", ARG1); @@ -4926,14 +4882,6 @@ PRE(sys_setsid) PRE_REG_READ0(long, "setsid"); } -PRE(sys_setgroups16) -{ - PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2); - PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, list); - if (ARG1 > 0) - PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) ); -} - PRE(sys_setgroups) { PRINT("setgroups ( %llu, %p )", (ULong)ARG1, ARG2); @@ -4954,12 +4902,6 @@ PRE(sys_setregid) PRE_REG_READ2(long, "setregid", vki_gid_t, rgid, vki_gid_t, egid); } -PRE(sys_setreuid16) -{ - PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2); - PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_uid_t, euid); -} - PRE(sys_setreuid) { PRINT("sys_setreuid ( 0x%x, 0x%x )", ARG1, ARG2); @@ -5006,12 +4948,6 @@ PRE(sys_setrlimit) } } -PRE(sys_setuid16) -{ - PRINT("sys_setuid16 ( %d )", ARG1); - PRE_REG_READ1(long, "setuid16", vki_old_uid_t, uid); -} - PRE(sys_setuid) { PRINT("sys_setuid ( %d )", ARG1); diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 69aa45d27c..2a5ecf5db9 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1155,6 +1155,76 @@ PRE(sys_capset) ARG2, sizeof(struct __vki_user_cap_data_struct) ); } +PRE(sys_getuid16) +{ + PRINT("sys_getuid16 ( )"); + PRE_REG_READ0(long, "getuid16"); +} + +PRE(sys_setuid16) +{ + PRINT("sys_setuid16 ( %d )", ARG1); + PRE_REG_READ1(long, "setuid16", vki_old_uid_t, uid); +} + +PRE(sys_getgid16) +{ + PRINT("sys_getgid16 ( )"); + PRE_REG_READ0(long, "getgid16"); +} + +PRE(sys_setgid16) +{ + PRINT("sys_setgid16 ( %d )", ARG1); + PRE_REG_READ1(long, "setgid16", vki_old_gid_t, gid); +} + +PRE(sys_geteuid16) +{ + PRINT("sys_geteuid16 ( )"); + PRE_REG_READ0(long, "geteuid16"); +} + +PRE(sys_getegid16) +{ + PRINT("sys_getegid16 ( )"); + PRE_REG_READ0(long, "getegid16"); +} + +PRE(sys_setreuid16) +{ + PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2); + PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_uid_t, euid); +} + +PRE(sys_setregid16) +{ + PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2); + PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_gid_t, egid); +} + +PRE(sys_getgroups16) +{ + PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2); + PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, list); + if (ARG1 > 0) + PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) ); +} +POST(sys_getgroups16) +{ + vg_assert(SUCCESS); + if (ARG1 > 0 && RES > 0) + POST_MEM_WRITE( ARG2, RES * sizeof(vki_old_gid_t) ); +} + +PRE(sys_setgroups16) +{ + PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2); + PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, list); + if (ARG1 > 0) + PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) ); +} + #undef PRE #undef POST diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c index 53e9d4668b..c8c0e52889 100644 --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -1985,8 +1985,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_getpid, sys_getpid), // 20 //.. LINX_(__NR_mount, sys_mount), // 21 //.. LINX_(__NR_umount, sys_oldumount), // 22 - GENX_(__NR_setuid, sys_setuid16), // 23 ## P - GENX_(__NR_getuid, sys_getuid16), // 24 ## P + LINX_(__NR_setuid, sys_setuid16), // 23 ## P + LINX_(__NR_getuid, sys_getuid16), // 24 ## P //.. //.. // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN) //.. PLAXY(__NR_ptrace, sys_ptrace), // 26 @@ -2013,12 +2013,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { //.. GENX_(__NR_prof, sys_ni_syscall), // 44 //.. GENX_(__NR_brk, sys_brk), // 45 - GENX_(__NR_setgid, sys_setgid16), // 46 - GENX_(__NR_getgid, sys_getgid16), // 47 + LINX_(__NR_setgid, sys_setgid16), // 46 + LINX_(__NR_getgid, sys_getgid16), // 47 //.. // (__NR_signal, sys_signal), // 48 */* (ANSI C) - GENX_(__NR_geteuid, sys_geteuid16), // 49 + LINX_(__NR_geteuid, sys_geteuid16), // 49 - GENX_(__NR_getegid, sys_getegid16), // 50 + LINX_(__NR_getegid, sys_getegid16), // 50 //.. GENX_(__NR_acct, sys_acct), // 51 //.. LINX_(__NR_umount2, sys_umount), // 52 //.. GENX_(__NR_lock, sys_ni_syscall), // 53 @@ -2042,8 +2042,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { //.. // (__NR_sgetmask, sys_sgetmask), // 68 */* (ANSI C) //.. // (__NR_ssetmask, sys_ssetmask), // 69 */* (ANSI C) //.. -//.. GENX_(__NR_setreuid, sys_setreuid16), // 70 -//.. GENX_(__NR_setregid, sys_setregid16), // 71 +//.. LINX_(__NR_setreuid, sys_setreuid16), // 70 +//.. LINX_(__NR_setregid, sys_setregid16), // 71 //.. GENX_(__NR_sigsuspend, sys_sigsuspend), // 72 //.. GENXY(__NR_sigpending, sys_sigpending), // 73 //.. // (__NR_sethostname, sys_sethostname), // 74 */* @@ -2054,8 +2054,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENXY(__NR_gettimeofday, sys_gettimeofday), // 78 //.. GENX_(__NR_settimeofday, sys_settimeofday), // 79 //.. - GENXY(__NR_getgroups, sys_getgroups16), // 80 -//.. GENX_(__NR_setgroups, sys_setgroups16), // 81 + LINXY(__NR_getgroups, sys_getgroups16), // 80 +//.. LINX_(__NR_setgroups, sys_setgroups16), // 81 //.. PLAX_(__NR_select, old_select), // 82 GENX_(__NR_symlink, sys_symlink), // 83 //.. // (__NR_oldlstat, sys_lstat), // 84 -- obsolete diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index fc3c6c6808..b3fc481f2e 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -1967,8 +1967,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_getpid, sys_getpid), // 20 LINX_(__NR_mount, sys_mount), // 21 LINX_(__NR_umount, sys_oldumount), // 22 - GENX_(__NR_setuid, sys_setuid16), // 23 ## P - GENX_(__NR_getuid, sys_getuid16), // 24 ## P + LINX_(__NR_setuid, sys_setuid16), // 23 ## P + LINX_(__NR_getuid, sys_getuid16), // 24 ## P //zz //zz // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN) PLAXY(__NR_ptrace, sys_ptrace), // 26 @@ -1995,12 +1995,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_prof, sys_ni_syscall), // 44 //zz GENX_(__NR_brk, sys_brk), // 45 - GENX_(__NR_setgid, sys_setgid16), // 46 - GENX_(__NR_getgid, sys_getgid16), // 47 + LINX_(__NR_setgid, sys_setgid16), // 46 + LINX_(__NR_getgid, sys_getgid16), // 47 //zz // (__NR_signal, sys_signal), // 48 */* (ANSI C) - GENX_(__NR_geteuid, sys_geteuid16), // 49 + LINX_(__NR_geteuid, sys_geteuid16), // 49 - GENX_(__NR_getegid, sys_getegid16), // 50 + LINX_(__NR_getegid, sys_getegid16), // 50 GENX_(__NR_acct, sys_acct), // 51 LINX_(__NR_umount2, sys_umount), // 52 GENX_(__NR_lock, sys_ni_syscall), // 53 @@ -2024,8 +2024,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { //zz // (__NR_sgetmask, sys_sgetmask), // 68 */* (ANSI C) //zz // (__NR_ssetmask, sys_ssetmask), // 69 */* (ANSI C) //zz - GENX_(__NR_setreuid, sys_setreuid16), // 70 - GENX_(__NR_setregid, sys_setregid16), // 71 + LINX_(__NR_setreuid, sys_setreuid16), // 70 + LINX_(__NR_setregid, sys_setregid16), // 71 //zz GENX_(__NR_sigsuspend, sys_sigsuspend), // 72 GENXY(__NR_sigpending, sys_sigpending), // 73 //zz // (__NR_sethostname, sys_sethostname), // 74 */* @@ -2036,8 +2036,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENXY(__NR_gettimeofday, sys_gettimeofday), // 78 GENX_(__NR_settimeofday, sys_settimeofday), // 79 - GENXY(__NR_getgroups, sys_getgroups16), // 80 - GENX_(__NR_setgroups, sys_setgroups16), // 81 + LINXY(__NR_getgroups, sys_getgroups16), // 80 + LINX_(__NR_setgroups, sys_setgroups16), // 81 PLAX_(__NR_select, old_select), // 82 GENX_(__NR_symlink, sys_symlink), // 83 //zz // (__NR_oldlstat, sys_lstat), // 84 -- obsolete