@@ -125,91 +125,111 @@ fn display_exception_info(
125125
126126#[ cfg( target_arch = "x86" ) ]
127127fn dump_regs ( e : & mut ExceptionSafeStderr , c : & CONTEXT ) -> std:: fmt:: Result {
128+ let CONTEXT {
129+ Eax,
130+ Ebx,
131+ Ecx,
132+ Edx,
133+ Esi,
134+ Edi,
135+ Eip,
136+ Ebp,
137+ Esp,
138+ EFlags,
139+ ..
140+ } = c;
128141 writeln ! (
129142 e,
130- "eax={:08x} ebx={:08x} ecx={:08x} edx={:08x} esi={:08x} edi={:08x}" ,
131- c. Eax , c. Ebx , c. Ecx , c. Edx , c. Esi , c. Edi
143+ "eax={Eax:08x} ebx={Ebx:08x} ecx={Ecx:08x} edx={Edx:08x} esi={Esi:08x} edi={Edi:08x}"
132144 ) ?;
133145 writeln ! (
134146 e,
135- "eip={:08x} ebp={:08x} esp={:08x} eflags={:08x}" ,
136- c. Eip , c. Ebp , c. Esp , c. EFlags
147+ "eip={Eip:08x} ebp={Ebp:08x} esp={Esp:08x} eflags={EFlags:08x}"
137148 ) ?;
138- Ok ( ( ) )
139149}
140150
141151#[ cfg( target_arch = "x86_64" ) ]
142152fn dump_regs ( e : & mut ExceptionSafeStderr , c : & CONTEXT ) -> std:: fmt:: Result {
143- writeln ! (
144- e,
145- "rax={:016x} rbx={:016x} rcx={:016x}" ,
146- c. Rax , c. Rbx , c. Rcx
147- ) ?;
148- writeln ! (
149- e,
150- "rdx={:016x} rsi={:016x} rdi={:016x}" ,
151- c. Rdx , c. Rsi , c. Rdi
152- ) ?;
153- writeln ! ( e, "rsp={:016x} rbp={:016x} r8={:016x}" , c. Rsp , c. Rbp , c. R8 ) ?;
154- writeln ! ( e, " r9={:016x} r10={:016x} r11={:016x}" , c. R9 , c. R10 , c. R11 ) ?;
155- writeln ! (
156- e,
157- "r12={:016x} r13={:016x} r14={:016x}" ,
158- c. R12 , c. R13 , c. R14
159- ) ?;
160- writeln ! (
161- e,
162- "r15={:016x} rip={:016x} eflags={:016x}" ,
163- c. R15 , c. Rip , c. EFlags
164- ) ?;
153+ let CONTEXT {
154+ Rax,
155+ Rbx,
156+ Rcx,
157+ Rdx,
158+ Rsi,
159+ Rdi,
160+ Rsp,
161+ Rbp,
162+ R8,
163+ R9,
164+ R10,
165+ R11,
166+ R12,
167+ R13,
168+ R14,
169+ R15,
170+ Rip,
171+ EFlags,
172+ ..
173+ } = c;
174+ writeln ! ( e, "rax={Rax:016x} rbx={Rbx:016x} rcx={Rcx:016x}" ) ?;
175+ writeln ! ( e, "rdx={Rdx:016x} rsi={Rsi:016x} rdi={Rdi:016x}" ) ?;
176+ writeln ! ( e, "rsp={Rsp:016x} rbp={Rbp:016x} r8={R8 :016x}" ) ?;
177+ writeln ! ( e, " r9={R9 :016x} r10={R10:016x} r11={R11:016x}" ) ?;
178+ writeln ! ( e, "r12={R12:016x} r13={R13:016x} r14={R14:016x}" ) ?;
179+ writeln ! ( e, "r15={R15:016x} rip={Rip:016x} eflags={EFlags:016x}" ) ?;
165180 Ok ( ( ) )
166181}
167182
168183#[ cfg( target_arch = "aarch64" ) ]
169184fn dump_regs ( e : & mut ExceptionSafeStderr , c : & CONTEXT ) -> std:: fmt:: Result {
185+ let CONTEXT { Cpsr, Sp, Pc, .. } = c;
170186 // SAFETY: The two variants of this anonymous union are equivalent,
171187 // one's an array and one has named registers.
172- let r = unsafe { c. Anonymous . Anonymous } ;
173- writeln ! (
174- e,
175- "cpsr={:016x} sp={:016x} pc={:016x}" ,
176- c. Cpsr , c. Sp , c. Pc
177- ) ?;
178- writeln ! ( e, " x0={:016x} x1={:016x} x2={:016x}" , r. X0 , r. X1 , r. X2 ) ?;
179- writeln ! ( e, " x3={:016x} x4={:016x} x5={:016x}" , r. X3 , r. X4 , r. X5 ) ?;
180- writeln ! ( e, " x6={:016x} x7={:016x} x8={:016x}" , r. X6 , r. X7 , r. X8 ) ?;
181- writeln ! (
182- e,
183- " x9={:016x} x10={:016x} x11={:016x}" ,
184- r. X9 , r. X10 , r. X11
185- ) ?;
186- writeln ! (
187- e,
188- " x12={:016x} x13={:016x} x14={:016x}" ,
189- r. X12 , r. X13 , r. X14
190- ) ?;
191- writeln ! (
192- e,
193- " x15={:016x} x16={:016x} x17={:016x}" ,
194- r. X15 , r. X16 , r. X17
195- ) ?;
196- writeln ! (
197- e,
198- " x18={:016x} x19={:016x} x20={:016x}" ,
199- r. X18 , r. X19 , r. X20
200- ) ?;
201- writeln ! (
202- e,
203- " x21={:016x} x22={:016x} x23={:016x}" ,
204- r. X21 , r. X22 , r. X23
205- ) ?;
206- writeln ! (
207- e,
208- " x24={:016x} x25={:016x} x26={:016x}" ,
209- r. X24 , r. X25 , r. X26
210- ) ?;
211- writeln ! ( e, " x27={:016x} x28={:016x}" , r. X27 , r. X28 ) ?;
212- writeln ! ( e, " fp={:016x} lr={:016x}" , r. Fp , r. Lr ) ?;
188+ let regs = unsafe { c. Anonymous . Anonymous } ;
189+ let Windows :: Win32 :: System :: Diagnostics :: Debug :: CONTEXT_0_0 {
190+ X0,
191+ X1,
192+ X2,
193+ X3,
194+ X4,
195+ X5,
196+ X6,
197+ X7,
198+ X8,
199+ X9,
200+ X10,
201+ X11,
202+ X12,
203+ X13,
204+ X14,
205+ X15,
206+ X16,
207+ X17,
208+ X18,
209+ X19,
210+ X20,
211+ X21,
212+ X22,
213+ X23,
214+ X24,
215+ X25,
216+ X26,
217+ X27,
218+ X28,
219+ Fp,
220+ Lr,
221+ } = regs;
222+ writeln ! ( e, "cpsr={Cpsr:016x} sp={Sp :016x} pc={Pc :016x}" ) ?;
223+ writeln ! ( e, " x0={X0 :016x} x1={X1 :016x} x2={X2 :016x}" ) ?;
224+ writeln ! ( e, " x3={X3 :016x} x4={X4 :016x} x5={X5 :016x}" ) ?;
225+ writeln ! ( e, " x6={X6 :016x} x7={X7 :016x} x8={X8 :016x}" ) ?;
226+ writeln ! ( e, " x9={X9 :016x} x10={X10:016x} x11={X11:016x}" ) ?;
227+ writeln ! ( e, " x12={X12 :016x} x13={X13:016x} x14={X14:016x}" ) ?;
228+ writeln ! ( e, " x15={X15 :016x} x16={X16:016x} x17={X17:016x}" ) ?;
229+ writeln ! ( e, " x18={X18 :016x} x19={X19:016x} x20={X20:016x}" ) ?;
230+ writeln ! ( e, " x21={X21 :016x} x22={X22:016x} x23={X23:016x}" ) ?;
231+ writeln ! ( e, " x24={X24 :016x} x25={X25:016x} x26={X26:016x}" ) ?;
232+ writeln ! ( e, " fp={Fp :016x} lr={Lr :016x}" ) ?;
213233 Ok ( ( ) )
214234}
215235
0 commit comments