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 } } diff --git a/examples/all/all_main.odin b/examples/all/all_main.odin index 0e7648f96..0a17227b8 100644 --- a/examples/all/all_main.odin +++ b/examples/all/all_main.odin @@ -118,6 +118,7 @@ import relative "core:relative" import reflect "core:reflect" import runtime "base:runtime" +import sanitizer "base:sanitizer" import simd "core:simd" import x86 "core:simd/x86" import slice "core:slice" @@ -275,3 +276,4 @@ _ :: uuid_legacy _ :: utf8 _ :: utf8string _ :: utf16 +_ :: sanitizer