aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-12-21 18:24:11 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-12-23 13:36:21 -0800
commitf2ab9512af0154a291ce11ab0a1298fbf778d751 (patch)
treefce5122f79698c8ad0838515f4dd30df76c23d3c /lib/std
parent78ab1f609a4fb2514d8223e8ce6bf9195c01b5d6 (diff)
downloadzig-f2ab9512af0154a291ce11ab0a1298fbf778d751.tar.gz
zig-f2ab9512af0154a291ce11ab0a1298fbf778d751.zip
std.valgrind: add helgrind functions
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/valgrind.zig76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/std/valgrind.zig b/lib/std/valgrind.zig
index 5373a2d513..e1a99e3083 100644
--- a/lib/std/valgrind.zig
+++ b/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");