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}