diff --git a/core/runtime/procs.odin b/core/runtime/procs.odin index d3233c31b..c69e5b00a 100644 --- a/core/runtime/procs.odin +++ b/core/runtime/procs.odin @@ -1,7 +1,7 @@ package runtime -when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" { - @(link_name="memset", require) +when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || ODIN_NO_CRT { + @(link_name="memset", linkage="strong", require) memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr { if ptr != nil && len != 0 { b := byte(val) @@ -13,7 +13,7 @@ when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" { return ptr } - @(link_name="memmove", require) + @(link_name="memmove", linkage="strong", require) memmove :: proc "c" (dst, src: rawptr, len: int) -> rawptr { if dst != src { d, s := ([^]byte)(dst), ([^]byte)(src) @@ -25,32 +25,7 @@ when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" { return dst } -} else when ODIN_NO_CRT { - @(link_name="memset", linkage=RUNTIME_LINKAGE, require) - memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr { - if ptr != nil && len != 0 { - b := byte(val) - p := ([^]byte)(ptr) - for i in 0.. rawptr { - if dst != src { - d, s := ([^]byte)(dst), ([^]byte)(src) - d_end, s_end := d[len:], s[len:] - for i := len-1; i >= 0; i -= 1 { - d[i] = s[i] - } - } - return dst - - } - @(link_name="memcpy", linkage=RUNTIME_LINKAGE, require) + @(link_name="memcpy", linkage="strong", require) memcpy :: proc "c" (dst, src: rawptr, len: int) -> rawptr { if dst != src { d, s := ([^]byte)(dst), ([^]byte)(src)