Updated documentation
Signed-off-by: Github Action <ubpf@users.noreply.github.com>
diff --git a/ubpf_8h_source.html b/ubpf_8h_source.html
index 6dc21cc..3344e69 100644
--- a/ubpf_8h_source.html
+++ b/ubpf_8h_source.html
@@ -153,70 +153,73 @@
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#if defined(UBPF_HAS_ELF_H)</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">int</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  ubpf_load_elf(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keyword">const</span> <span class="keywordtype">void</span>* elf, <span class="keywordtype">size_t</span> elf_len, <span class="keywordtype">char</span>** errmsg);</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95"> 194</a></span>  <a class="code" href="ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95">ubpf_exec</a>(<span class="keyword">const</span> <span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* mem, <span class="keywordtype">size_t</span> mem_len, uint64_t* bpf_return_value);</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="ubpf_8h.html#a6334115c4408267ec35087ade6128fa0">ubpf_jit_fn</a></div>
-<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba"> 207</a></span>  <a class="code" href="ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba">ubpf_compile</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">char</span>** errmsg);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">/*</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment"> * Translate the eBPF byte code to x64 machine code, store in buffer, and</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment"> * write the resulting count of bytes to size.</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment"> * This must be called after registering all functions.</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="comment"> * Returns 0 on success, -1 on error. In case of error a pointer to the error</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment"> * message will be stored in 'errmsg' and should be freed by the caller.</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment"> */</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="ubpf_8h.html#ab34e26c0a46366345df354ce992448c4"> 233</a></span>  <a class="code" href="ubpf_8h.html#ab34e26c0a46366345df354ce992448c4">ubpf_translate</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint8_t* buffer, <span class="keywordtype">size_t</span>* size, <span class="keywordtype">char</span>** errmsg);</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3"> 247</a></span>  <a class="code" href="ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3">ubpf_set_unwind_function_index</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx);</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">void</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f"> 256</a></span>  <a class="code" href="ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f">ubpf_set_registers</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint64_t* regs);</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  uint64_t*</div>
-<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4"> 265</a></span>  <a class="code" href="ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4">ubpf_get_registers</a>(<span class="keyword">const</span> <span class="keyword">struct</span> ubpf_vm* vm);</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  </div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701"> 276</a></span>  <a class="code" href="ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701">ubpf_set_pointer_secret</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint64_t secret);</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div>
-<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391"> 290</a></span>  <span class="keyword">typedef</span> uint64_t (*<a class="code" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a>)(</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordtype">void</span>* user_context,</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> uint8_t* data,</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  uint64_t data_size,</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* symbol_name,</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  uint64_t symbol_offset,</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  uint64_t symbol_size);</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  </div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611"> 306</a></span>  <a class="code" href="ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611">ubpf_register_data_relocation</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* user_context, <a class="code" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a> relocation);</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div>
-<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699"> 308</a></span>  <span class="keyword">typedef</span> bool (*<a class="code" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a>)(<span class="keywordtype">void</span>* context, uint64_t addr, uint64_t size);</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  </div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">int</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03"> 320</a></span>  <a class="code" href="ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03">ubpf_register_data_bounds_check</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* user_context, <a class="code" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a> bounds_check);</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  </div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  </div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  ubpf_load_elf_ex(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keyword">const</span> <span class="keywordtype">void</span>* elf, <span class="keywordtype">size_t</span> elf_len, <span class="keyword">const</span> <span class="keywordtype">char</span>* main_section_name, <span class="keywordtype">char</span>** errmsg);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95"> 219</a></span>  <a class="code" href="ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95">ubpf_exec</a>(<span class="keyword">const</span> <span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* mem, <span class="keywordtype">size_t</span> mem_len, uint64_t* bpf_return_value);</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  </div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="ubpf_8h.html#a6334115c4408267ec35087ade6128fa0">ubpf_jit_fn</a></div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba"> 232</a></span>  <a class="code" href="ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba">ubpf_compile</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">char</span>** errmsg);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">/*</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment"> * Translate the eBPF byte code to x64 machine code, store in buffer, and</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment"> * write the resulting count of bytes to size.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"> * This must be called after registering all functions.</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment"> * Returns 0 on success, -1 on error. In case of error a pointer to the error</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment"> * message will be stored in 'errmsg' and should be freed by the caller.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  </div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="ubpf_8h.html#ab34e26c0a46366345df354ce992448c4"> 258</a></span>  <a class="code" href="ubpf_8h.html#ab34e26c0a46366345df354ce992448c4">ubpf_translate</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint8_t* buffer, <span class="keywordtype">size_t</span>* size, <span class="keywordtype">char</span>** errmsg);</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3"> 272</a></span>  <a class="code" href="ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3">ubpf_set_unwind_function_index</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx);</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  </div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f"> 281</a></span>  <a class="code" href="ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f">ubpf_set_registers</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint64_t* regs);</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  uint64_t*</div>
+<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4"> 290</a></span>  <a class="code" href="ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4">ubpf_get_registers</a>(<span class="keyword">const</span> <span class="keyword">struct</span> ubpf_vm* vm);</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701"> 301</a></span>  <a class="code" href="ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701">ubpf_set_pointer_secret</a>(<span class="keyword">struct</span> ubpf_vm* vm, uint64_t secret);</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391"> 315</a></span>  <span class="keyword">typedef</span> uint64_t (*<a class="code" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a>)(</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">void</span>* user_context,</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> uint8_t* data,</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  uint64_t data_size,</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* symbol_name,</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  uint64_t symbol_offset,</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  uint64_t symbol_size);</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611"> 331</a></span>  <a class="code" href="ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611">ubpf_register_data_relocation</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* user_context, <a class="code" href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a> relocation);</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div>
+<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699"> 333</a></span>  <span class="keyword">typedef</span> bool (*<a class="code" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a>)(<span class="keywordtype">void</span>* context, uint64_t addr, uint64_t size);</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  </div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">int</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03"> 345</a></span>  <a class="code" href="ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03">ubpf_register_data_bounds_check</a>(<span class="keyword">struct</span> ubpf_vm* vm, <span class="keywordtype">void</span>* user_context, <a class="code" href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a> bounds_check);</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  </div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#endif</span></div>
<div class="ttc" id="aubpf_8h_html_a0046484ecdb72363d0c5ae710e7b96c3"><div class="ttname"><a href="ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3">ubpf_set_unwind_function_index</a></div><div class="ttdeci">int ubpf_set_unwind_function_index(struct ubpf_vm *vm, unsigned int idx)</div><div class="ttdoc">Instruct the uBPF runtime to apply unwind-on-success semantics to a helper function....</div></div>
<div class="ttc" id="aubpf_8h_html_a1ce3eb22d45ec43436758a139ffc8c95"><div class="ttname"><a href="ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95">ubpf_exec</a></div><div class="ttdeci">int ubpf_exec(const struct ubpf_vm *vm, void *mem, size_t mem_len, uint64_t *bpf_return_value)</div><div class="ttdoc">Execute a BPF program in the VM using the interpreter.</div></div>
<div class="ttc" id="aubpf_8h_html_a286aa9da7688d1327756e967eafc2f03"><div class="ttname"><a href="ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03">ubpf_register_data_bounds_check</a></div><div class="ttdeci">int ubpf_register_data_bounds_check(struct ubpf_vm *vm, void *user_context, ubpf_bounds_check bounds_check)</div><div class="ttdoc">Set a bounds check function for the VM.</div></div>
<div class="ttc" id="aubpf_8h_html_a2e649a921bff795712a97d3ad849f6e4"><div class="ttname"><a href="ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4">ubpf_get_registers</a></div><div class="ttdeci">uint64_t * ubpf_get_registers(const struct ubpf_vm *vm)</div><div class="ttdoc">Retrieve the storage location for the BPF registers in the VM.</div></div>
<div class="ttc" id="aubpf_8h_html_a3257e0611c177eeaba7053e2eca92701"><div class="ttname"><a href="ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701">ubpf_set_pointer_secret</a></div><div class="ttdeci">int ubpf_set_pointer_secret(struct ubpf_vm *vm, uint64_t secret)</div><div class="ttdoc">Optional secret to improve ROP protection.</div></div>
<div class="ttc" id="aubpf_8h_html_a6334115c4408267ec35087ade6128fa0"><div class="ttname"><a href="ubpf_8h.html#a6334115c4408267ec35087ade6128fa0">ubpf_jit_fn</a></div><div class="ttdeci">uint64_t(* ubpf_jit_fn)(void *mem, size_t mem_len)</div><div class="ttdoc">Opaque type for a uBPF JIT compiled function.</div><div class="ttdef"><b>Definition:</b> ubpf.h:64</div></div>
-<div class="ttc" id="aubpf_8h_html_a64bd2f640f675e3eeff48ea52583d699"><div class="ttname"><a href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a></div><div class="ttdeci">bool(* ubpf_bounds_check)(void *context, uint64_t addr, uint64_t size)</div><div class="ttdef"><b>Definition:</b> ubpf.h:308</div></div>
+<div class="ttc" id="aubpf_8h_html_a64bd2f640f675e3eeff48ea52583d699"><div class="ttname"><a href="ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699">ubpf_bounds_check</a></div><div class="ttdeci">bool(* ubpf_bounds_check)(void *context, uint64_t addr, uint64_t size)</div><div class="ttdef"><b>Definition:</b> ubpf.h:333</div></div>
<div class="ttc" id="aubpf_8h_html_a67b901bf6d169b6b28f818f15bd17cba"><div class="ttname"><a href="ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba">ubpf_compile</a></div><div class="ttdeci">ubpf_jit_fn ubpf_compile(struct ubpf_vm *vm, char **errmsg)</div><div class="ttdoc">Compile a BPF program in the VM to native code.</div></div>
<div class="ttc" id="aubpf_8h_html_a6ce8c1133902da4629c53aa82c159611"><div class="ttname"><a href="ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611">ubpf_register_data_relocation</a></div><div class="ttdeci">int ubpf_register_data_relocation(struct ubpf_vm *vm, void *user_context, ubpf_data_relocation relocation)</div><div class="ttdoc">Set a relocation function for the VM.</div></div>
-<div class="ttc" id="aubpf_8h_html_a70fb644d080e8448c1db17bb99858391"><div class="ttname"><a href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a></div><div class="ttdeci">uint64_t(* ubpf_data_relocation)(void *user_context, const uint8_t *data, uint64_t data_size, const char *symbol_name, uint64_t symbol_offset, uint64_t symbol_size)</div><div class="ttdoc">Data relocation function that is called by the VM when it encounters a R_BPF_64_64 relocation in the ...</div><div class="ttdef"><b>Definition:</b> ubpf.h:290</div></div>
+<div class="ttc" id="aubpf_8h_html_a70fb644d080e8448c1db17bb99858391"><div class="ttname"><a href="ubpf_8h.html#a70fb644d080e8448c1db17bb99858391">ubpf_data_relocation</a></div><div class="ttdeci">uint64_t(* ubpf_data_relocation)(void *user_context, const uint8_t *data, uint64_t data_size, const char *symbol_name, uint64_t symbol_offset, uint64_t symbol_size)</div><div class="ttdoc">Data relocation function that is called by the VM when it encounters a R_BPF_64_64 relocation in the ...</div><div class="ttdef"><b>Definition:</b> ubpf.h:315</div></div>
<div class="ttc" id="aubpf_8h_html_a80938918080712ac0667359fd163f1a5"><div class="ttname"><a href="ubpf_8h.html#a80938918080712ac0667359fd163f1a5">ubpf_toggle_bounds_check</a></div><div class="ttdeci">bool ubpf_toggle_bounds_check(struct ubpf_vm *vm, bool enable)</div><div class="ttdoc">Enable / disable bounds_check. Bounds check is enabled by default, but it may be too restrictive.</div></div>
<div class="ttc" id="aubpf_8h_html_a845988047e3c2fe9713e2f8a404d0751"><div class="ttname"><a href="ubpf_8h.html#a845988047e3c2fe9713e2f8a404d0751">ubpf_create</a></div><div class="ttdeci">struct ubpf_vm * ubpf_create(void)</div><div class="ttdoc">Create a new uBPF VM.</div></div>
<div class="ttc" id="aubpf_8h_html_a8d32748c100c98d69dba8dcf0e9d4d0d"><div class="ttname"><a href="ubpf_8h.html#a8d32748c100c98d69dba8dcf0e9d4d0d">ubpf_load</a></div><div class="ttdeci">int ubpf_load(struct ubpf_vm *vm, const void *code, uint32_t code_len, char **errmsg)</div><div class="ttdoc">Load code into a VM. This must be done before calling ubpf_exec or ubpf_compile and after registering...</div></div>