Commit f2ab9512af

Andrew Kelley <andrew@ziglang.org>
2020-12-22 02:24:11
std.valgrind: add helgrind functions
1 parent 78ab1f6
Changed files (1)
lib
lib/std/valgrind.zig
@@ -80,6 +80,70 @@ pub const ClientRequest = extern enum {
     ChangeErrDisablement = 6145,
     VexInitForIri = 6401,
     InnerThreads = 6402,
+
+    CLEAN_MEMORY = 1212612608,
+    SET_MY_PTHREAD_T = 1212612864,
+    PTH_API_ERROR = 1212612865,
+    PTHREAD_JOIN_POST = 1212612866,
+    PTHREAD_MUTEX_INIT_POST = 1212612867,
+    PTHREAD_MUTEX_DESTROY_PRE = 1212612868,
+    PTHREAD_MUTEX_UNLOCK_PRE = 1212612869,
+    PTHREAD_MUTEX_UNLOCK_POST = 1212612870,
+    PTHREAD_MUTEX_ACQUIRE_PRE = 1212612871,
+    PTHREAD_MUTEX_ACQUIRE_POST = 1212612872,
+    PTHREAD_COND_SIGNAL_PRE = 1212612873,
+    PTHREAD_COND_BROADCAST_PRE = 1212612874,
+    PTHREAD_COND_WAIT_PRE = 1212612875,
+    PTHREAD_COND_WAIT_POST = 1212612876,
+    PTHREAD_COND_DESTROY_PRE = 1212612877,
+    PTHREAD_RWLOCK_INIT_POST = 1212612878,
+    PTHREAD_RWLOCK_DESTROY_PRE = 1212612879,
+    PTHREAD_RWLOCK_LOCK_PRE = 1212612880,
+    PTHREAD_RWLOCK_ACQUIRED = 1212612881,
+    PTHREAD_RWLOCK_RELEASED = 1212612882,
+    PTHREAD_RWLOCK_UNLOCK_POST = 1212612883,
+    POSIX_SEM_INIT_POST = 1212612884,
+    POSIX_SEM_DESTROY_PRE = 1212612885,
+    POSIX_SEM_RELEASED = 1212612886,
+    POSIX_SEM_ACQUIRED = 1212612887,
+    PTHREAD_BARRIER_INIT_PRE = 1212612888,
+    PTHREAD_BARRIER_WAIT_PRE = 1212612889,
+    PTHREAD_BARRIER_DESTROY_PRE = 1212612890,
+    PTHREAD_SPIN_INIT_OR_UNLOCK_PRE = 1212612891,
+    PTHREAD_SPIN_INIT_OR_UNLOCK_POST = 1212612892,
+    PTHREAD_SPIN_LOCK_PRE = 1212612893,
+    PTHREAD_SPIN_LOCK_POST = 1212612894,
+    PTHREAD_SPIN_DESTROY_PRE = 1212612895,
+    CLIENTREQ_UNIMP = 1212612896,
+    USERSO_SEND_PRE = 1212612897,
+    USERSO_RECV_POST = 1212612898,
+    USERSO_FORGET_ALL = 1212612899,
+    RESERVED2 = 1212612900,
+    RESERVED3 = 1212612901,
+    RESERVED4 = 1212612902,
+    ARANGE_MAKE_UNTRACKED = 1212612903,
+    ARANGE_MAKE_TRACKED = 1212612904,
+    PTHREAD_BARRIER_RESIZE_PRE = 1212612905,
+    CLEAN_MEMORY_HEAPBLOCK = 1212612906,
+    PTHREAD_COND_INIT_POST = 1212612907,
+    GNAT_MASTER_HOOK = 1212612908,
+    GNAT_MASTER_COMPLETED_HOOK = 1212612909,
+    GET_ABITS = 1212612910,
+    PTHREAD_CREATE_BEGIN = 1212612911,
+    PTHREAD_CREATE_END = 1212612912,
+    PTHREAD_MUTEX_LOCK_PRE = 1212612913,
+    PTHREAD_MUTEX_LOCK_POST = 1212612914,
+    PTHREAD_RWLOCK_LOCK_POST = 1212612915,
+    PTHREAD_RWLOCK_UNLOCK_PRE = 1212612916,
+    POSIX_SEM_POST_PRE = 1212612917,
+    POSIX_SEM_POST_POST = 1212612918,
+    POSIX_SEM_WAIT_PRE = 1212612919,
+    POSIX_SEM_WAIT_POST = 1212612920,
+    PTHREAD_COND_SIGNAL_POST = 1212612921,
+    PTHREAD_COND_BROADCAST_POST = 1212612922,
+    RTLD_BIND_GUARD = 1212612923,
+    RTLD_BIND_CLEAR = 1212612924,
+    GNAT_DEPENDENT_MASTER_JOIN = 1212612925,
 };
 pub fn ToolBase(base: [2]u8) u32 {
     return (@as(u32, base[0] & 0xff) << 24) | (@as(u32, base[1] & 0xff) << 16);
@@ -259,6 +323,18 @@ pub fn monitorCommand(command: [*]u8) bool {
     return doClientRequestExpr(0, .GdbMonitorCommand, @ptrToInt(command.ptr), 0, 0, 0, 0) != 0;
 }
 
+pub fn annotateHappensBefore(obj: *c_void) void {
+    doClientRequestStmt(.USERSO_SEND_PRE, @ptrToInt(obj), 0, 0, 0, 0);
+}
+
+pub fn annotateHappensAfter(obj: *c_void) void {
+    doClientRequestStmt(.USERSO_RECV_POST, @ptrToInt(obj), 0, 0, 0, 0);
+}
+
+pub fn annotateHappensBeforeForgetAll(obj: *c_void) void {
+    doClientRequestStmt(.USERSO_FORGET_ALL, @ptrToInt(obj), 0, 0, 0, 0);
+}
+
 pub const memcheck = @import("valgrind/memcheck.zig");
 pub const callgrind = @import("valgrind/callgrind.zig");