1 The third patch makes the gdb stubs work on Solaris/Sparc, by doing
2 proper byteswapping. It should be harmless elsewhere.
4 diff -urp orig/bochs-2.1.1/gdbstub.cc bochs-2.1.1/gdbstub.cc
5 --- orig/bochs-2.1.1/gdbstub.cc 2004-02-11 14:28:41.000000000 -0800
6 +++ bochs-2.1.1/gdbstub.cc 2004-09-13 16:41:59.652988000 -0700
7 @@ -474,11 +475,13 @@ static void debug_loop(void)
16 reg = strtoul(&buffer[1], &ebuf, 16);
17 - value = ntohl(strtoul(ebuf + 1, &ebuf, 16));
18 + hex2mem(ebuf + 1, vbits, sizeof value);
19 + ReadHostDWordFromLittleEndian(vbits, value);
21 BX_INFO (("reg %d set to %x", reg, value));
23 @@ -527,35 +530,36 @@ static void debug_loop(void)
35 + WriteHostDWordToLittleEndian(registers + 0, EAX);
36 + WriteHostDWordToLittleEndian(registers + 1, ECX);
37 + WriteHostDWordToLittleEndian(registers + 2, EDX);
38 + WriteHostDWordToLittleEndian(registers + 3, EBX);
39 + WriteHostDWordToLittleEndian(registers + 4, ESP);
40 + WriteHostDWordToLittleEndian(registers + 5, EBP);
41 + WriteHostDWordToLittleEndian(registers + 6, ESI);
42 + WriteHostDWordToLittleEndian(registers + 7, EDI);
43 if (last_stop_reason == GDBSTUB_EXECUTION_BREAKPOINT)
45 - registers[8] = EIP + 1;
46 + WriteHostDWordToLittleEndian(registers + 8, EIP + 1);
51 + WriteHostDWordToLittleEndian(registers + 8, EIP);
53 - registers[9] = BX_CPU_THIS_PTR read_eflags();
55 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].selector.value;
57 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_SS].selector.value;
59 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_DS].selector.value;
61 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_ES].selector.value;
63 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_FS].selector.value;
65 - BX_CPU_THIS_PTR sregs[BX_SEG_REG_GS].selector.value;
66 + WriteHostDWordToLittleEndian(registers + 9,
67 + BX_CPU_THIS_PTR read_eflags());
68 + WriteHostDWordToLittleEndian(registers + 10,
69 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].selector.value);
70 + WriteHostDWordToLittleEndian(registers + 11,
71 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_SS].selector.value);
72 + WriteHostDWordToLittleEndian(registers + 12,
73 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_DS].selector.value);
74 + WriteHostDWordToLittleEndian(registers + 13,
75 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_ES].selector.value);
76 + WriteHostDWordToLittleEndian(registers + 14,
77 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_FS].selector.value);
78 + WriteHostDWordToLittleEndian(registers + 15,
79 + BX_CPU_THIS_PTR sregs[BX_SEG_REG_GS].selector.value);
80 mem2hex((char *)registers, obuf, NUMREGSBYTES);