Source file
src/runtime/valgrind.go
1
2
3
4
5
6
7 package runtime
8
9 import "unsafe"
10
11 const valgrindenabled = true
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 const (
42
43 vg_userreq__malloclike_block = 0x1301
44 vg_userreq__freelike_block = 0x1302
45 vg_userreq__create_mempool = 0x1303
46 vg_userreq__mempool_alloc = 0x1305
47 vg_userreq__mempool_free = 0x1306
48 vg_userreq__stack_register = 0x1501
49 vg_userreq__stack_deregister = 0x1502
50 vg_userreq__stack_change = 0x1503
51 )
52
53 const (
54
55
56 vg_userreq__make_mem_noaccess = iota + ('M'&0xff)<<24 | ('C'&0xff)<<16
57 vg_userreq__make_mem_undefined
58 vg_userreq__make_mem_defined
59 )
60
61 const (
62
63 valgrind_mempool_auto_free = 1
64 valgrind_mempool_metapool = 2
65 )
66
67
68
69
70 func valgrindClientRequest(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) uintptr
71
72
73 func valgrindRegisterStack(start, end unsafe.Pointer) uintptr {
74
75 return valgrindClientRequest(vg_userreq__stack_register, uintptr(start), uintptr(end), 0, 0, 0)
76 }
77
78
79 func valgrindDeregisterStack(id uintptr) {
80
81 valgrindClientRequest(vg_userreq__stack_deregister, id, 0, 0, 0, 0)
82 }
83
84
85 func valgrindChangeStack(id uintptr, start, end unsafe.Pointer) {
86
87 valgrindClientRequest(vg_userreq__stack_change, id, uintptr(start), uintptr(end), 0, 0)
88 }
89
90
91 func valgrindMalloc(addr unsafe.Pointer, size uintptr) {
92
93 valgrindClientRequest(vg_userreq__malloclike_block, uintptr(addr), size, 0, 1, 0)
94 }
95
96
97 func valgrindFree(addr unsafe.Pointer) {
98
99 valgrindClientRequest(vg_userreq__freelike_block, uintptr(addr), 0, 0, 0, 0)
100 }
101
102
103 func valgrindCreateMempool(addr unsafe.Pointer) {
104
105 valgrindClientRequest(vg_userreq__create_mempool, uintptr(addr), 0, 1, valgrind_mempool_auto_free|valgrind_mempool_metapool, 0)
106 }
107
108
109 func valgrindMempoolMalloc(pool, addr unsafe.Pointer, size uintptr) {
110
111 valgrindClientRequest(vg_userreq__mempool_alloc, uintptr(pool), uintptr(addr), size, 0, 0)
112 }
113
114
115 func valgrindMempoolFree(pool, addr unsafe.Pointer) {
116
117 valgrindClientRequest(vg_userreq__mempool_free, uintptr(pool), uintptr(addr), 0, 0, 0)
118 }
119
120
121
122
123 func valgrindMakeMemUndefined(addr unsafe.Pointer, size uintptr) {
124
125 valgrindClientRequest(vg_userreq__make_mem_undefined, uintptr(addr), size, 0, 0, 0)
126 }
127
128
129 func valgrindMakeMemDefined(addr unsafe.Pointer, size uintptr) {
130
131 valgrindClientRequest(vg_userreq__make_mem_defined, uintptr(addr), size, 0, 0, 0)
132 }
133
134
135 func valgrindMakeMemNoAccess(addr unsafe.Pointer, size uintptr) {
136
137 valgrindClientRequest(vg_userreq__make_mem_noaccess, uintptr(addr), size, 0, 0, 0)
138 }
139
View as plain text