diff --git a/coregrind/m_syswrap/priv_syswrap-generic.h b/coregrind/m_syswrap/priv_syswrap-generic.h index 70dc1138d..c4f11e2c5 100644 --- a/coregrind/m_syswrap/priv_syswrap-generic.h +++ b/coregrind/m_syswrap/priv_syswrap-generic.h @@ -166,12 +166,6 @@ DECL_TEMPLATE(generic, sys_fchown); // SVr4,4.3BSD DECL_TEMPLATE(generic, sys_setgid); // SVr4,SVID 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_fchown16); // ## SVr4,BSD4.3 -DECL_TEMPLATE(generic, sys_chown16); // ## P - // Some archs on Linux do not match the generic wrapper for sys_pipe(). DECL_TEMPLATE(generic, sys_pipe); diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index e3a4f05c3..dc8ee3c53 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -130,6 +130,12 @@ DECL_TEMPLATE(linux, sys_setregid16); DECL_TEMPLATE(linux, sys_getgroups16); DECL_TEMPLATE(linux, sys_setgroups16); +// Again, these 16-bit versions are Linux-specific, the 32-bit versions are +// generic. +DECL_TEMPLATE(linux, sys_chown16); +DECL_TEMPLATE(linux, sys_fchown16); +//DECL_TEMPLATE(linux, sys_lchown16); // not yet encountered + #endif // __PRIV_SYSWRAP_LINUX_H /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 85eef332d..15db45409 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -2459,15 +2459,6 @@ PRE(sys_chmod) PRE_MEM_RASCIIZ( "chmod(path)", ARG1 ); } -PRE(sys_chown16) -{ - PRINT("sys_chown16 ( %p, 0x%x, 0x%x )", ARG1,ARG2,ARG3); - PRE_REG_READ3(long, "chown16", - const char *, path, - vki_old_uid_t, owner, vki_old_gid_t, group); - PRE_MEM_RASCIIZ( "chown16(path)", ARG1 ); -} - PRE(sys_chown) { /* int chown(const char *path, uid_t owner, gid_t group); */ @@ -2539,13 +2530,6 @@ PRE(sys_fchdir) PRE_REG_READ1(long, "fchdir", unsigned int, fd); } -PRE(sys_fchown16) -{ - PRINT("sys_fchown16 ( %d, %d, %d )", ARG1,ARG2,ARG3); - PRE_REG_READ3(long, "fchown16", - unsigned int, fd, vki_old_uid_t, owner, vki_old_gid_t, group); -} - PRE(sys_fchown) { PRINT("sys_fchown ( %d, %d, %d )", ARG1,ARG2,ARG3); diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 2a5ecf5db..8187a117c 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1225,6 +1225,22 @@ PRE(sys_setgroups16) PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) ); } +PRE(sys_chown16) +{ + PRINT("sys_chown16 ( %p, 0x%x, 0x%x )", ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "chown16", + const char *, path, + vki_old_uid_t, owner, vki_old_gid_t, group); + PRE_MEM_RASCIIZ( "chown16(path)", ARG1 ); +} + +PRE(sys_fchown16) +{ + PRINT("sys_fchown16 ( %d, %d, %d )", ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "fchown16", + unsigned int, fd, vki_old_uid_t, owner, vki_old_gid_t, group); +} + #undef PRE #undef POST diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c index c8c0e5288..6de55f4b1 100644 --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -1977,7 +1977,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { //.. GENX_(__NR_mknod, sys_mknod), // 14 //.. GENX_(__NR_chmod, sys_chmod), // 15 -//.. // (__NR_lchown, sys_lchown16), // 16 ## P +//.. LINX_(__NR_lchown, sys_lchown16), // 16 ## P //.. GENX_(__NR_break, sys_ni_syscall), // 17 //.. // (__NR_oldstat, sys_stat), // 18 (obsolete) GENX_(__NR_lseek, sys_lseek), // 19 @@ -2072,7 +2072,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_ftruncate, sys_ftruncate), // 93 GENX_(__NR_fchmod, sys_fchmod), // 94 - GENX_(__NR_fchown, sys_fchown16), // 95 + LINX_(__NR_fchown, sys_fchown16), // 95 //.. GENX_(__NR_getpriority, sys_getpriority), // 96 //.. GENX_(__NR_setpriority, sys_setpriority), // 97 //.. GENX_(__NR_profil, sys_ni_syscall), // 98 @@ -2178,7 +2178,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { //.. GENXY(__NR_pread64, sys_pread64), // 179 GENX_(__NR_pwrite64, sys_pwrite64), // 180 - GENX_(__NR_chown, sys_chown16), // 181 + LINX_(__NR_chown, sys_chown16), // 181 GENXY(__NR_getcwd, sys_getcwd), // 182 //.. LINXY(__NR_capget, sys_capget), // 183 //.. diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index b3fc481f2..347e47add 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -1959,7 +1959,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_mknod, sys_mknod), // 14 GENX_(__NR_chmod, sys_chmod), // 15 -//zz // (__NR_lchown, sys_lchown16), // 16 ## P +//zz LINX_(__NR_lchown, sys_lchown16), // 16 GENX_(__NR_break, sys_ni_syscall), // 17 //zz // (__NR_oldstat, sys_stat), // 18 (obsolete) GENX_(__NR_lseek, sys_lseek), // 19 @@ -2054,7 +2054,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_ftruncate, sys_ftruncate), // 93 GENX_(__NR_fchmod, sys_fchmod), // 94 - GENX_(__NR_fchown, sys_fchown16), // 95 + LINX_(__NR_fchown, sys_fchown16), // 95 GENX_(__NR_getpriority, sys_getpriority), // 96 GENX_(__NR_setpriority, sys_setpriority), // 97 GENX_(__NR_profil, sys_ni_syscall), // 98 @@ -2160,7 +2160,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENXY(__NR_pread64, sys_pread64), // 180 GENX_(__NR_pwrite64, sys_pwrite64), // 181 - GENX_(__NR_chown, sys_chown16), // 182 + LINX_(__NR_chown, sys_chown16), // 182 GENXY(__NR_getcwd, sys_getcwd), // 183 LINXY(__NR_capget, sys_capget), // 184