aboutsummaryrefslogtreecommitdiff
path: root/coregrind
diff options
context:
space:
mode:
authornjn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9>2009-06-10 22:58:27 +0000
committernjn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9>2009-06-10 22:58:27 +0000
commita8f0629dd975d23637ea43f78e7a01a4220788bd (patch)
tree8769401bf2ba04532a2617cc11125f4ab7f81f3e /coregrind
parent5fd2814722565a7a5042ba9a691024d7095e31db (diff)
downloadvalgrind-a8f0629dd975d23637ea43f78e7a01a4220788bd.tar.gz
Added a wrapper and test for exchangedata() on Darwin. Fixes bug 195860.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10295 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'coregrind')
-rw-r--r--coregrind/m_syswrap/priv_syswrap-darwin.h2
-rw-r--r--coregrind/m_syswrap/syswrap-darwin.c17
2 files changed, 14 insertions, 5 deletions
diff --git a/coregrind/m_syswrap/priv_syswrap-darwin.h b/coregrind/m_syswrap/priv_syswrap-darwin.h
index 6e822523a..7b8642c0f 100644
--- a/coregrind/m_syswrap/priv_syswrap-darwin.h
+++ b/coregrind/m_syswrap/priv_syswrap-darwin.h
@@ -278,7 +278,7 @@ DECL_TEMPLATE(darwin, __sysctl); // 202
DECL_TEMPLATE(darwin, getattrlist); // 220
DECL_TEMPLATE(darwin, setattrlist); // 221
DECL_TEMPLATE(darwin, getdirentriesattr); // 222
-// NYI exchangedata 223
+DECL_TEMPLATE(darwin, exchangedata); // 223
// 224 checkuseraccess
// NYI searchfs 225
// GEN delete 226
diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c
index 20238def2..b1289b5c6 100644
--- a/coregrind/m_syswrap/syswrap-darwin.c
+++ b/coregrind/m_syswrap/syswrap-darwin.c
@@ -2002,8 +2002,8 @@ POST(fstat64)
PRE(getfsstat)
{
PRINT("getfsstat(%#lx, %ld, %ld)", ARG1, ARG2, ARG3);
- PRE_REG_READ3(int, "getfsstat", struct vki_statfs *, buf,
- int, bufsize, int, flags);
+ PRE_REG_READ3(int, "getfsstat",
+ struct vki_statfs *, buf, int, bufsize, int, flags);
if (ARG1) {
// ARG2 is a BYTE SIZE
PRE_MEM_WRITE("getfsstat", ARG1, ARG2);
@@ -2225,7 +2225,6 @@ PRE(getdirentriesattr)
PRE_MEM_WRITE("getdirentriesattr(basep)", ARG6, sizeof(unsigned int));
PRE_MEM_WRITE("getdirentriesattr(newState)", ARG7, sizeof(unsigned int));
}
-
POST(getdirentriesattr)
{
char *p, *end;
@@ -2251,6 +2250,16 @@ POST(getdirentriesattr)
}
+PRE(exchangedata)
+{
+ PRINT("exchangedata(%#lx(%s), %#lx(%s), %lu)",
+ ARG1, (char*)ARG1, ARG2, (char*)ARG2, ARG3);
+ PRE_REG_READ3(int, "exchangedata",
+ char *, path1, char *, path2, unsigned long, options);
+ PRE_MEM_RASCIIZ( "exchangedata(path1)", ARG1 );
+ PRE_MEM_RASCIIZ( "exchangedata(path2)", ARG2 );
+}
+
PRE(fsctl)
{
PRINT("fsctl ( %#lx(%s), %ld, %#lx, %ld )",
@@ -7168,7 +7177,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
MACXY(__NR_getattrlist, getattrlist), // 220
MACX_(__NR_setattrlist, setattrlist),
MACXY(__NR_getdirentriesattr, getdirentriesattr),
-// _____(__NR_exchangedata),
+ MACX_(__NR_exchangedata, exchangedata),
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(224)), // checkuseraccess
// _____(__NR_searchfs),
GENX_(__NR_delete, sys_unlink),