code wiki / (root) / nx_static_diag.nx

nx_static_diag.nx source

↩ module page · 21 lines · 943 B

1// pinpoint: 3 static pointers, each = a distinct mmap, deref-written, read back. Shows aliasing + per-deref. 2import "nx_syscalls.nx" 3static sa: *i64 4static sb: *i64 5static sc: *i64 6func main() -> i64 { 7 sa = sys_mmap(64) as *i64 8 sb = sys_mmap(64) as *i64 9 sc = sys_mmap(64) as *i64 10 if (sa as i64) == (sb as i64) { sys_write(1, "SA_EQ_SB\n" as *u8, 9) } 11 if (sb as i64) == (sc as i64) { sys_write(1, "SB_EQ_SC\n" as *u8, 9) } 12 if (sa as i64) != (sb as i64) { if (sb as i64) != (sc as i64) { sys_write(1, "PTRS_DISTINCT\n" as *u8, 14) } } 13 sa[0] = 10 14 sb[0] = 20 15 sc[0] = 30 16 if sa[0] == 10 { sys_write(1, "SA0_10\n" as *u8, 7) } else { sys_write(1, "SA0_BAD\n" as *u8, 8) } 17 if sb[0] == 20 { sys_write(1, "SB0_20\n" as *u8, 7) } else { sys_write(1, "SB0_BAD\n" as *u8, 8) } 18 if sc[0] == 30 { sys_write(1, "SC0_30\n" as *u8, 7) } else { sys_write(1, "SC0_BAD\n" as *u8, 8) } 19 sys_exit(0) 20 return 0 21}