Don't assert when trying to show a Darwin syscall number in an unknown

syscall class.  This stops Valgrind asserting when doing
--trace-syscalls=yes and a sys_syscall is encountered, in 64-bit mode.
I don't know if this is a correct fix or whether it merely hides
symptoms of logic handling problems for sys_syscall on Darwin.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11203
This commit is contained in:
Julian Seward 2010-07-01 11:15:32 +00:00
parent df1eec38c3
commit 78bbf452db

View File

@ -1163,12 +1163,11 @@ Char* VG_(sysnum_string)(Word sysnum, SizeT n_buf, Char* buf)
{
Char* classname = NULL;
switch (VG_DARWIN_SYSNO_CLASS(sysnum)) {
case VG_DARWIN_SYSCALL_CLASS_MACH: classname = "mach"; break;
case VG_DARWIN_SYSCALL_CLASS_UNIX: classname = "unix"; break;
case VG_DARWIN_SYSCALL_CLASS_MDEP: classname = "mdep"; break;
case VG_DARWIN_SYSCALL_CLASS_DIAG: classname = "diag"; break;
default:
VG_(core_panic)("unknown Darwin sysnum class");
case VG_DARWIN_SYSCALL_CLASS_MACH: classname = "mach"; break;
case VG_DARWIN_SYSCALL_CLASS_UNIX: classname = "unix"; break;
case VG_DARWIN_SYSCALL_CLASS_MDEP: classname = "mdep"; break;
case VG_DARWIN_SYSCALL_CLASS_DIAG: classname = "diag"; break;
default: classname = "UNKNOWN"; break;
}
VG_(snprintf)(buf, n_buf, "%s:%3ld",
classname, VG_DARWIN_SYSNO_INDEX(sysnum));