ckb_gdb_remote_protocol/
sigs.rs

1use num_derive::FromPrimitive;
2
3#[repr(u8)]
4#[derive(FromPrimitive)]
5#[allow(missing_docs)]
6/// All signals that GDB define. These are cross-platform numbers.
7// Obtained from binutils-gdb include/gdb/signals.def
8pub enum Signal {
9    ZERO = 0,
10    SIGHUP = 1,
11    SIGINT = 2,
12    SIGQUIT = 3,
13    SIGILL = 4,
14    SIGTRAP = 5,
15    SIGABRT = 6,
16    SIGEMT = 7,
17    SIGFPE = 8,
18    SIGKILL = 9,
19    SIGBUS = 10,
20    SIGSEGV = 11,
21    SIGSYS = 12,
22    SIGPIPE = 13,
23    SIGALRM = 14,
24    SIGTERM = 15,
25    SIGURG = 16,
26    SIGSTOP = 17,
27    SIGTSTP = 18,
28    SIGCONT = 19,
29    SIGCHLD = 20,
30    SIGTTIN = 21,
31    SIGTTOU = 22,
32    SIGIO = 23,
33    SIGXCPU = 24,
34    SIGXFSZ = 25,
35    SIGVTALRM = 26,
36    SIGPROF = 27,
37    SIGWINCH = 28,
38    SIGLOST = 29,
39    SIGUSR1 = 30,
40    SIGUSR2 = 31,
41    SIGPWR = 32,
42    SIGPOLL = 33,
43    SIGWIND = 34,
44    SIGPHONE = 35,
45    SIGWAITING = 36,
46    SIGLWP = 37,
47    SIGDANGER = 38,
48    SIGGRANT = 39,
49    SIGRETRACT = 40,
50    SIGMSG = 41,
51    SIGSOUND = 42,
52    SIGSAK = 43,
53    SIGPRIO = 44,
54    SIG33 = 45,
55    SIG34 = 46,
56    SIG35 = 47,
57    SIG36 = 48,
58    SIG37 = 49,
59    SIG38 = 50,
60    SIG39 = 51,
61    SIG40 = 52,
62    SIG41 = 53,
63    SIG42 = 54,
64    SIG43 = 55,
65    SIG44 = 56,
66    SIG45 = 57,
67    SIG46 = 58,
68    SIG47 = 59,
69    SIG48 = 60,
70    SIG49 = 61,
71    SIG50 = 62,
72    SIG51 = 63,
73    SIG52 = 64,
74    SIG53 = 65,
75    SIG54 = 66,
76    SIG55 = 67,
77    SIG56 = 68,
78    SIG57 = 69,
79    SIG58 = 70,
80    SIG59 = 71,
81    SIG60 = 72,
82    SIG61 = 73,
83    SIG62 = 74,
84    SIG63 = 75,
85    SIGCANCEL = 76,
86    SIG32 = 77,
87    SIG64 = 78,
88    SIG65 = 79,
89    SIG66 = 80,
90    SIG67 = 81,
91    SIG68 = 82,
92    SIG69 = 83,
93    SIG70 = 84,
94    SIG71 = 85,
95    SIG72 = 86,
96    SIG73 = 87,
97    SIG74 = 88,
98    SIG75 = 89,
99    SIG76 = 90,
100    SIG77 = 91,
101    SIG78 = 92,
102    SIG79 = 93,
103    SIG80 = 94,
104    SIG81 = 95,
105    SIG82 = 96,
106    SIG83 = 97,
107    SIG84 = 98,
108    SIG85 = 99,
109    SIG86 = 100,
110    SIG87 = 101,
111    SIG88 = 102,
112    SIG89 = 103,
113    SIG90 = 104,
114    SIG91 = 105,
115    SIG92 = 106,
116    SIG93 = 107,
117    SIG94 = 108,
118    SIG95 = 109,
119    SIG96 = 110,
120    SIG97 = 111,
121    SIG98 = 112,
122    SIG99 = 113,
123    SIG100 = 114,
124    SIG101 = 115,
125    SIG102 = 116,
126    SIG103 = 117,
127    SIG104 = 118,
128    SIG105 = 119,
129    SIG106 = 120,
130    SIG107 = 121,
131    SIG108 = 122,
132    SIG109 = 123,
133    SIG110 = 124,
134    SIG111 = 125,
135    SIG112 = 126,
136    SIG113 = 127,
137    SIG114 = 128,
138    SIG115 = 129,
139    SIG116 = 130,
140    SIG117 = 131,
141    SIG118 = 132,
142    SIG119 = 133,
143    SIG120 = 134,
144    SIG121 = 135,
145    SIG122 = 136,
146    SIG123 = 137,
147    SIG124 = 138,
148    SIG125 = 139,
149    SIG126 = 140,
150    SIG127 = 141,
151}
152
153impl Signal {
154    /// Convert platform-specific libc signal to cross-platfrom GDB signals
155    #[cfg(feature = "libc")]
156    pub fn from_libc(sig: libc::c_int) -> Option<Self> {
157        match sig {
158            libc::SIGHUP => Some(Self::SIGHUP),
159            libc::SIGINT => Some(Self::SIGINT),
160            libc::SIGQUIT => Some(Self::SIGQUIT),
161            libc::SIGILL => Some(Self::SIGILL),
162            libc::SIGTRAP => Some(Self::SIGTRAP),
163            libc::SIGABRT => Some(Self::SIGABRT),
164            libc::SIGFPE => Some(Self::SIGFPE),
165            libc::SIGKILL => Some(Self::SIGKILL),
166            libc::SIGBUS => Some(Self::SIGBUS),
167            libc::SIGSEGV => Some(Self::SIGSEGV),
168            libc::SIGSYS => Some(Self::SIGSYS),
169            libc::SIGPIPE => Some(Self::SIGPIPE),
170            libc::SIGALRM => Some(Self::SIGALRM),
171            libc::SIGTERM => Some(Self::SIGTERM),
172            libc::SIGURG => Some(Self::SIGURG),
173            libc::SIGSTOP => Some(Self::SIGSTOP),
174            libc::SIGTSTP => Some(Self::SIGTSTP),
175            libc::SIGCONT => Some(Self::SIGCONT),
176            libc::SIGCHLD => Some(Self::SIGCHLD),
177            libc::SIGTTIN => Some(Self::SIGTTIN),
178            libc::SIGTTOU => Some(Self::SIGTTOU),
179            libc::SIGIO => Some(Self::SIGIO),
180            libc::SIGXCPU => Some(Self::SIGXCPU),
181            libc::SIGXFSZ => Some(Self::SIGXFSZ),
182            libc::SIGVTALRM => Some(Self::SIGVTALRM),
183            libc::SIGPROF => Some(Self::SIGPROF),
184            libc::SIGWINCH => Some(Self::SIGWINCH),
185            libc::SIGUSR1 => Some(Self::SIGUSR1),
186            libc::SIGUSR2 => Some(Self::SIGUSR2),
187            libc::SIGPWR => Some(Self::SIGPWR),
188            // libc::SIGPOLL => Some(Self::SIGPOLL),
189            _ => None,
190        }
191    }
192    /// Convert cross-platfrom GDB signals to platform-specific libc signals
193    #[cfg(feature = "libc")]
194    pub fn into_libc(self) -> Option<libc::c_int> {
195        match self {
196            Self::SIGHUP => Some(libc::SIGHUP),
197            Self::SIGINT => Some(libc::SIGINT),
198            Self::SIGQUIT => Some(libc::SIGQUIT),
199            Self::SIGILL => Some(libc::SIGILL),
200            Self::SIGTRAP => Some(libc::SIGTRAP),
201            Self::SIGABRT => Some(libc::SIGABRT),
202            Self::SIGFPE => Some(libc::SIGFPE),
203            Self::SIGKILL => Some(libc::SIGKILL),
204            Self::SIGBUS => Some(libc::SIGBUS),
205            Self::SIGSEGV => Some(libc::SIGSEGV),
206            Self::SIGSYS => Some(libc::SIGSYS),
207            Self::SIGPIPE => Some(libc::SIGPIPE),
208            Self::SIGALRM => Some(libc::SIGALRM),
209            Self::SIGTERM => Some(libc::SIGTERM),
210            Self::SIGURG => Some(libc::SIGURG),
211            Self::SIGSTOP => Some(libc::SIGSTOP),
212            Self::SIGTSTP => Some(libc::SIGTSTP),
213            Self::SIGCONT => Some(libc::SIGCONT),
214            Self::SIGCHLD => Some(libc::SIGCHLD),
215            Self::SIGTTIN => Some(libc::SIGTTIN),
216            Self::SIGTTOU => Some(libc::SIGTTOU),
217            Self::SIGIO => Some(libc::SIGIO),
218            Self::SIGXCPU => Some(libc::SIGXCPU),
219            Self::SIGXFSZ => Some(libc::SIGXFSZ),
220            Self::SIGVTALRM => Some(libc::SIGVTALRM),
221            Self::SIGPROF => Some(libc::SIGPROF),
222            Self::SIGWINCH => Some(libc::SIGWINCH),
223            Self::SIGUSR1 => Some(libc::SIGUSR1),
224            Self::SIGUSR2 => Some(libc::SIGUSR2),
225            Self::SIGPWR => Some(libc::SIGPWR),
226            // Self::SIGPOLL => Some(libc::SIGPOLL),
227            _ => None,
228        }
229    }
230}