27 lines
612 B
Nim
27 lines
612 B
Nim
# Rumpk Panic Override
|
|
# Required for Nim --os:any / --os:standalone
|
|
# This file must be named panicoverride.nim
|
|
|
|
{.push stackTrace: off.}
|
|
|
|
proc console_write(p: pointer, len: csize_t) {.importc, cdecl.}
|
|
proc rumpk_halt() {.importc, cdecl, noreturn.}
|
|
|
|
proc rawoutput(s: string) =
|
|
if s.len > 0:
|
|
console_write(unsafeAddr s[0], csize_t(s.len))
|
|
|
|
proc panic(s: cstring) {.exportc, noreturn.} =
|
|
rawoutput("[PANIC] ")
|
|
if s != nil:
|
|
var i = 0
|
|
while s[i] != '\0':
|
|
var buf: array[1, char]
|
|
buf[0] = s[i]
|
|
console_write(addr buf[0], 1)
|
|
inc i
|
|
rawoutput("\n")
|
|
rumpk_halt()
|
|
|
|
{.pop.}
|