authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-21 18:24:11-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-23 13:36:21-08:00
logf2ab9512af0154a291ce11ab0a1298fbf778d751
treefce5122f79698c8ad0838515f4dd30df76c23d3c
parent78ab1f609a4fb2514d8223e8ce6bf9195c01b5d6

std.valgrind: add helgrind functions


1 files changed, 76 insertions(+), 0 deletions(-)

lib/std/valgrind.zig+76
......@@ -80,6 +80,70 @@ pub const ClientRequest = extern enum {
8080 ChangeErrDisablement = 6145,
8181 VexInitForIri = 6401,
8282 InnerThreads = 6402,
83
84 CLEAN_MEMORY = 1212612608,
85 SET_MY_PTHREAD_T = 1212612864,
86 PTH_API_ERROR = 1212612865,
87 PTHREAD_JOIN_POST = 1212612866,
88 PTHREAD_MUTEX_INIT_POST = 1212612867,
89 PTHREAD_MUTEX_DESTROY_PRE = 1212612868,
90 PTHREAD_MUTEX_UNLOCK_PRE = 1212612869,
91 PTHREAD_MUTEX_UNLOCK_POST = 1212612870,
92 PTHREAD_MUTEX_ACQUIRE_PRE = 1212612871,
93 PTHREAD_MUTEX_ACQUIRE_POST = 1212612872,
94 PTHREAD_COND_SIGNAL_PRE = 1212612873,
95 PTHREAD_COND_BROADCAST_PRE = 1212612874,
96 PTHREAD_COND_WAIT_PRE = 1212612875,
97 PTHREAD_COND_WAIT_POST = 1212612876,
98 PTHREAD_COND_DESTROY_PRE = 1212612877,
99 PTHREAD_RWLOCK_INIT_POST = 1212612878,
100 PTHREAD_RWLOCK_DESTROY_PRE = 1212612879,
101 PTHREAD_RWLOCK_LOCK_PRE = 1212612880,
102 PTHREAD_RWLOCK_ACQUIRED = 1212612881,
103 PTHREAD_RWLOCK_RELEASED = 1212612882,
104 PTHREAD_RWLOCK_UNLOCK_POST = 1212612883,
105 POSIX_SEM_INIT_POST = 1212612884,
106 POSIX_SEM_DESTROY_PRE = 1212612885,
107 POSIX_SEM_RELEASED = 1212612886,
108 POSIX_SEM_ACQUIRED = 1212612887,
109 PTHREAD_BARRIER_INIT_PRE = 1212612888,
110 PTHREAD_BARRIER_WAIT_PRE = 1212612889,
111 PTHREAD_BARRIER_DESTROY_PRE = 1212612890,
112 PTHREAD_SPIN_INIT_OR_UNLOCK_PRE = 1212612891,
113 PTHREAD_SPIN_INIT_OR_UNLOCK_POST = 1212612892,
114 PTHREAD_SPIN_LOCK_PRE = 1212612893,
115 PTHREAD_SPIN_LOCK_POST = 1212612894,
116 PTHREAD_SPIN_DESTROY_PRE = 1212612895,
117 CLIENTREQ_UNIMP = 1212612896,
118 USERSO_SEND_PRE = 1212612897,
119 USERSO_RECV_POST = 1212612898,
120 USERSO_FORGET_ALL = 1212612899,
121 RESERVED2 = 1212612900,
122 RESERVED3 = 1212612901,
123 RESERVED4 = 1212612902,
124 ARANGE_MAKE_UNTRACKED = 1212612903,
125 ARANGE_MAKE_TRACKED = 1212612904,
126 PTHREAD_BARRIER_RESIZE_PRE = 1212612905,
127 CLEAN_MEMORY_HEAPBLOCK = 1212612906,
128 PTHREAD_COND_INIT_POST = 1212612907,
129 GNAT_MASTER_HOOK = 1212612908,
130 GNAT_MASTER_COMPLETED_HOOK = 1212612909,
131 GET_ABITS = 1212612910,
132 PTHREAD_CREATE_BEGIN = 1212612911,
133 PTHREAD_CREATE_END = 1212612912,
134 PTHREAD_MUTEX_LOCK_PRE = 1212612913,
135 PTHREAD_MUTEX_LOCK_POST = 1212612914,
136 PTHREAD_RWLOCK_LOCK_POST = 1212612915,
137 PTHREAD_RWLOCK_UNLOCK_PRE = 1212612916,
138 POSIX_SEM_POST_PRE = 1212612917,
139 POSIX_SEM_POST_POST = 1212612918,
140 POSIX_SEM_WAIT_PRE = 1212612919,
141 POSIX_SEM_WAIT_POST = 1212612920,
142 PTHREAD_COND_SIGNAL_POST = 1212612921,
143 PTHREAD_COND_BROADCAST_POST = 1212612922,
144 RTLD_BIND_GUARD = 1212612923,
145 RTLD_BIND_CLEAR = 1212612924,
146 GNAT_DEPENDENT_MASTER_JOIN = 1212612925,
83147};
84148pub fn ToolBase(base: [2]u8) u32 {
85149 return (@as(u32, base[0] & 0xff) << 24) | (@as(u32, base[1] & 0xff) << 16);
......@@ -259,6 +323,18 @@ pub fn monitorCommand(command: [*]u8) bool {
259323 return doClientRequestExpr(0, .GdbMonitorCommand, @ptrToInt(command.ptr), 0, 0, 0, 0) != 0;
260324}
261325
326pub fn annotateHappensBefore(obj: *c_void) void {
327 doClientRequestStmt(.USERSO_SEND_PRE, @ptrToInt(obj), 0, 0, 0, 0);
328}
329
330pub fn annotateHappensAfter(obj: *c_void) void {
331 doClientRequestStmt(.USERSO_RECV_POST, @ptrToInt(obj), 0, 0, 0, 0);
332}
333
334pub fn annotateHappensBeforeForgetAll(obj: *c_void) void {
335 doClientRequestStmt(.USERSO_FORGET_ALL, @ptrToInt(obj), 0, 0, 0, 0);
336}
337
262338pub const memcheck = @import("valgrind/memcheck.zig");
263339pub const callgrind = @import("valgrind/callgrind.zig");
264340