1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-01 07:14:31 +00:00

winedbg: Use nameless unions/structs.

This commit is contained in:
Alexandre Julliard 2023-06-16 17:59:35 +02:00
parent 4368bd8e60
commit f20710d9b3
5 changed files with 177 additions and 188 deletions

View File

@ -32,7 +32,7 @@ static BOOL be_arm64_get_addr(HANDLE hThread, const dbg_ctx_t *ctx,
case be_cpu_addr_stack:
return be_cpu_build_addr(hThread, ctx, addr, 0, ctx->ctx.Sp);
case be_cpu_addr_frame:
return be_cpu_build_addr(hThread, ctx, addr, 0, ctx->ctx.u.s.Fp);
return be_cpu_build_addr(hThread, ctx, addr, 0, ctx->ctx.Fp);
break;
}
return FALSE;
@ -81,19 +81,19 @@ static void be_arm64_print_context(HANDLE hThread, const dbg_ctx_t *ctx, int all
buf[i] = '-';
dbg_printf(" Pc:%016I64x Sp:%016I64x Lr:%016I64x Cpsr:%08lx(%s)\n",
ctx->ctx.Pc, ctx->ctx.Sp, ctx->ctx.u.s.Lr, ctx->ctx.Cpsr, buf);
ctx->ctx.Pc, ctx->ctx.Sp, ctx->ctx.Lr, ctx->ctx.Cpsr, buf);
dbg_printf(" x0: %016I64x x1: %016I64x x2: %016I64x x3: %016I64x x4: %016I64x\n",
ctx->ctx.u.s.X0, ctx->ctx.u.s.X1, ctx->ctx.u.s.X2, ctx->ctx.u.s.X3, ctx->ctx.u.s.X4);
ctx->ctx.X0, ctx->ctx.X1, ctx->ctx.X2, ctx->ctx.X3, ctx->ctx.X4);
dbg_printf(" x5: %016I64x x6: %016I64x x7: %016I64x x8: %016I64x x9: %016I64x\n",
ctx->ctx.u.s.X5, ctx->ctx.u.s.X6, ctx->ctx.u.s.X7, ctx->ctx.u.s.X8, ctx->ctx.u.s.X9);
ctx->ctx.X5, ctx->ctx.X6, ctx->ctx.X7, ctx->ctx.X8, ctx->ctx.X9);
dbg_printf(" x10:%016I64x x11:%016I64x x12:%016I64x x13:%016I64x x14:%016I64x\n",
ctx->ctx.u.s.X10, ctx->ctx.u.s.X11, ctx->ctx.u.s.X12, ctx->ctx.u.s.X13, ctx->ctx.u.s.X14);
ctx->ctx.X10, ctx->ctx.X11, ctx->ctx.X12, ctx->ctx.X13, ctx->ctx.X14);
dbg_printf(" x15:%016I64x ip0:%016I64x ip1:%016I64x x18:%016I64x x19:%016I64x\n",
ctx->ctx.u.s.X15, ctx->ctx.u.s.X16, ctx->ctx.u.s.X17, ctx->ctx.u.s.X18, ctx->ctx.u.s.X19);
ctx->ctx.X15, ctx->ctx.X16, ctx->ctx.X17, ctx->ctx.X18, ctx->ctx.X19);
dbg_printf(" x20:%016I64x x21:%016I64x x22:%016I64x x23:%016I64x x24:%016I64x\n",
ctx->ctx.u.s.X20, ctx->ctx.u.s.X21, ctx->ctx.u.s.X22, ctx->ctx.u.s.X23, ctx->ctx.u.s.X24);
ctx->ctx.X20, ctx->ctx.X21, ctx->ctx.X22, ctx->ctx.X23, ctx->ctx.X24);
dbg_printf(" x25:%016I64x x26:%016I64x x27:%016I64x x28:%016I64x Fp:%016I64x\n",
ctx->ctx.u.s.X25, ctx->ctx.u.s.X26, ctx->ctx.u.s.X27, ctx->ctx.u.s.X28, ctx->ctx.u.s.Fp);
ctx->ctx.X25, ctx->ctx.X26, ctx->ctx.X27, ctx->ctx.X28, ctx->ctx.Fp);
if (all_regs) dbg_printf( "Floating point ARM64 dump not implemented\n" );
}
@ -104,41 +104,41 @@ static void be_arm64_print_segment_info(HANDLE hThread, const dbg_ctx_t *ctx)
static struct dbg_internal_var be_arm64_ctx[] =
{
{CV_ARM64_PSTATE, "cpsr", (void*)FIELD_OFFSET(CONTEXT, Cpsr), dbg_itype_unsigned_int32},
{CV_ARM64_X0 + 0, "x0", (void*)FIELD_OFFSET(CONTEXT, u.s.X0), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 1, "x1", (void*)FIELD_OFFSET(CONTEXT, u.s.X1), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 2, "x2", (void*)FIELD_OFFSET(CONTEXT, u.s.X2), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 3, "x3", (void*)FIELD_OFFSET(CONTEXT, u.s.X3), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 4, "x4", (void*)FIELD_OFFSET(CONTEXT, u.s.X4), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 5, "x5", (void*)FIELD_OFFSET(CONTEXT, u.s.X5), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 6, "x6", (void*)FIELD_OFFSET(CONTEXT, u.s.X6), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 7, "x7", (void*)FIELD_OFFSET(CONTEXT, u.s.X7), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 8, "x8", (void*)FIELD_OFFSET(CONTEXT, u.s.X8), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 9, "x9", (void*)FIELD_OFFSET(CONTEXT, u.s.X9), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 10, "x10", (void*)FIELD_OFFSET(CONTEXT, u.s.X10), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 11, "x11", (void*)FIELD_OFFSET(CONTEXT, u.s.X11), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 12, "x12", (void*)FIELD_OFFSET(CONTEXT, u.s.X12), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 13, "x13", (void*)FIELD_OFFSET(CONTEXT, u.s.X13), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 14, "x14", (void*)FIELD_OFFSET(CONTEXT, u.s.X14), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 15, "x15", (void*)FIELD_OFFSET(CONTEXT, u.s.X15), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 16, "x16", (void*)FIELD_OFFSET(CONTEXT, u.s.X16), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 17, "x17", (void*)FIELD_OFFSET(CONTEXT, u.s.X17), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 18, "x18", (void*)FIELD_OFFSET(CONTEXT, u.s.X18), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 19, "x19", (void*)FIELD_OFFSET(CONTEXT, u.s.X19), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 20, "x20", (void*)FIELD_OFFSET(CONTEXT, u.s.X20), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 21, "x21", (void*)FIELD_OFFSET(CONTEXT, u.s.X21), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 22, "x22", (void*)FIELD_OFFSET(CONTEXT, u.s.X22), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 23, "x23", (void*)FIELD_OFFSET(CONTEXT, u.s.X23), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 24, "x24", (void*)FIELD_OFFSET(CONTEXT, u.s.X24), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 25, "x25", (void*)FIELD_OFFSET(CONTEXT, u.s.X25), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 26, "x26", (void*)FIELD_OFFSET(CONTEXT, u.s.X26), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 27, "x27", (void*)FIELD_OFFSET(CONTEXT, u.s.X27), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 28, "x28", (void*)FIELD_OFFSET(CONTEXT, u.s.X28), dbg_itype_unsigned_int64},
{CV_ARM64_FP, "fp", (void*)FIELD_OFFSET(CONTEXT, u.s.Fp), dbg_itype_unsigned_int64},
{CV_ARM64_LR, "lr", (void*)FIELD_OFFSET(CONTEXT, u.s.Lr), dbg_itype_unsigned_int64},
{CV_ARM64_SP, "sp", (void*)FIELD_OFFSET(CONTEXT, Sp), dbg_itype_unsigned_int64},
{CV_ARM64_PC, "pc", (void*)FIELD_OFFSET(CONTEXT, Pc), dbg_itype_unsigned_int64},
{0, NULL, 0, dbg_itype_none}
{CV_ARM64_PSTATE, "cpsr", (void*)FIELD_OFFSET(CONTEXT, Cpsr), dbg_itype_unsigned_int32},
{CV_ARM64_X0 + 0, "x0", (void*)FIELD_OFFSET(CONTEXT, X0), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 1, "x1", (void*)FIELD_OFFSET(CONTEXT, X1), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 2, "x2", (void*)FIELD_OFFSET(CONTEXT, X2), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 3, "x3", (void*)FIELD_OFFSET(CONTEXT, X3), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 4, "x4", (void*)FIELD_OFFSET(CONTEXT, X4), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 5, "x5", (void*)FIELD_OFFSET(CONTEXT, X5), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 6, "x6", (void*)FIELD_OFFSET(CONTEXT, X6), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 7, "x7", (void*)FIELD_OFFSET(CONTEXT, X7), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 8, "x8", (void*)FIELD_OFFSET(CONTEXT, X8), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 9, "x9", (void*)FIELD_OFFSET(CONTEXT, X9), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 10, "x10", (void*)FIELD_OFFSET(CONTEXT, X10), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 11, "x11", (void*)FIELD_OFFSET(CONTEXT, X11), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 12, "x12", (void*)FIELD_OFFSET(CONTEXT, X12), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 13, "x13", (void*)FIELD_OFFSET(CONTEXT, X13), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 14, "x14", (void*)FIELD_OFFSET(CONTEXT, X14), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 15, "x15", (void*)FIELD_OFFSET(CONTEXT, X15), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 16, "x16", (void*)FIELD_OFFSET(CONTEXT, X16), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 17, "x17", (void*)FIELD_OFFSET(CONTEXT, X17), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 18, "x18", (void*)FIELD_OFFSET(CONTEXT, X18), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 19, "x19", (void*)FIELD_OFFSET(CONTEXT, X19), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 20, "x20", (void*)FIELD_OFFSET(CONTEXT, X20), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 21, "x21", (void*)FIELD_OFFSET(CONTEXT, X21), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 22, "x22", (void*)FIELD_OFFSET(CONTEXT, X22), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 23, "x23", (void*)FIELD_OFFSET(CONTEXT, X23), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 24, "x24", (void*)FIELD_OFFSET(CONTEXT, X24), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 25, "x25", (void*)FIELD_OFFSET(CONTEXT, X25), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 26, "x26", (void*)FIELD_OFFSET(CONTEXT, X26), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 27, "x27", (void*)FIELD_OFFSET(CONTEXT, X27), dbg_itype_unsigned_int64},
{CV_ARM64_X0 + 28, "x28", (void*)FIELD_OFFSET(CONTEXT, X28), dbg_itype_unsigned_int64},
{CV_ARM64_FP, "fp", (void*)FIELD_OFFSET(CONTEXT, Fp), dbg_itype_unsigned_int64},
{CV_ARM64_LR, "lr", (void*)FIELD_OFFSET(CONTEXT, Lr), dbg_itype_unsigned_int64},
{CV_ARM64_SP, "sp", (void*)FIELD_OFFSET(CONTEXT, Sp), dbg_itype_unsigned_int64},
{CV_ARM64_PC, "pc", (void*)FIELD_OFFSET(CONTEXT, Pc), dbg_itype_unsigned_int64},
{0, NULL, 0, dbg_itype_none}
};
static BOOL be_arm64_is_step_over_insn(const void* insn)
@ -247,37 +247,37 @@ static BOOL be_arm64_set_context(HANDLE thread, const dbg_ctx_t *ctx)
#define REG(f,n,t,r) {f, n, t, FIELD_OFFSET(CONTEXT, r), sizeof(((CONTEXT*)NULL)->r)}
static struct gdb_register be_arm64_gdb_register_map[] = {
REG("core", "x0", NULL, u.s.X0),
REG(NULL, "x1", NULL, u.s.X1),
REG(NULL, "x2", NULL, u.s.X2),
REG(NULL, "x3", NULL, u.s.X3),
REG(NULL, "x4", NULL, u.s.X4),
REG(NULL, "x5", NULL, u.s.X5),
REG(NULL, "x6", NULL, u.s.X6),
REG(NULL, "x7", NULL, u.s.X7),
REG(NULL, "x8", NULL, u.s.X8),
REG(NULL, "x9", NULL, u.s.X9),
REG(NULL, "x10", NULL, u.s.X10),
REG(NULL, "x11", NULL, u.s.X11),
REG(NULL, "x12", NULL, u.s.X12),
REG(NULL, "x13", NULL, u.s.X13),
REG(NULL, "x14", NULL, u.s.X14),
REG(NULL, "x15", NULL, u.s.X15),
REG(NULL, "x16", NULL, u.s.X16),
REG(NULL, "x17", NULL, u.s.X17),
REG(NULL, "x18", NULL, u.s.X18),
REG(NULL, "x19", NULL, u.s.X19),
REG(NULL, "x20", NULL, u.s.X20),
REG(NULL, "x21", NULL, u.s.X21),
REG(NULL, "x22", NULL, u.s.X22),
REG(NULL, "x23", NULL, u.s.X23),
REG(NULL, "x24", NULL, u.s.X24),
REG(NULL, "x25", NULL, u.s.X25),
REG(NULL, "x26", NULL, u.s.X26),
REG(NULL, "x27", NULL, u.s.X27),
REG(NULL, "x28", NULL, u.s.X28),
REG(NULL, "x29", NULL, u.s.Fp),
REG(NULL, "x30", NULL, u.s.Lr),
REG("core", "x0", NULL, X0),
REG(NULL, "x1", NULL, X1),
REG(NULL, "x2", NULL, X2),
REG(NULL, "x3", NULL, X3),
REG(NULL, "x4", NULL, X4),
REG(NULL, "x5", NULL, X5),
REG(NULL, "x6", NULL, X6),
REG(NULL, "x7", NULL, X7),
REG(NULL, "x8", NULL, X8),
REG(NULL, "x9", NULL, X9),
REG(NULL, "x10", NULL, X10),
REG(NULL, "x11", NULL, X11),
REG(NULL, "x12", NULL, X12),
REG(NULL, "x13", NULL, X13),
REG(NULL, "x14", NULL, X14),
REG(NULL, "x15", NULL, X15),
REG(NULL, "x16", NULL, X16),
REG(NULL, "x17", NULL, X17),
REG(NULL, "x18", NULL, X18),
REG(NULL, "x19", NULL, X19),
REG(NULL, "x20", NULL, X20),
REG(NULL, "x21", NULL, X21),
REG(NULL, "x22", NULL, X22),
REG(NULL, "x23", NULL, X23),
REG(NULL, "x24", NULL, X24),
REG(NULL, "x25", NULL, X25),
REG(NULL, "x26", NULL, X26),
REG(NULL, "x27", NULL, X27),
REG(NULL, "x28", NULL, X28),
REG(NULL, "x29", NULL, Fp),
REG(NULL, "x30", NULL, Lr),
REG(NULL, "sp", "data_ptr", Sp),
REG(NULL, "pc", "code_ptr", Pc),
REG(NULL, "cpsr", "cpsr_flags", Cpsr),

View File

@ -19,9 +19,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define NONAMELESSSTRUCT
#define NONAMELESSUNION
#include "debugger.h"
#include "wine/debug.h"
@ -109,67 +106,67 @@ static void be_x86_64_print_context(HANDLE hThread, const dbg_ctx_t *pctx,
dbg_printf(" dr6:%016I64x dr7:%016I64x\n", ctx->Dr6, ctx->Dr7 );
dbg_printf("Floating point:\n");
dbg_printf(" flcw:%04x ", LOWORD(ctx->u.FltSave.ControlWord));
dbg_printf(" fltw:%04x ", LOWORD(ctx->u.FltSave.TagWord));
dbg_printf(" flsw:%04x", LOWORD(ctx->u.FltSave.StatusWord));
dbg_printf(" flcw:%04x ", LOWORD(ctx->FltSave.ControlWord));
dbg_printf(" fltw:%04x ", LOWORD(ctx->FltSave.TagWord));
dbg_printf(" flsw:%04x", LOWORD(ctx->FltSave.StatusWord));
dbg_printf("(cc:%d%d%d%d", (ctx->u.FltSave.StatusWord & 0x00004000) >> 14,
(ctx->u.FltSave.StatusWord & 0x00000400) >> 10,
(ctx->u.FltSave.StatusWord & 0x00000200) >> 9,
(ctx->u.FltSave.StatusWord & 0x00000100) >> 8);
dbg_printf("(cc:%d%d%d%d", (ctx->FltSave.StatusWord & 0x00004000) >> 14,
(ctx->FltSave.StatusWord & 0x00000400) >> 10,
(ctx->FltSave.StatusWord & 0x00000200) >> 9,
(ctx->FltSave.StatusWord & 0x00000100) >> 8);
dbg_printf(" top:%01x", (unsigned int) (ctx->u.FltSave.StatusWord & 0x00003800) >> 11);
dbg_printf(" top:%01x", (unsigned int) (ctx->FltSave.StatusWord & 0x00003800) >> 11);
if (ctx->u.FltSave.StatusWord & 0x00000001) /* Invalid Fl OP */
if (ctx->FltSave.StatusWord & 0x00000001) /* Invalid Fl OP */
{
if (ctx->u.FltSave.StatusWord & 0x00000040) /* Stack Fault */
if (ctx->FltSave.StatusWord & 0x00000040) /* Stack Fault */
{
if (ctx->u.FltSave.StatusWord & 0x00000200) /* C1 says Overflow */
if (ctx->FltSave.StatusWord & 0x00000200) /* C1 says Overflow */
dbg_printf(" #IE(Stack Overflow)");
else
dbg_printf(" #IE(Stack Underflow)"); /* Underflow */
}
else dbg_printf(" #IE(Arithmetic error)"); /* Invalid Fl OP */
}
if (ctx->u.FltSave.StatusWord & 0x00000002) dbg_printf(" #DE"); /* Denormalised OP */
if (ctx->u.FltSave.StatusWord & 0x00000004) dbg_printf(" #ZE"); /* Zero Divide */
if (ctx->u.FltSave.StatusWord & 0x00000008) dbg_printf(" #OE"); /* Overflow */
if (ctx->u.FltSave.StatusWord & 0x00000010) dbg_printf(" #UE"); /* Underflow */
if (ctx->u.FltSave.StatusWord & 0x00000020) dbg_printf(" #PE"); /* Precision error */
if (ctx->u.FltSave.StatusWord & 0x00000040)
if (!(ctx->u.FltSave.StatusWord & 0x00000001))
if (ctx->FltSave.StatusWord & 0x00000002) dbg_printf(" #DE"); /* Denormalised OP */
if (ctx->FltSave.StatusWord & 0x00000004) dbg_printf(" #ZE"); /* Zero Divide */
if (ctx->FltSave.StatusWord & 0x00000008) dbg_printf(" #OE"); /* Overflow */
if (ctx->FltSave.StatusWord & 0x00000010) dbg_printf(" #UE"); /* Underflow */
if (ctx->FltSave.StatusWord & 0x00000020) dbg_printf(" #PE"); /* Precision error */
if (ctx->FltSave.StatusWord & 0x00000040)
if (!(ctx->FltSave.StatusWord & 0x00000001))
dbg_printf(" #SE"); /* Stack Fault (don't think this can occur) */
if (ctx->u.FltSave.StatusWord & 0x00000080) dbg_printf(" #ES"); /* Error Summary */
if (ctx->u.FltSave.StatusWord & 0x00008000) dbg_printf(" #FB"); /* FPU Busy */
if (ctx->FltSave.StatusWord & 0x00000080) dbg_printf(" #ES"); /* Error Summary */
if (ctx->FltSave.StatusWord & 0x00008000) dbg_printf(" #FB"); /* FPU Busy */
dbg_printf(")\n");
dbg_printf(" flerr:%04x:%08lx fldata:%04x:%08lx\n",
ctx->u.FltSave.ErrorSelector, ctx->u.FltSave.ErrorOffset,
ctx->u.FltSave.DataSelector, ctx->u.FltSave.DataOffset );
ctx->FltSave.ErrorSelector, ctx->FltSave.ErrorOffset,
ctx->FltSave.DataSelector, ctx->FltSave.DataOffset );
for (i = 0; i < 8; i++)
{
M128A reg = ctx->u.FltSave.FloatRegisters[i];
M128A reg = ctx->FltSave.FloatRegisters[i];
if (i == 4) dbg_printf("\n");
dbg_printf(" ST%u:%016I64x%16I64x ", i, reg.High, reg.Low );
}
dbg_printf("\n");
dbg_printf(" mxcsr: %04lx (", ctx->u.FltSave.MxCsr );
dbg_printf(" mxcsr: %04lx (", ctx->FltSave.MxCsr );
for (i = 0; i < 16; i++)
if (ctx->u.FltSave.MxCsr & (1 << i)) dbg_printf( " %s", mxcsr_flags[i] );
if (ctx->FltSave.MxCsr & (1 << i)) dbg_printf( " %s", mxcsr_flags[i] );
dbg_printf(" )\n");
for (i = 0; i < 16; i++)
{
dbg_printf( " %sxmm%u: uint=%016I64x%016I64x", (i > 9) ? "" : " ", i,
ctx->u.FltSave.XmmRegisters[i].High, ctx->u.FltSave.XmmRegisters[i].Low );
dbg_printf( " double={%g; %g}", *(double *)&ctx->u.FltSave.XmmRegisters[i].Low,
*(double *)&ctx->u.FltSave.XmmRegisters[i].High );
ctx->FltSave.XmmRegisters[i].High, ctx->FltSave.XmmRegisters[i].Low );
dbg_printf( " double={%g; %g}", *(double *)&ctx->FltSave.XmmRegisters[i].Low,
*(double *)&ctx->FltSave.XmmRegisters[i].High );
dbg_printf( " float={%g; %g; %g; %g}\n",
(double)*((float *)&ctx->u.FltSave.XmmRegisters[i] + 0),
(double)*((float *)&ctx->u.FltSave.XmmRegisters[i] + 1),
(double)*((float *)&ctx->u.FltSave.XmmRegisters[i] + 2),
(double)*((float *)&ctx->u.FltSave.XmmRegisters[i] + 3) );
(double)*((float *)&ctx->FltSave.XmmRegisters[i] + 0),
(double)*((float *)&ctx->FltSave.XmmRegisters[i] + 1),
(double)*((float *)&ctx->FltSave.XmmRegisters[i] + 2),
(double)*((float *)&ctx->FltSave.XmmRegisters[i] + 3) );
}
}
@ -228,31 +225,31 @@ static struct dbg_internal_var be_x86_64_ctx[] =
{CV_AMD64_R13, "R13", (void*)FIELD_OFFSET(CONTEXT, R13), dbg_itype_unsigned_int64},
{CV_AMD64_R14, "R14", (void*)FIELD_OFFSET(CONTEXT, R14), dbg_itype_unsigned_int64},
{CV_AMD64_R15, "R15", (void*)FIELD_OFFSET(CONTEXT, R15), dbg_itype_unsigned_int64},
{CV_AMD64_ST0, "ST0", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[0]), dbg_itype_long_real},
{CV_AMD64_ST0+1, "ST1", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[1]), dbg_itype_long_real},
{CV_AMD64_ST0+2, "ST2", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[2]), dbg_itype_long_real},
{CV_AMD64_ST0+3, "ST3", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[3]), dbg_itype_long_real},
{CV_AMD64_ST0+4, "ST4", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[4]), dbg_itype_long_real},
{CV_AMD64_ST0+5, "ST5", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[5]), dbg_itype_long_real},
{CV_AMD64_ST0+6, "ST6", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[6]), dbg_itype_long_real},
{CV_AMD64_ST0+7, "ST7", (void*)FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[7]), dbg_itype_long_real},
{CV_AMD64_XMM0, "XMM0", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm0), dbg_itype_m128a},
{CV_AMD64_XMM0+1, "XMM1", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm1), dbg_itype_m128a},
{CV_AMD64_XMM0+2, "XMM2", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm2), dbg_itype_m128a},
{CV_AMD64_XMM0+3, "XMM3", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm3), dbg_itype_m128a},
{CV_AMD64_XMM0+4, "XMM4", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm4), dbg_itype_m128a},
{CV_AMD64_XMM0+5, "XMM5", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm5), dbg_itype_m128a},
{CV_AMD64_XMM0+6, "XMM6", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm6), dbg_itype_m128a},
{CV_AMD64_XMM0+7, "XMM7", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm7), dbg_itype_m128a},
{CV_AMD64_XMM8, "XMM8", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm8), dbg_itype_m128a},
{CV_AMD64_XMM8+1, "XMM9", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm9), dbg_itype_m128a},
{CV_AMD64_XMM8+2, "XMM10", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm10), dbg_itype_m128a},
{CV_AMD64_XMM8+3, "XMM11", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm11), dbg_itype_m128a},
{CV_AMD64_XMM8+4, "XMM12", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm12), dbg_itype_m128a},
{CV_AMD64_XMM8+5, "XMM13", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm13), dbg_itype_m128a},
{CV_AMD64_XMM8+6, "XMM14", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm14), dbg_itype_m128a},
{CV_AMD64_XMM8+7, "XMM15", (void*)FIELD_OFFSET(CONTEXT, u.s.Xmm15), dbg_itype_m128a},
{0, NULL, 0, dbg_itype_none}
{CV_AMD64_ST0, "ST0", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[0]), dbg_itype_long_real},
{CV_AMD64_ST0+1, "ST1", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[1]), dbg_itype_long_real},
{CV_AMD64_ST0+2, "ST2", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[2]), dbg_itype_long_real},
{CV_AMD64_ST0+3, "ST3", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[3]), dbg_itype_long_real},
{CV_AMD64_ST0+4, "ST4", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[4]), dbg_itype_long_real},
{CV_AMD64_ST0+5, "ST5", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[5]), dbg_itype_long_real},
{CV_AMD64_ST0+6, "ST6", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[6]), dbg_itype_long_real},
{CV_AMD64_ST0+7, "ST7", (void*)FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[7]), dbg_itype_long_real},
{CV_AMD64_XMM0, "XMM0", (void*)FIELD_OFFSET(CONTEXT, Xmm0), dbg_itype_m128a},
{CV_AMD64_XMM0+1, "XMM1", (void*)FIELD_OFFSET(CONTEXT, Xmm1), dbg_itype_m128a},
{CV_AMD64_XMM0+2, "XMM2", (void*)FIELD_OFFSET(CONTEXT, Xmm2), dbg_itype_m128a},
{CV_AMD64_XMM0+3, "XMM3", (void*)FIELD_OFFSET(CONTEXT, Xmm3), dbg_itype_m128a},
{CV_AMD64_XMM0+4, "XMM4", (void*)FIELD_OFFSET(CONTEXT, Xmm4), dbg_itype_m128a},
{CV_AMD64_XMM0+5, "XMM5", (void*)FIELD_OFFSET(CONTEXT, Xmm5), dbg_itype_m128a},
{CV_AMD64_XMM0+6, "XMM6", (void*)FIELD_OFFSET(CONTEXT, Xmm6), dbg_itype_m128a},
{CV_AMD64_XMM0+7, "XMM7", (void*)FIELD_OFFSET(CONTEXT, Xmm7), dbg_itype_m128a},
{CV_AMD64_XMM8, "XMM8", (void*)FIELD_OFFSET(CONTEXT, Xmm8), dbg_itype_m128a},
{CV_AMD64_XMM8+1, "XMM9", (void*)FIELD_OFFSET(CONTEXT, Xmm9), dbg_itype_m128a},
{CV_AMD64_XMM8+2, "XMM10", (void*)FIELD_OFFSET(CONTEXT, Xmm10), dbg_itype_m128a},
{CV_AMD64_XMM8+3, "XMM11", (void*)FIELD_OFFSET(CONTEXT, Xmm11), dbg_itype_m128a},
{CV_AMD64_XMM8+4, "XMM12", (void*)FIELD_OFFSET(CONTEXT, Xmm12), dbg_itype_m128a},
{CV_AMD64_XMM8+5, "XMM13", (void*)FIELD_OFFSET(CONTEXT, Xmm13), dbg_itype_m128a},
{CV_AMD64_XMM8+6, "XMM14", (void*)FIELD_OFFSET(CONTEXT, Xmm14), dbg_itype_m128a},
{CV_AMD64_XMM8+7, "XMM15", (void*)FIELD_OFFSET(CONTEXT, Xmm15), dbg_itype_m128a},
{0, NULL, 0, dbg_itype_none}
};
#define f_mod(b) ((b)>>6)
@ -735,40 +732,40 @@ static struct gdb_register be_x86_64_gdb_register_map[] = {
REG(NULL, "es", NULL, SegEs),
REG(NULL, "fs", NULL, SegFs),
REG(NULL, "gs", NULL, SegGs),
{ NULL, "st0", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 0]), 10},
{ NULL, "st1", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 1]), 10},
{ NULL, "st2", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 2]), 10},
{ NULL, "st3", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 3]), 10},
{ NULL, "st4", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 4]), 10},
{ NULL, "st5", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 5]), 10},
{ NULL, "st6", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 6]), 10},
{ NULL, "st7", "i387_ext", FIELD_OFFSET(CONTEXT, u.FltSave.FloatRegisters[ 7]), 10},
REG(NULL, "fctrl", NULL, u.FltSave.ControlWord),
REG(NULL, "fstat", NULL, u.FltSave.StatusWord),
REG(NULL, "ftag", NULL, u.FltSave.TagWord),
REG(NULL, "fiseg", NULL, u.FltSave.ErrorSelector),
REG(NULL, "fioff", NULL, u.FltSave.ErrorOffset),
REG(NULL, "foseg", NULL, u.FltSave.DataSelector),
REG(NULL, "fooff", NULL, u.FltSave.DataOffset),
REG(NULL, "fop", NULL, u.FltSave.ErrorOpcode),
{ NULL, "st0", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 0]), 10},
{ NULL, "st1", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 1]), 10},
{ NULL, "st2", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 2]), 10},
{ NULL, "st3", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 3]), 10},
{ NULL, "st4", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 4]), 10},
{ NULL, "st5", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 5]), 10},
{ NULL, "st6", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 6]), 10},
{ NULL, "st7", "i387_ext", FIELD_OFFSET(CONTEXT, FltSave.FloatRegisters[ 7]), 10},
REG(NULL, "fctrl", NULL, FltSave.ControlWord),
REG(NULL, "fstat", NULL, FltSave.StatusWord),
REG(NULL, "ftag", NULL, FltSave.TagWord),
REG(NULL, "fiseg", NULL, FltSave.ErrorSelector),
REG(NULL, "fioff", NULL, FltSave.ErrorOffset),
REG(NULL, "foseg", NULL, FltSave.DataSelector),
REG(NULL, "fooff", NULL, FltSave.DataOffset),
REG(NULL, "fop", NULL, FltSave.ErrorOpcode),
REG("sse", "xmm0", "vec128", u.s.Xmm0),
REG(NULL, "xmm1", "vec128", u.s.Xmm1),
REG(NULL, "xmm2", "vec128", u.s.Xmm2),
REG(NULL, "xmm3", "vec128", u.s.Xmm3),
REG(NULL, "xmm4", "vec128", u.s.Xmm4),
REG(NULL, "xmm5", "vec128", u.s.Xmm5),
REG(NULL, "xmm6", "vec128", u.s.Xmm6),
REG(NULL, "xmm7", "vec128", u.s.Xmm7),
REG(NULL, "xmm8", "vec128", u.s.Xmm8),
REG(NULL, "xmm9", "vec128", u.s.Xmm9),
REG(NULL, "xmm10", "vec128", u.s.Xmm10),
REG(NULL, "xmm11", "vec128", u.s.Xmm11),
REG(NULL, "xmm12", "vec128", u.s.Xmm12),
REG(NULL, "xmm13", "vec128", u.s.Xmm13),
REG(NULL, "xmm14", "vec128", u.s.Xmm14),
REG(NULL, "xmm15", "vec128", u.s.Xmm15),
REG(NULL, "mxcsr", "i386_mxcsr", u.FltSave.MxCsr),
REG("sse", "xmm0", "vec128", Xmm0),
REG(NULL, "xmm1", "vec128", Xmm1),
REG(NULL, "xmm2", "vec128", Xmm2),
REG(NULL, "xmm3", "vec128", Xmm3),
REG(NULL, "xmm4", "vec128", Xmm4),
REG(NULL, "xmm5", "vec128", Xmm5),
REG(NULL, "xmm6", "vec128", Xmm6),
REG(NULL, "xmm7", "vec128", Xmm7),
REG(NULL, "xmm8", "vec128", Xmm8),
REG(NULL, "xmm9", "vec128", Xmm9),
REG(NULL, "xmm10", "vec128", Xmm10),
REG(NULL, "xmm11", "vec128", Xmm11),
REG(NULL, "xmm12", "vec128", Xmm12),
REG(NULL, "xmm13", "vec128", Xmm13),
REG(NULL, "xmm14", "vec128", Xmm14),
REG(NULL, "xmm15", "vec128", Xmm15),
REG(NULL, "mxcsr", "i386_mxcsr", FltSave.MxCsr),
};
struct backend_cpu be_x86_64 =

