nx_x86_open_diag_test.nx source
↩ module page · 25 lines · 933 B
1// nx_x86_open_diag_test.nx -- diagnose sys_openat on x86_64 native.
2
3import "nx_syscalls.nx"
4import "nx_tier.nx"
5
6func main() -> i64 {
7 let path: *u8 = sys_mmap(64)
8 path[0]=0x2F as u8; path[1]=0x74 as u8; path[2]=0x6D as u8; path[3]=0x70 as u8
9 path[4]=0x2F as u8; path[5]=0x6E as u8; path[6]=0x78 as u8; path[7]=0x5F as u8
10 path[8]=0x72 as u8; path[9]=0x65 as u8; path[10]=0x61 as u8; path[11]=0x6C as u8
11 path[12]=0x5F as u8; path[13]=0x6D as u8; path[14]=0x6F as u8; path[15]=0x64 as u8
12 path[16]=0x65 as u8; path[17]=0x6C as u8; path[18]=0x2E as u8
13 path[19]=0x67 as u8; path[20]=0x67 as u8; path[21]=0x75 as u8; path[22]=0x66 as u8
14 path[23]=0 as u8
15
16 let fd: i64 = sys_openat_rd(path)
17 if fd < 0 {
18 // Negative fd = -errno. Return as positive small value.
19 let err: i64 = 0 - fd
20 if err > 250 { return 250 }
21 return err as i64
22 }
23 sys_close(fd)
24 return 0
25}