clang Memory Sanitizer build instrumentation was added to work around false
-positives from socket, time, test_io, and test_faulthandler.
+positives from posix, socket, time, test_io, and test_faulthandler.
#define HAVE_STRUCT_STAT_ST_FSTYPE 1
#endif
+#ifdef _Py_MEMORY_SANITIZER
+# include <sanitizer/msan_interface.h>
+#endif
+
#ifdef HAVE_FORK
static void
run_at_forkers(PyObject *lst, int reverse)
PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path->object);
goto exit;
}
+#ifdef _Py_MEMORY_SANITIZER
+ __msan_unpoison(&pid, sizeof(pid));
+#endif
result = PyLong_FromPid(pid);
exit:
posix_error();
return -1.0;
}
+#ifdef _Py_MEMORY_SANITIZER
+ __msan_unpoison(&interval, sizeof(interval));
+#endif
return (double)interval.tv_sec + 1e-9*interval.tv_nsec;
}
#endif /* HAVE_SCHED_RR_GET_INTERVAL */
return posix_error();
}
+#ifdef _Py_MEMORY_SANITIZER
+ /* Clang memory sanitizer libc intercepts don't know getgrouplist. */
+ __msan_unpoison(&ngroups, sizeof(ngroups));
+ __msan_unpoison(groups, ngroups*sizeof(*groups));
+#endif
+
list = PyList_New(ngroups);
if (list == NULL) {
PyMem_Del(groups);