aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorLucas Perlind <perlindluca@gmail.com>2025-04-24 20:33:08 +1000
committerLucas Perlind <perlindluca@gmail.com>2025-04-24 20:34:32 +1000
commit5e985bcd748cabd3b09f00372ffbcfdb8b7cd550 (patch)
treee9c9173b415c582ed46b454745d6ca28a3be6148 /base
parent5c117bde6de7affac2a07d531e8bd75b007043fb (diff)
Remove dependency on runtime; Add to examples
Diffstat (limited to 'base')
-rw-r--r--base/sanitizer/address.odin32
1 files changed, 9 insertions, 23 deletions
diff --git a/base/sanitizer/address.odin b/base/sanitizer/address.odin
index e95348bfd..43c04a15d 100644
--- a/base/sanitizer/address.odin
+++ b/base/sanitizer/address.odin
@@ -1,8 +1,6 @@
#+no-instrumentation
package sanitizer
-import "base:runtime"
-
Address_Death_Callback :: #type proc "c" (pc: rawptr, bp: rawptr, sp: rawptr, addr: rawptr, is_write: i32, access_size: uint)
@(private="file")
@@ -217,46 +215,34 @@ address_get_report_description :: proc "contextless" () -> string {
}
}
-address_locate_address :: proc (addr: rawptr, allocator: runtime.Allocator, string_alloc_size := 64) -> (Address_Located_Address_String, []byte, runtime.Allocator_Error) {
+address_locate_address :: proc "contextless" (addr: rawptr, data: []byte) -> (Address_Located_Address_String, []byte) {
when ASAN_ENABLED {
- data, err := make([]byte, string_alloc_size, allocator)
- if err != nil {
- return { "", "" }, {}, err
- }
out_addr: rawptr
out_size: uint
str := __asan_locate_address(addr, raw_data(data), len(data), &out_addr, &out_size)
- return { string(str), string(cstring(raw_data(data))) }, (cast([^]byte)out_addr)[:out_size], nil
+ return { string(str), string(cstring(raw_data(data))) }, (cast([^]byte)out_addr)[:out_size]
} else {
- return { "", "" }, {}, nil
+ return { "", "" }, {}
}
}
-address_get_alloc_stack_trace :: proc (addr: rawptr, allocator: runtime.Allocator, stack_alloc_size := 32) -> ([]rawptr, int, runtime.Allocator_Error) {
+address_get_alloc_stack_trace :: proc "contextless" (addr: rawptr, data: []rawptr) -> ([]rawptr, int) {
when ASAN_ENABLED {
- data, err := make([]rawptr, stack_alloc_size, allocator)
- if err != nil {
- return {}, 0, err
- }
out_thread: i32
__asan_get_alloc_stack(addr, raw_data(data), len(data), &out_thread)
- return data, int(out_thread), nil
+ return data, int(out_thread)
} else {
- return {}, 0, nil
+ return {}, 0
}
}
-address_get_free_stack_trace :: proc (addr: rawptr, allocator: runtime.Allocator, stack_alloc_size := 32) -> ([]rawptr, int, runtime.Allocator_Error) {
+address_get_free_stack_trace :: proc "contextless" (addr: rawptr, data: []rawptr) -> ([]rawptr, int) {
when ASAN_ENABLED {
- data, err := make([]rawptr, stack_alloc_size, allocator)
- if err != nil {
- return {}, 0, err
- }
out_thread: i32
__asan_get_free_stack(addr, raw_data(data), len(data), &out_thread)
- return data, int(out_thread), nil
+ return data, int(out_thread)
} else {
- return {}, 0, nil
+ return {}, 0
}
}