diff options
author | njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2009-06-10 22:58:27 +0000 |
---|---|---|
committer | njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2009-06-10 22:58:27 +0000 |
commit | a8f0629dd975d23637ea43f78e7a01a4220788bd (patch) | |
tree | 8769401bf2ba04532a2617cc11125f4ab7f81f3e /coregrind | |
parent | 5fd2814722565a7a5042ba9a691024d7095e31db (diff) | |
download | valgrind-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.h | 2 | ||||
-rw-r--r-- | coregrind/m_syswrap/syswrap-darwin.c | 17 |
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), |