mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
DARWIN sync: pread64 and pwrite64 wrappers.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9971
This commit is contained in:
parent
d463dfb519
commit
7b2a259bea
@ -186,10 +186,8 @@ DECL_TEMPLATE(generic, sys_fstatfs); // * L?
|
||||
DECL_TEMPLATE(generic, sys_iopl); // (x86/amd64) L
|
||||
DECL_TEMPLATE(generic, sys_ipc); // (x86) L
|
||||
DECL_TEMPLATE(generic, sys_newuname); // * P
|
||||
DECL_TEMPLATE(generic, sys_pread64_on32bitplat); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pread64_on64bitplat); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pwrite64_on32bitplat); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pwrite64_on64bitplat); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pread64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pwrite64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_sigaltstack); // (x86) (XPG4-UNIX)
|
||||
DECL_TEMPLATE(generic, sys_getpmsg); // (?) (?)
|
||||
DECL_TEMPLATE(generic, sys_putpmsg); // (?) (?)
|
||||
|
||||
@ -1035,8 +1035,8 @@ const SyscallTableEntry ML_(syscall_table)[] = {
|
||||
|
||||
PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 15
|
||||
LINXY(__NR_ioctl, sys_ioctl), // 16
|
||||
GENXY(__NR_pread64, sys_pread64_on64bitplat), // 17
|
||||
GENX_(__NR_pwrite64, sys_pwrite64_on64bitplat), // 18
|
||||
GENXY(__NR_pread64, sys_pread64), // 17
|
||||
GENX_(__NR_pwrite64, sys_pwrite64), // 18
|
||||
GENXY(__NR_readv, sys_readv), // 19
|
||||
|
||||
GENX_(__NR_writev, sys_writev), // 20
|
||||
|
||||
@ -2232,32 +2232,24 @@ PRE(sys_getpriority)
|
||||
PRE_REG_READ2(long, "getpriority", int, which, int, who);
|
||||
}
|
||||
|
||||
PRE(sys_pwrite64_on64bitplat)
|
||||
PRE(sys_pwrite64)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 8);
|
||||
*flags |= SfMayBlock;
|
||||
PRINT("sys_pwrite64 ( %ld, %#lx, %llu, %ld )",
|
||||
ARG1, ARG2, (ULong)ARG3, ARG4);
|
||||
PRE_REG_READ4(ssize_t, "pwrite64",
|
||||
unsigned int, fd, const char *, buf,
|
||||
vki_size_t, count, vki_loff_t, offset);
|
||||
PRE_MEM_READ( "pwrite64(buf)", ARG2, ARG3 );
|
||||
}
|
||||
|
||||
// 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
|
||||
// kernel relies on stack based argument passing conventions
|
||||
// to merge the two together.
|
||||
PRE(sys_pwrite64_on32bitplat)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 4);
|
||||
*flags |= SfMayBlock;
|
||||
#if VG_WORDSIZE == 4
|
||||
PRINT("sys_pwrite64 ( %ld, %#lx, %llu, %lld )",
|
||||
ARG1, ARG2, (ULong)ARG3, LOHI64(ARG4,ARG5));
|
||||
PRE_REG_READ5(ssize_t, "pwrite64",
|
||||
unsigned int, fd, const char *, buf, vki_size_t, count,
|
||||
vki_u32, offset_low32, vki_u32, offset_high32);
|
||||
#elif VG_WORDSIZE == 8
|
||||
PRINT("sys_pwrite64 ( %ld, %#lx, %llu, %lld )",
|
||||
ARG1, ARG2, (ULong)ARG3, (Long)ARG4);
|
||||
PRE_REG_READ4(ssize_t, "pwrite64",
|
||||
unsigned int, fd, const char *, buf, vki_size_t, count,
|
||||
Word, offset);
|
||||
#else
|
||||
# error Unexpected word size
|
||||
#endif
|
||||
PRE_MEM_READ( "pwrite64(buf)", ARG2, ARG3 );
|
||||
}
|
||||
|
||||
@ -2299,45 +2291,28 @@ PRE(sys_getsid)
|
||||
PRE_REG_READ1(long, "getsid", vki_pid_t, pid);
|
||||
}
|
||||
|
||||
PRE(sys_pread64_on64bitplat)
|
||||
PRE(sys_pread64)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 8);
|
||||
*flags |= SfMayBlock;
|
||||
PRINT("sys_pread64 ( %ld, %#lx, %llu, %ld )",
|
||||
ARG1, ARG2, (ULong)ARG3, ARG4);
|
||||
PRE_REG_READ4(ssize_t, "pread64",
|
||||
unsigned int, fd, char *, buf,
|
||||
vki_size_t, count, vki_loff_t, offset);
|
||||
PRE_MEM_WRITE( "pread64(buf)", ARG2, ARG3 );
|
||||
}
|
||||
POST(sys_pread64_on64bitplat)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 8);
|
||||
vg_assert(SUCCESS);
|
||||
if (RES > 0) {
|
||||
POST_MEM_WRITE( ARG2, RES );
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
// kernel relies on stack based argument passing conventions
|
||||
// to merge the two together.
|
||||
PRE(sys_pread64_on32bitplat)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 4);
|
||||
*flags |= SfMayBlock;
|
||||
#if VG_WORDSIZE == 4
|
||||
PRINT("sys_pread64 ( %ld, %#lx, %llu, %lld )",
|
||||
ARG1, ARG2, (ULong)ARG3, LOHI64(ARG4,ARG5));
|
||||
PRE_REG_READ5(ssize_t, "pread64",
|
||||
unsigned int, fd, char *, buf, vki_size_t, count,
|
||||
vki_u32, offset_low32, vki_u32, offset_high32);
|
||||
#elif VG_WORDSIZE == 8
|
||||
PRINT("sys_pread64 ( %ld, %#lx, %llu, %lld )",
|
||||
ARG1, ARG2, (ULong)ARG3, (Long)ARG4);
|
||||
PRE_REG_READ4(ssize_t, "pread64",
|
||||
unsigned int, fd, char *, buf, vki_size_t, count,
|
||||
Word, offset);
|
||||
#else
|
||||
# error Unexpected word size
|
||||
#endif
|
||||
PRE_MEM_WRITE( "pread64(buf)", ARG2, ARG3 );
|
||||
}
|
||||
POST(sys_pread64_on32bitplat)
|
||||
POST(sys_pread64)
|
||||
{
|
||||
vg_assert(sizeof(UWord) == 4);
|
||||
vg_assert(SUCCESS);
|
||||
if (RES > 0) {
|
||||
POST_MEM_WRITE( ARG2, RES );
|
||||
|
||||
@ -1710,8 +1710,8 @@ const SyscallTableEntry ML_(syscall_table)[] = {
|
||||
LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 177
|
||||
LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178
|
||||
|
||||
GENXY(__NR_pread64, sys_pread64_on32bitplat), // 179
|
||||
GENX_(__NR_pwrite64, sys_pwrite64_on32bitplat), // 180
|
||||
GENXY(__NR_pread64, sys_pread64), // 179
|
||||
GENX_(__NR_pwrite64, sys_pwrite64), // 180
|
||||
GENX_(__NR_chown, sys_chown), // 181
|
||||
GENXY(__NR_getcwd, sys_getcwd), // 182
|
||||
LINXY(__NR_capget, sys_capget), // 183
|
||||
|
||||
@ -1354,7 +1354,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
|
||||
LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 176
|
||||
// _____(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 177
|
||||
// _____(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178
|
||||
GENXY(__NR_pread64, sys_pread64_on64bitplat), // 179
|
||||
GENXY(__NR_pread64, sys_pread64), // 179
|
||||
|
||||
// _____(__NR_pwrite64, sys_pwrite64), // 180
|
||||
GENX_(__NR_chown, sys_chown), // 181
|
||||
|
||||
@ -2055,8 +2055,8 @@ const SyscallTableEntry ML_(syscall_table)[] = {
|
||||
LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo),// 178
|
||||
LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 179
|
||||
|
||||
GENXY(__NR_pread64, sys_pread64_on32bitplat), // 180
|
||||
GENX_(__NR_pwrite64, sys_pwrite64_on32bitplat), // 181
|
||||
GENXY(__NR_pread64, sys_pread64), // 180
|
||||
GENX_(__NR_pwrite64, sys_pwrite64), // 181
|
||||
LINX_(__NR_chown, sys_chown16), // 182
|
||||
GENXY(__NR_getcwd, sys_getcwd), // 183
|
||||
LINXY(__NR_capget, sys_capget), // 184
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user