lin
2025-06-05 ed3dd9d3e7519a82bb871d5eedb24a2fa0c91f47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package runtime
 
const _PAGESIZE = 0x1000
 
type ureg struct {
   ax  uint64
   bx  uint64
   cx  uint64
   dx  uint64
   si  uint64
   di  uint64
   bp  uint64
   r8  uint64
   r9  uint64
   r10 uint64
   r11 uint64
   r12 uint64
   r13 uint64
   r14 uint64
   r15 uint64
 
   ds uint16
   es uint16
   fs uint16
   gs uint16
 
   _type uint64
   error uint64 /* error code (or zero) */
   ip    uint64 /* pc */
   cs    uint64 /* old context */
   flags uint64 /* old flags */
   sp    uint64 /* sp */
   ss    uint64 /* old stack segment */
}
 
type sigctxt struct {
   u *ureg
}
 
//go:nosplit
//go:nowritebarrierrec
func (c *sigctxt) pc() uintptr { return uintptr(c.u.ip) }
 
func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) }
func (c *sigctxt) lr() uintptr { return uintptr(0) }
 
func (c *sigctxt) setpc(x uintptr) { c.u.ip = uint64(x) }
func (c *sigctxt) setsp(x uintptr) { c.u.sp = uint64(x) }
func (c *sigctxt) setlr(x uintptr) {}
 
func (c *sigctxt) savelr(x uintptr) {}
 
func dumpregs(u *ureg) {
   print("ax    ", hex(u.ax), "\n")
   print("bx    ", hex(u.bx), "\n")
   print("cx    ", hex(u.cx), "\n")
   print("dx    ", hex(u.dx), "\n")
   print("di    ", hex(u.di), "\n")
   print("si    ", hex(u.si), "\n")
   print("bp    ", hex(u.bp), "\n")
   print("sp    ", hex(u.sp), "\n")
   print("r8    ", hex(u.r8), "\n")
   print("r9    ", hex(u.r9), "\n")
   print("r10   ", hex(u.r10), "\n")
   print("r11   ", hex(u.r11), "\n")
   print("r12   ", hex(u.r12), "\n")
   print("r13   ", hex(u.r13), "\n")
   print("r14   ", hex(u.r14), "\n")
   print("r15   ", hex(u.r15), "\n")
   print("ip    ", hex(u.ip), "\n")
   print("flags ", hex(u.flags), "\n")
   print("cs    ", hex(u.cs), "\n")
   print("fs    ", hex(u.fs), "\n")
   print("gs    ", hex(u.gs), "\n")
}
 
func sigpanictramp() {}