|
From: <sv...@va...> - 2011-04-27 19:04:40
|
Author: rjwalsh
Date: 2011-04-27 20:04:31 +0100 (Wed, 27 Apr 2011)
New Revision: 11714
Log:
Fix no-arg ioctls on Darwin.
Modified:
trunk/coregrind/
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/exp-dhat/
trunk/exp-ptrcheck/
Property changes on: trunk/coregrind
___________________________________________________________________
Name: svn:ignore
- *.a
*.dSYM
*.so
.deps
link_tool_exe_aix5
link_tool_exe_darwin
link_tool_exe_linux
Makefile
Makefile.in
no_op_client_for_valgrind
stage2
stage2.lds
valgrind
vgpreload_core-x86-darwin.so.dSYM
vg_intercept.c
vg_replace_malloc.c
vg_toolint.c
vg_toolint.h
+ *.a
*.dSYM
*.so
.deps
link_tool_exe_aix5
link_tool_exe_darwin
link_tool_exe_linux
Makefile
Makefile.in
no_op_client_for_valgrind
stage2
stage2.lds
valgrind
vgpreload_core-x86-darwin.so.dSYM
vg_intercept.c
vg_replace_malloc.c
vg_toolint.c
vg_toolint.h
fixup_macho_loadcmds
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c 2011-04-27 12:00:51 UTC (rev 11713)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c 2011-04-27 19:04:31 UTC (rev 11714)
@@ -690,11 +690,25 @@
PRE(ioctl)
{
*flags |= SfMayBlock;
- PRINT("ioctl ( %ld, 0x%lx, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "ioctl",
- unsigned int, fd, unsigned int, request, unsigned long, arg);
+ /* Handle ioctls that don't take an arg first */
switch (ARG2 /* request */) {
+ case VKI_TIOCSCTTY:
+ case VKI_TIOCEXCL:
+ case VKI_TIOCPTYGRANT:
+ case VKI_TIOCPTYUNLK:
+ case VKI_DTRACEHIOC_REMOVE:
+ PRINT("ioctl ( %ld, 0x%lx )",ARG1,ARG2);
+ PRE_REG_READ2(long, "ioctl",
+ unsigned int, fd, unsigned int, request);
+ return;
+ default:
+ PRINT("ioctl ( %ld, 0x%lx, %#lx )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "ioctl",
+ unsigned int, fd, unsigned int, request, unsigned long, arg);
+ }
+
+ switch (ARG2 /* request */) {
case VKI_TIOCGWINSZ:
PRE_MEM_WRITE( "ioctl(TIOCGWINSZ)", ARG3, sizeof(struct vki_winsize) );
break;
@@ -721,9 +735,6 @@
/* Set a process group ID? */
PRE_MEM_WRITE( "ioctl(TIOCGPGRP)", ARG3, sizeof(vki_pid_t) );
break;
- case VKI_TIOCSCTTY:
- /* Just takes an int value. */
- break;
case VKI_FIONBIO:
PRE_MEM_READ( "ioctl(FIONBIO)", ARG3, sizeof(int) );
break;
@@ -846,7 +857,6 @@
PRE_MEM_WRITE( "ioctl(FIONREAD)", ARG3, sizeof(int) );
break;
- case VKI_DTRACEHIOC_REMOVE:
case VKI_DTRACEHIOC_ADDDOF:
break;
@@ -866,9 +876,6 @@
case VKI_TIOCPTYGNAME:
PRE_MEM_WRITE( "ioctl(TIOCPTYGNAME)", ARG3, 128 );
break;
- case VKI_TIOCPTYGRANT:
- case VKI_TIOCPTYUNLK:
- break;
default:
ML_(PRE_unknown_ioctl)(tid, ARG2, ARG3);
Property changes on: trunk/exp-dhat
___________________________________________________________________
Name: svn:ignore
- *.dSYM
.deps
exp-dhat-*-darwin
exp-dhat-*-linux
Makefile
Makefile.in
vgpreload_exp-dhat-*-linux.so
+ *.dSYM
.deps
exp-dhat-*-darwin
exp-dhat-*-linux
Makefile
Makefile.in
vgpreload_exp-dhat-*-linux.so
vgpreload_exp-dhat-*-darwin.so
Property changes on: trunk/exp-ptrcheck
___________________________________________________________________
Name: svn:ignore
- *.dSYM
.deps
exp-ptrcheck-*-darwin
exp-ptrcheck-*-linux
Makefile
Makefile.in
preen_invars
vgpreload_exp-ptrcheck-*-linux.so
vgpreload_exp-ptrcheck-x86-darwin.so
vgpreload_exp-ptrcheck-x86-darwin.so.dSYM
+ *.dSYM
.deps
exp-ptrcheck-*-darwin
exp-ptrcheck-*-linux
Makefile
Makefile.in
preen_invars
vgpreload_exp-ptrcheck-*-linux.so
vgpreload_exp-ptrcheck-*-darwin.so
vgpreload_exp-ptrcheck-*-darwin.so.dSYM
|