Bläddra i källkod

Remove dependency on runtime; Add to examples

Lucas Perlind 4 månader sedan
förälder
incheckning
5e985bcd74
2 ändrade filer med 11 tillägg och 23 borttagningar
  1. 9 23
      base/sanitizer/address.odin
  2. 2 0
      examples/all/all_main.odin

+ 9 - 23
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
 	}
 }
 

+ 2 - 0
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