@@ -125,91 +125,112 @@ 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 ) ?;
138149 Ok ( ( ) )
139150}
140151
141152#[ cfg( target_arch = "x86_64" ) ]
142153fn 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- ) ?;
154+ let CONTEXT {
155+ Rax,
156+ Rbx,
157+ Rcx,
158+ Rdx,
159+ Rsi,
160+ Rdi,
161+ Rsp,
162+ Rbp,
163+ R8,
164+ R9,
165+ R10,
166+ R11,
167+ R12,
168+ R13,
169+ R14,
170+ R15,
171+ Rip,
172+ EFlags,
173+ ..
174+ } = c;
175+ writeln ! ( e, "rax={Rax:016x} rbx={Rbx:016x} rcx={Rcx:016x}" ) ?;
176+ writeln ! ( e, "rdx={Rdx:016x} rsi={Rsi:016x} rdi={Rdi:016x}" ) ?;
177+ writeln ! ( e, "rsp={Rsp:016x} rbp={Rbp:016x} r8={R8 :016x}" ) ?;
178+ writeln ! ( e, " r9={R9 :016x} r10={R10:016x} r11={R11:016x}" ) ?;
179+ writeln ! ( e, "r12={R12:016x} r13={R13:016x} r14={R14:016x}" ) ?;
180+ writeln ! ( e, "r15={R15:016x} rip={Rip:016x} eflags={EFlags:016x}" ) ?;
165181 Ok ( ( ) )
166182}
167183
168184#[ cfg( target_arch = "aarch64" ) ]
169185fn dump_regs ( e : & mut ExceptionSafeStderr , c : & CONTEXT ) -> std:: fmt:: Result {
186+ let CONTEXT { Cpsr, Sp, Pc, .. } = c;
170187 // SAFETY: The two variants of this anonymous union are equivalent,
171188 // 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 ) ?;
189+ let regs = unsafe { c. Anonymous . Anonymous } ;
190+ let Windows :: Win32 :: System :: Diagnostics :: Debug :: CONTEXT_0_0 {
191+ X0,
192+ X1,
193+ X2,
194+ X3,
195+ X4,
196+ X5,
197+ X6,
198+ X7,
199+ X8,
200+ X9,
201+ X10,
202+ X11,
203+ X12,
204+ X13,
205+ X14,
206+ X15,
207+ X16,
208+ X17,
209+ X18,
210+ X19,
211+ X20,
212+ X21,
213+ X22,
214+ X23,
215+ X24,
216+ X25,
217+ X26,
218+ X27,
219+ X28,
220+ Fp,
221+ Lr,
222+ } = regs;
223+ writeln ! ( e, "cpsr={Cpsr:016x} sp={Sp :016x} pc={Pc :016x}" ) ?;
224+ writeln ! ( e, " x0={X0 :016x} x1={X1 :016x} x2={X2 :016x}" ) ?;
225+ writeln ! ( e, " x3={X3 :016x} x4={X4 :016x} x5={X5 :016x}" ) ?;
226+ writeln ! ( e, " x6={X6 :016x} x7={X7 :016x} x8={X8 :016x}" ) ?;
227+ writeln ! ( e, " x9={X9 :016x} x10={X10:016x} x11={X11:016x}" ) ?;
228+ writeln ! ( e, " x12={X12 :016x} x13={X13:016x} x14={X14:016x}" ) ?;
229+ writeln ! ( e, " x15={X15 :016x} x16={X16:016x} x17={X17:016x}" ) ?;
230+ writeln ! ( e, " x18={X18 :016x} x19={X19:016x} x20={X20:016x}" ) ?;
231+ writeln ! ( e, " x21={X21 :016x} x22={X22:016x} x23={X23:016x}" ) ?;
232+ writeln ! ( e, " x24={X24 :016x} x25={X25:016x} x26={X26:016x}" ) ?;
233+ writeln ! ( e, " fp={Fp :016x} lr={Lr :016x}" ) ?;
213234 Ok ( ( ) )
214235}
215236
0 commit comments