View File

@ -24,8 +24,6 @@
#include <assert.h>
#include <stdarg.h>
#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include "ntstatus.h"
#define WIN32_NO_STATUS
#define WIN32_LEAN_AND_MEAN

View File

@ -24,9 +24,6 @@
* http://sources.redhat.com/gdb/onlinedocs/gdb/Maintenance-Commands.html
*/
#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include <assert.h>
#include <fcntl.h>
#include <stdarg.h>

View File

@ -18,9 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@ -308,8 +305,8 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
break;
}
dbg_printf(" %ls was running on #%d %s CPU%s",
exec_name, msi->u.s.NumberOfProcessors, str,
msi->u.s.NumberOfProcessors < 2 ? "" : "s");
exec_name, msi->NumberOfProcessors, str,
msi->NumberOfProcessors < 2 ? "" : "s");
switch (msi->MajorVersion)
{
case 3:
@ -334,8 +331,8 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
case 0: str = "2000"; break;
case 1: str = "XP"; break;
case 2:
if (msi->u.s.ProductType == 1) str = "XP";
else if (msi->u.s.ProductType == 3) str = "Server 2003";
if (msi->ProductType == 1) str = "XP";
else if (msi->ProductType == 3) str = "Server 2003";
else str = "5-????";
break;
default: str = "5-????"; break;
@ -345,23 +342,23 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
switch (msi->MinorVersion)
{
case 0:
if (msi->u.s.ProductType == 1) str = "Vista";
else if (msi->u.s.ProductType == 3) str = "Server 2008";
if (msi->ProductType == 1) str = "Vista";
else if (msi->ProductType == 3) str = "Server 2008";
else str = "6-????";
break;
case 1:
if (msi->u.s.ProductType == 1) str = "Win7";
else if (msi->u.s.ProductType == 3) str = "Server 2008";
if (msi->ProductType == 1) str = "Win7";
else if (msi->ProductType == 3) str = "Server 2008";
else str = "6-????";
break;
case 2:
if (msi->u.s.ProductType == 1) str = "Win8";
else if (msi->u.s.ProductType == 3) str = "Server 2012";
if (msi->ProductType == 1) str = "Win8";
else if (msi->ProductType == 3) str = "Server 2012";
else str = "6-????";
break;
case 3:
if (msi->u.s.ProductType == 1) str = "Win8.1";
else if (msi->u.s.ProductType == 3) str = "Server 2012 R2";
if (msi->ProductType == 1) str = "Win8.1";
else if (msi->ProductType == 3) str = "Server 2012 R2";
else str = "6-????";
break;
default: str = "6-????"; break;
@ -371,7 +368,7 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
switch (msi->MinorVersion)
{
case 0:
if (msi->u.s.ProductType == 1) str = "Win10";
if (msi->ProductType == 1) str = "Win10";
else str = "10-????";
break;
default: str = "10-????"; break;