Change watchpoints to be more flexible - and more similar to 2.3.7

This commit is contained in:
Stanislav Shwartsman 2008-10-08 17:13:35 +00:00
parent ab716f62aa
commit 0e66403a25
4 changed files with 288 additions and 252 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: dbg_main.cc,v 1.160 2008-10-07 07:47:56 akrisak Exp $
// $Id: dbg_main.cc,v 1.161 2008-10-08 17:13:35 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -115,14 +115,10 @@ static disassembler bx_disassemble;
static Bit8u bx_disasm_ibuf[32];
static char bx_disasm_tbuf[512];
// watchpoints
static struct watchp {
bx_phy_address watch;
Bit32u handle;
unsigned type; // BX_READ, BX_WRITE, BX_RW
} watchpoint[BX_DBG_MAX_WATCHPONTS];
static unsigned num_watchpoints = 0;
unsigned num_write_watchpoints = 0;
unsigned num_read_watchpoints = 0;
bx_phy_address write_watchpoint[BX_DBG_MAX_WATCHPONTS];
bx_phy_address read_watchpoint[BX_DBG_MAX_WATCHPONTS];
bx_bool watchpoint_continue = 0;
#define DBG_PRINTF_BUFFER_LEN 1024
@ -535,11 +531,20 @@ void bx_dbg_halt(unsigned cpu)
void bx_dbg_check_memory_watchpoints(unsigned cpu, bx_phy_address phy, unsigned len, unsigned rw)
{
// Check for physical write watch points
// TODO: Each breakpoint should have an associated CPU#
for (unsigned i = 0; i < num_watchpoints; i++) {
if (watchpoint[i].type == rw || watchpoint[i].type == BX_RW) {
if (watchpoint[i].watch >= phy && watchpoint[i].watch < (phy + len)) {
if (rw == BX_WRITE) {
// Check for physical write watch points
for (unsigned i = 0; i < num_write_watchpoints; i++) {
if (write_watchpoint[i] >= phy && write_watchpoint[i] < (phy + len)) {
BX_CPU(cpu)->watchpoint = phy;
BX_CPU(cpu)->break_point = rw;
break;
}
}
}
else {
// Check for physical read watch points
for (unsigned i = 0; i < num_read_watchpoints; i++) {
if (read_watchpoint[i] >= phy && read_watchpoint[i] < (phy + len)) {
BX_CPU(cpu)->watchpoint = phy;
BX_CPU(cpu)->break_point = rw;
break;
@ -1517,52 +1522,71 @@ void bx_dbg_watch(int type, bx_phy_address address)
{
if (type == -1) {
// print watch point info
for (unsigned i = 0; i < num_watchpoints; i++) {
for (unsigned i = 0; i < num_read_watchpoints; i++) {
Bit8u buf[2];
if (BX_MEM(0)->dbg_fetch_mem(BX_CPU(dbg_cpu), watchpoint[i].watch, 2, buf))
dbg_printf("%4d %s 0x"FMT_PHY_ADDRX" (%04x)\n",
watchpoint[i].handle,
watchpoint[i].type == BX_READ ? "RD" : (watchpoint[i].type == BX_WRITE ? "WR" : "RW"),
watchpoint[i].watch, (int)buf[0] | ((int)buf[1] << 8));
if (BX_MEM(0)->dbg_fetch_mem(BX_CPU(dbg_cpu), read_watchpoint[i], 2, buf))
dbg_printf("rd 0x"FMT_PHY_ADDRX" (%04x)\n",
read_watchpoint[i], (int)buf[0] | ((int)buf[1] << 8));
else
dbg_printf("%4d %s 0x"FMT_PHY_ADDRX" (read error)\n",
watchpoint[i].handle,
watchpoint[i].type == BX_READ ? "RD" : (watchpoint[i].type == BX_WRITE ? "WR" : "RW"),
watchpoint[i].watch);
dbg_printf("rd 0x"FMT_PHY_ADDRX" (read error)\n", read_watchpoint[i]);
}
for (unsigned i = 0; i < num_write_watchpoints; i++) {
Bit8u buf[2];
if (BX_MEM(0)->dbg_fetch_mem(BX_CPU(dbg_cpu), write_watchpoint[i], 2, buf))
dbg_printf("wr 0x"FMT_PHY_ADDRX" (%04x)\n",
write_watchpoint[i], (int)buf[0] | ((int)buf[1] << 8));
else
dbg_printf("wr 0x"FMT_PHY_ADDRX" (read error)\n", write_watchpoint[i]);
}
} else {
if (num_watchpoints == BX_DBG_MAX_WATCHPONTS) {
dbg_printf("Too many watchpoints (%d)\n", BX_DBG_MAX_WATCHPONTS);
return;
if (type == BX_READ) {
if (num_read_watchpoints == BX_DBG_MAX_WATCHPONTS) {
dbg_printf("Too many read watchpoints (%d)\n", BX_DBG_MAX_WATCHPONTS);
return;
}
read_watchpoint[num_read_watchpoints++] = address;
dbg_printf("read watchpoint at 0x" FMT_PHY_ADDRX " inserted\n", address);
}
else {
if (num_write_watchpoints == BX_DBG_MAX_WATCHPONTS) {
dbg_printf("Too many write watchpoints (%d)\n", BX_DBG_MAX_WATCHPONTS);
return;
}
write_watchpoint[num_write_watchpoints++] = address;
dbg_printf("write watchpoint at 0x" FMT_PHY_ADDRX " inserted\n", address);
}
watchpoint[num_watchpoints].watch = address;
watchpoint[num_watchpoints].type = type;
watchpoint[num_watchpoints].handle = bx_debugger.next_wpoint_id++;
dbg_printf("watchpoint %d at 0x" FMT_PHY_ADDRX " inserted\n", watchpoint[num_watchpoints].handle, address);
num_watchpoints++;
}
}
void bx_dbg_unwatch(int handle)
void bx_dbg_unwatch(bx_phy_address address)
{
if (handle == -1) {
if (address == (bx_phy_address) -1) {
// unwatch all
num_watchpoints = 0;
bx_debugger.next_wpoint_id = 1;
num_read_watchpoints = num_write_watchpoints = 0;
dbg_printf("All watchpoints removed\n");
return;
}
// see if breakpoint is a physical breakpoint
for (unsigned i=0; i<num_watchpoints; i++) {
if (watchpoint[i].handle == (Bit32u) handle) {
dbg_printf("watchpoint %d at 0x" FMT_PHY_ADDRX " removed\n", watchpoint[i].handle, watchpoint[i].watch);
for (unsigned i=0; i<num_read_watchpoints; i++) {
if (read_watchpoint[i] == address) {
dbg_printf("read watchpoint at 0x" FMT_PHY_ADDRX " removed\n", address);
// found watchpoint, delete it by shifting remaining entries left
for (unsigned j=i; j<(num_watchpoints-1); j++) {
watchpoint[j].watch = watchpoint[j+1].watch;
watchpoint[j].type = watchpoint[j+1].type;
for (unsigned j=i; j<(num_read_watchpoints-1); j++) {
read_watchpoint[j] = read_watchpoint[j+1];
}
num_watchpoints--;
num_read_watchpoints--;
break;
}
}
for (unsigned i=0; i<num_write_watchpoints; i++) {
if (write_watchpoint[i] == address) {
dbg_printf("write watchpoint at 0x" FMT_PHY_ADDRX " removed\n", address);
// found watchpoint, delete it by shifting remaining entries left
for (unsigned j=i; j<(num_write_watchpoints-1); j++) {
write_watchpoint[j] = write_watchpoint[j+1];
}
num_write_watchpoints--;
break;
}
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: debug.h,v 1.46 2008-08-07 21:09:29 sshwarts Exp $
// $Id: debug.h,v 1.47 2008-10-08 17:13:35 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -240,7 +240,7 @@ void bx_dbg_show_command(const char*);
void bx_dbg_print_stack_command(unsigned nwords);
extern bx_bool watchpoint_continue;
void bx_dbg_watch(int type, bx_phy_address address);
void bx_dbg_unwatch(int handle);
void bx_dbg_unwatch(bx_phy_address handle);
void bx_dbg_continue_command(void);
void bx_dbg_stepN_command(Bit32u count);
void bx_dbg_set_auto_disassemble(bx_bool enable);

View File

@ -548,7 +548,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 267
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 1148
#define YYLAST 1202
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 117
@ -661,8 +661,8 @@ static const yytype_int16 yyrhs[] =
111, -1, 64, 120, 111, -1, 65, 120, 111, -1,
66, 120, 111, -1, 75, 111, -1, 75, 87, 111,
-1, 76, 61, 111, -1, 76, 17, 111, -1, 76,
111, -1, 76, 78, 87, 111, -1, 76, 79, 87,
111, -1, 77, 111, -1, 77, 87, 111, -1, 81,
111, -1, 76, 78, 168, 111, -1, 76, 79, 168,
111, -1, 77, 111, -1, 77, 168, 111, -1, 81,
60, 111, -1, 81, 60, 87, 111, -1, 81, 84,
60, 111, -1, 81, 84, 60, 87, 111, -1, 85,
111, -1, 86, 87, 111, -1, 17, 111, -1, 18,
@ -927,7 +927,7 @@ static const yytype_uint8 yydefact[] =
0, 0, 0, 0, 0, 0, 149, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 67, 0, 0,
0, 0, 62, 0, 71, 0, 0, 0, 0, 75,
0, 78, 0, 0, 65, 0, 0, 0, 106, 84,
78, 0, 0, 0, 65, 0, 0, 0, 106, 84,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -973,61 +973,61 @@ static const yytype_int16 yydefgoto[] =
#define YYPACT_NINF -155
static const yytype_int16 yypact[] =
{
757, -97, -76, -95, 15, -84, 543, 397, 312, -56,
-53, -43, 910, -75, -41, -40, -36, -35, -31, -30,
371, 23, -13, 32, 6, 246, -37, 4, 12, 14,
14, 14, -11, 17, 18, 41, 59, 13, -74, 11,
-72, -52, -28, -51, 16, 36, 560, 835, 560, -155,
679, -155, -155, -155, -155, -155, -155, -155, -155, -155,
789, -97, -76, -95, 15, -84, 560, 397, 312, -58,
-53, -31, 942, -75, -49, -47, -40, -30, -10, -7,
371, 6, -4, 46, -26, 246, -37, 16, 19, 83,
83, 83, 8, 36, 37, 65, 68, 21, -74, 11,
429, -52, -45, -51, 40, 43, 577, 867, 577, -155,
688, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, 19, -155, -155,
20, 24, 25, 39, 40, 46, 14, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, 41, -155, -155,
47, 53, 54, 56, 57, 58, 83, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, 577, -155, 577, 577, -155, 1023, -155,
-155, -155, -155, -155, 43, -155, -155, -155, -155, 560,
-155, 560, 560, -155, 348, -155, 560, -155, 858, 48,
54, 55, 57, 58, 60, 38, 38, 38, 38, 61,
62, 63, 65, -50, -26, 66, 67, 79, -155, -155,
-155, -155, -155, -155, -155, 429, -155, 870, 68, 83,
81, -54, 82, 514, 84, 85, -155, 42, 87, 88,
89, 107, -155, -155, 102, 103, 105, -155, 111, 112,
113, 124, -155, 125, -155, 126, 127, 109, 147, -155,
129, -155, 133, 134, -155, -46, 75, 136, -155, -155,
149, 882, 150, 156, 157, 158, 159, 160, 161, 162,
163, 174, 186, 187, 188, 189, 190, 191, 192, 193,
194, 196, 197, 198, 199, 200, 201, 217, 218, 219,
221, 227, 228, 230, 232, 233, 237, 239, 240, 241,
242, 243, 244, 245, 247, -155, 903, -155, -155, -155,
560, 560, 560, 560, 560, 253, 248, -155, -155, 123,
577, 577, 577, 577, 577, 577, 577, 577, 577, 577,
-155, 249, 249, -10, 560, 560, 560, 560, 560, 560,
560, 560, 560, -155, 560, 915, -155, -155, -155, -155,
-155, -155, -155, -155, 38, 38, 38, 38, -155, -155,
-155, -155, 252, -155, 277, -155, -155, -155, -155, -155,
927, -155, 254, 279, -155, 256, -155, -155, -155, 104,
-155, 281, 560, -155, 939, -155, -155, -155, 258, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, 259,
260, -155, -155, -155, 262, -155, -45, -155, -155, -155,
-155, -155, -155, 690, -155, 690, 690, -155, 1067, -155,
-155, -155, -155, -155, 60, -155, -155, -155, -155, 577,
-155, 577, 577, -155, 123, -155, 577, -155, 135, 61,
62, 63, 66, 67, 79, 71, 71, 71, 71, 81,
82, 84, 85, -50, -48, 86, 87, 102, -155, -155,
-155, -155, -155, -155, -155, 514, -155, 348, 94, 89,
103, -54, 105, 543, 111, 112, -155, 42, 124, 133,
134, 107, -155, -155, 136, 149, 150, -155, 156, 157,
158, 159, -155, 160, -155, 161, 162, 577, 577, -155,
-155, 890, 163, 174, -155, -46, 237, 187, -155, -155,
188, 902, 189, 190, 191, 192, 193, 194, 196, 197,
198, 199, 200, 201, 217, 218, 219, 221, 227, 228,
230, 232, 233, 239, 240, 241, 244, 245, 247, 248,
254, 255, 257, 259, 260, 262, 274, 275, 276, 277,
278, 279, 280, 281, 282, -155, 914, -155, -155, -155,
577, 577, 577, 577, 577, 253, 283, -155, -155, -11,
690, 690, 690, 690, 690, 690, 690, 690, 690, 690,
-155, 110, 110, -28, 577, 577, 577, 577, 577, 577,
577, 577, 577, -155, 577, 935, -155, -155, -155, -155,
-155, -155, -155, -155, 71, 71, 71, 71, -155, -155,
-155, -155, 284, -155, 261, -155, -155, -155, -155, -155,
947, -155, 285, 310, -155, 287, -155, -155, -155, 104,
-155, 327, 577, -155, 959, -155, -155, -155, 305, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, 971,
983, -155, -155, -155, 306, -155, -43, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, 951, 963, 975, 987, 999, 274,
-155, -155, -155, -155, -29, -29, -29, -29, -155, -155,
-155, 500, -155, 249, 249, 135, 135, 135, 135, 249,
249, 249, 1035, -155, 275, 276, 278, 280, -155, -27,
-155, -155, 282, -155, -155, 1011, 283, 229, -155, -155,
-155, -155, -155, 284, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, 301, -155, -155, -155,
-155, -155, 285, -155
-155, -155, -155, -155, 995, 1007, 1019, 1031, 1043, 309,
-155, -155, -155, -155, 29, 29, 29, 29, -155, -155,
-155, 1091, -155, 110, 110, 229, 229, 229, 229, 110,
110, 110, 1079, -155, 311, 313, 314, 317, -155, -27,
-155, -155, 318, -155, -155, 1055, 319, 256, -155, -155,
-155, -155, -155, 332, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, 334, -155, -155, -155,
-155, -155, 333, -155
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-155, -155, 76, -24, -5, -155, -155, -155, -155, -155,
-155, -155, 398, -24, -5, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -154, -155,
-155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
@ -1043,51 +1043,51 @@ static const yytype_int16 yypgoto[] =
static const yytype_int16 yytable[] =
{
148, 127, 315, 316, 317, 476, 195, 196, 212, 217,
322, 97, 177, 203, 96, 210, 99, 187, 100, 101,
102, 103, 104, 277, 188, 278, 279, 107, 205, 192,
193, 149, 215, 335, 150, 98, 168, 204, 221, 211,
266, 364, 463, 213, 151, 129, 130, 131, 132, 133,
113, 114, 115, 116, 117, 118, 216, 336, 189, 214,
218, 323, 181, 182, 324, 365, 464, 105, 280, 281,
169, 170, 206, 106, 179, 171, 172, 286, 287, 288,
173, 174, 276, 178, 477, 325, 180, 294, 295, 207,
208, 190, 296, 297, 298, 299, 300, 301, 302, 191,
197, 200, 145, 304, 198, 199, 432, 129, 130, 131,
132, 133, 113, 114, 115, 116, 117, 118, 127, 201,
127, 127, 209, 220, 202, 313, 268, 219, 332, 135,
269, 291, 270, 292, 293, 366, 271, 272, 305, 294,
322, 97, 177, 203, 96, 215, 99, 187, 100, 101,
102, 103, 104, 277, 188, 278, 279, 107, 205, 149,
181, 182, 211, 335, 150, 98, 168, 204, 221, 216,
266, 364, 324, 213, 463, 129, 130, 131, 132, 133,
113, 114, 115, 116, 117, 118, 151, 336, 189, 214,
218, 323, 169, 325, 170, 365, 178, 105, 464, 294,
295, 171, 206, 106, 296, 297, 298, 299, 300, 301,
302, 172, 276, 179, 477, 304, 280, 281, 432, 207,
208, 282, 283, 284, 285, 286, 287, 288, 192, 193,
180, 173, 145, 190, 174, 421, 191, 129, 130, 131,
132, 133, 113, 114, 115, 116, 117, 118, 127, 197,
127, 127, 209, 198, 199, 200, 280, 281, 201, 135,
220, 291, 202, 292, 293, 286, 287, 288, 305, 294,
295, 136, 137, 138, 296, 342, 298, 299, 300, 301,
302, 273, 274, 343, 290, 304, 141, 142, 275, 307,
444, 445, 446, 447, 145, 308, 309, 330, 310, 311,
333, 312, 318, 319, 320, 339, 321, 326, 327, 344,
302, 219, 269, 343, 332, 304, 141, 142, 313, 270,
444, 445, 446, 447, 145, 271, 272, 330, 273, 274,
275, 290, 307, 308, 309, 339, 333, 310, 311, 344,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
328, 135, 334, 337, 348, 340, 359, 341, 345, 346,
347, 294, 295, 136, 137, 138, 296, 342, 298, 299,
300, 301, 302, 349, 350, 454, 351, 304, 141, 142,
280, 281, 352, 353, 354, 282, 283, 284, 285, 286,
287, 288, 294, 295, 360, 355, 356, 357, 358, 421,
361, 300, 301, 302, 362, 363, 0, 367, 304, 129,
312, 135, 318, 319, 348, 320, 321, 326, 327, 359,
360, 294, 295, 136, 137, 138, 296, 342, 298, 299,
300, 301, 302, 328, 334, 454, 337, 304, 141, 142,
294, 295, 340, 304, 341, 296, 297, 298, 299, 300,
301, 302, 294, 295, 303, 345, 304, 296, 297, 298,
299, 300, 301, 302, 346, 347, 306, 349, 304, 129,
130, 131, 132, 133, 113, 114, 115, 116, 117, 118,
368, 370, 414, 415, 416, 417, 418, 371, 372, 373,
374, 375, 376, 377, 378, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 379, 433, 434, 435, 436,
437, 438, 439, 440, 441, 183, 442, 380, 381, 382,
383, 384, 385, 386, 387, 388, 145, 389, 390, 391,
392, 393, 394, 184, 185, 129, 130, 131, 132, 133,
113, 114, 115, 116, 117, 118, -250, -250, 395, 396,
397, 455, 398, 135, 457, -250, -250, -250, 399, 400,
419, 401, 304, 402, 403, 136, 137, 138, 404, 139,
405, 406, 407, 408, 409, 410, 411, 186, 412, 420,
141, 142, 304, 448, 449, 451, 452, 453, 456, 459,
460, 461, 145, 462, 129, 130, 131, 132, 133, 113,
114, 115, 116, 117, 118, 470, 472, 473, 482, 474,
0, 475, 0, 478, 480, 481, 483, 0, 0, 135,
350, 351, 414, 415, 416, 417, 418, 352, 353, 354,
355, 356, 357, 358, 362, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 363, 433, 434, 435, 436,
437, 438, 439, 440, 441, 183, 442, 366, 367, 368,
370, 371, 372, 373, 374, 375, 145, 376, 377, 378,
379, 380, 381, 184, 185, 129, 130, 131, 132, 133,
113, 114, 115, 116, 117, 118, 294, 295, 382, 383,
384, 455, 385, 135, 457, 300, 301, 302, 386, 387,
419, 388, 304, 389, 390, 136, 137, 138, 449, 139,
391, 392, 393, -250, -250, 394, 395, 186, 396, 397,
141, 142, -250, -250, -250, 398, 399, 0, 400, 304,
401, 402, 145, 403, 129, 130, 131, 132, 133, 113,
114, 115, 116, 117, 118, 404, 405, 406, 407, 408,
409, 410, 411, 412, 420, 448, 451, 452, 453, 135,
129, 130, 131, 132, 133, 113, 114, 115, 116, 117,
118, 136, 137, 138, 0, 139, 0, 0, 146, 175,
0, 0, 0, 147, 0, 0, 141, 142, 0, 0,
0, 145, 129, 130, 131, 132, 133, 113, 114, 115,
116, 117, 118, 0, 0, 294, 295, 0, 0, 0,
296, 297, 298, 299, 300, 301, 302, 134, 135, 303,
118, 136, 137, 138, 456, 139, 459, 462, 146, 175,
470, 482, 472, 147, 473, 474, 141, 142, 475, 478,
480, 145, 129, 130, 131, 132, 133, 113, 114, 115,
116, 117, 118, 481, 483, 294, 295, 0, 268, 0,
296, 297, 298, 299, 300, 301, 302, 134, 135, 331,
0, 304, 0, 0, 0, 0, 0, 0, 0, 0,
136, 137, 138, 0, 139, 0, 0, 0, 0, 0,
0, 0, 176, 0, 135, 141, 142, 0, 0, 145,
@ -1096,22 +1096,33 @@ static const yytype_int16 yytable[] =
0, 141, 142, 0, 0, 0, 135, 129, 130, 131,
132, 133, 113, 114, 115, 116, 117, 118, 136, 137,
138, 0, 139, 0, 0, 0, 0, 0, 0, 0,
329, 0, 0, 141, 142, 0, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 0, 0, 0,
0, 0, 0, 129, 130, 131, 132, 133, 113, 114,
210, 0, 0, 141, 142, 0, 129, 130, 131, 132,
133, 113, 114, 115, 116, 117, 118, 0, 0, 0,
0, 0, 0, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 145, 0, 0, 0, 0, 0,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 0, 0, 0, 0, 0, 0, 280, 281, 0,
0, 135, 282, 283, 284, 285, 286, 287, 288, 0,
0, 471, 0, 136, 137, 138, 0, 139, 0, 0,
145, 0, 0, 0, 0, 338, 0, 0, 141, 142,
119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 120, 121, 122, 0, 123, 135, 0, 0,
0, 0, 0, 0, 124, 0, 0, 125, 126, 136,
137, 138, 0, 139, 119, 0, 0, 0, 0, 0,
0, 0, 0, 0, 141, 142, 120, 121, 122, 267,
123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 125, 126, 0, 0, 0, 1, 2, 3, 0,
129, 130, 131, 132, 133, 113, 114, 115, 116, 117,
118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 135, 0, 145, 0, 0, 0, 0, 0, 0,
0, 0, 0, 136, 137, 138, 0, 139, 0, 0,
0, 0, 0, 0, 0, 329, 0, 0, 141, 142,
135, 0, 0, 0, 0, 0, 0, 145, 0, 0,
0, 0, 136, 137, 138, 0, 139, 119, 0, 0,
0, 0, 0, 0, 338, 0, 0, 141, 142, 120,
121, 122, 0, 123, 135, 0, 0, 0, 0, 0,
0, 124, 0, 0, 125, 126, 136, 137, 138, 0,
139, 0, 0, 0, 0, 0, 0, 0, 267, 0,
0, 141, 142, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 0, 1, 2, 3, 0, 4,
0, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 0, 15, 16, 17, 0, 0, 0, 0, 0,
0, 0, 0, 18, 19, 20, 0, 0, 21, 22,
0, 23, 0, 24, 0, 0, 25, 26, 0, 0,
27, 28, 29, 30, 31, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 0, 41, 42,
0, 43, 0, 44, 45, 0, 0, 119, 46, 47,
48, 0, 0, 0, 0, 0, 0, 0, 0, 120,
121, 122, 0, 123, 0, 0, 0, 0, 0, 49,
0, 0, 0, 0, 125, 126, 1, 2, 3, 0,
4, 0, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 0, 15, 16, 17, 0, 0, 0, 0,
0, 0, 0, 0, 18, 19, 20, 0, 0, 21,
@ -1119,93 +1130,88 @@ static const yytype_int16 yytable[] =
0, 27, 28, 29, 30, 31, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 0, 41,
42, 0, 43, 0, 44, 45, 0, 0, 0, 46,
47, 48, 0, 0, 1, 2, 3, 0, 4, 0,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
49, 15, 16, 17, 0, 0, 0, 0, 0, 0,
0, 0, 18, 19, 20, 0, 0, 21, 22, 0,
23, 0, 24, 0, 0, 25, 26, 0, 0, 27,
28, 29, 30, 31, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 0, 41, 42, 0,
43, 0, 44, 45, 0, 0, 0, 46, 47, 48,
0, 0, 222, 223, 224, 0, 225, 0, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 49, 236,
237, 238, 0, 0, 0, 0, 0, 0, 0, 0,
239, 240, 241, 0, 0, 242, 243, 0, 0, 0,
0, 0, 0, 244, 245, 0, 0, 0, 246, 247,
248, 249, 0, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 0, 0, 259, 260, 0, 261, 0,
0, 0, 0, 0, 152, 262, 263, 264, 0, 0,
0, 0, 0, 0, 0, 0, 153, 0, 0, 0,
0, 0, 0, 154, 0, 0, 265, 155, 156, 157,
158, 159, 160, 161, 162, 294, 295, 0, 0, 0,
296, 297, 298, 299, 300, 301, 302, 294, 295, 306,
0, 304, 296, 297, 298, 299, 300, 301, 302, 294,
295, 331, 0, 304, 296, 297, 298, 299, 300, 301,
302, 0, 163, 369, 0, 304, 0, 0, 164, 165,
294, 295, 0, 166, 167, 296, 297, 298, 299, 300,
301, 302, 294, 295, 413, 0, 304, 296, 297, 298,
47, 48, 0, 0, 222, 223, 224, 0, 225, 0,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
49, 236, 237, 238, 0, 0, 0, 0, 0, 0,
0, 0, 239, 240, 241, 0, 0, 242, 243, 0,
0, 0, 0, 0, 0, 244, 245, 0, 0, 0,
246, 247, 248, 249, 0, 0, 250, 251, 252, 253,
254, 255, 256, 257, 258, 0, 0, 259, 260, 0,
261, 0, 0, 0, 0, 0, 152, 262, 263, 264,
0, 0, 0, 0, 0, 0, 0, 0, 153, 0,
0, 0, 0, 0, 0, 154, 0, 0, 265, 155,
156, 157, 158, 159, 160, 161, 162, 294, 295, 0,
0, 0, 296, 297, 298, 299, 300, 301, 302, 294,
295, 361, 0, 304, 296, 297, 298, 299, 300, 301,
302, 294, 295, 369, 0, 304, 296, 297, 298, 299,
300, 301, 302, 0, 163, 413, 0, 304, 0, 0,
164, 165, 294, 295, 0, 166, 167, 296, 297, 298,
299, 300, 301, 302, 294, 295, 443, 0, 304, 296,
297, 298, 299, 300, 301, 302, 294, 295, 450, 0,
304, 296, 297, 298, 299, 300, 301, 302, 294, 295,
458, 0, 304, 296, 297, 298, 299, 300, 301, 302,
294, 295, 465, 0, 304, 296, 297, 298, 299, 300,
301, 302, 294, 295, 466, 0, 304, 296, 297, 298,
299, 300, 301, 302, 294, 295, 467, 0, 304, 296,
297, 298, 299, 300, 301, 302, 294, 295, 468, 0,
294, 295, 460, 0, 304, 296, 297, 298, 299, 300,
301, 302, 294, 295, 461, 0, 304, 296, 297, 298,
299, 300, 301, 302, 294, 295, 465, 0, 304, 296,
297, 298, 299, 300, 301, 302, 294, 295, 466, 0,
304, 296, 297, 298, 299, 300, 301, 302, 294, 295,
469, 0, 304, 296, 297, 298, 299, 300, 301, 302,
280, 281, 479, 0, 304, 282, 283, 284, 285, 286,
287, 288, 294, 295, 0, 0, 289, 296, 297, 298,
299, 300, 301, 302, 0, 0, 0, 0, 304
467, 0, 304, 296, 297, 298, 299, 300, 301, 302,
294, 295, 468, 0, 304, 296, 297, 298, 299, 300,
301, 302, 294, 295, 469, 0, 304, 296, 297, 298,
299, 300, 301, 302, 280, 281, 479, 0, 304, 282,
283, 284, 285, 286, 287, 288, 294, 295, 0, 0,
289, 296, 297, 298, 299, 300, 301, 302, 280, 281,
0, 0, 304, 282, 283, 284, 285, 286, 287, 288,
0, 0, 471
};
static const yytype_int16 yycheck[] =
{
8, 6, 156, 157, 158, 32, 30, 31, 60, 60,
60, 87, 20, 87, 111, 87, 111, 25, 3, 4,
5, 6, 7, 123, 61, 125, 126, 111, 17, 15,
16, 87, 60, 87, 87, 111, 111, 111, 46, 111,
48, 87, 87, 95, 87, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 84, 111, 95, 111,
111, 111, 56, 57, 90, 111, 111, 52, 97, 98,
111, 111, 61, 58, 87, 111, 111, 106, 107, 108,
111, 111, 106, 60, 111, 111, 54, 97, 98, 78,
79, 87, 102, 103, 104, 105, 106, 107, 108, 87,
111, 60, 60, 113, 87, 87, 116, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 123, 60,
125, 126, 111, 87, 111, 87, 50, 111, 60, 87,
111, 139, 112, 141, 142, 60, 112, 112, 146, 97,
60, 87, 20, 87, 111, 60, 111, 25, 3, 4,
5, 6, 7, 123, 61, 125, 126, 111, 17, 87,
56, 57, 40, 87, 87, 111, 111, 111, 46, 84,
48, 87, 90, 95, 87, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 87, 111, 95, 111,
111, 111, 111, 111, 111, 111, 60, 52, 111, 97,
98, 111, 61, 58, 102, 103, 104, 105, 106, 107,
108, 111, 106, 87, 111, 113, 97, 98, 116, 78,
79, 102, 103, 104, 105, 106, 107, 108, 15, 16,
54, 111, 60, 87, 111, 116, 87, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 123, 111,
125, 126, 111, 87, 87, 60, 97, 98, 60, 87,
87, 139, 111, 141, 142, 106, 107, 108, 146, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
108, 112, 112, 111, 111, 113, 114, 115, 112, 111,
314, 315, 316, 317, 60, 111, 111, 175, 111, 111,
87, 111, 111, 111, 111, 183, 111, 111, 111, 187,
108, 111, 111, 111, 60, 113, 114, 115, 87, 112,
314, 315, 316, 317, 60, 112, 112, 175, 112, 112,
112, 111, 111, 111, 111, 183, 87, 111, 111, 187,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
111, 87, 111, 111, 87, 111, 87, 112, 111, 111,
111, 97, 98, 99, 100, 101, 102, 103, 104, 105,
111, 87, 111, 111, 87, 111, 111, 111, 111, 207,
208, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 108, 111, 111, 111, 111, 113, 114, 115,
97, 98, 111, 111, 111, 102, 103, 104, 105, 106,
107, 108, 97, 98, 87, 111, 111, 111, 111, 116,
111, 106, 107, 108, 111, 111, -1, 111, 113, 3,
97, 98, 111, 113, 112, 102, 103, 104, 105, 106,
107, 108, 97, 98, 111, 111, 113, 102, 103, 104,
105, 106, 107, 108, 111, 111, 111, 111, 113, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
111, 111, 270, 271, 272, 273, 274, 111, 111, 111,
111, 111, 111, 111, 111, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 111, 294, 295, 296, 297,
298, 299, 300, 301, 302, 49, 304, 111, 111, 111,
298, 299, 300, 301, 302, 49, 304, 60, 111, 111,
111, 111, 111, 111, 111, 111, 60, 111, 111, 111,
111, 111, 111, 67, 68, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 97, 98, 111, 111,
111, 339, 111, 87, 342, 106, 107, 108, 111, 111,
87, 111, 113, 111, 111, 99, 100, 101, 111, 103,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
114, 115, 113, 111, 87, 111, 87, 111, 87, 111,
87, 111, 113, 111, 111, 99, 100, 101, 87, 103,
111, 111, 111, 97, 98, 111, 111, 111, 111, 111,
114, 115, 106, 107, 108, 111, 111, -1, 111, 113,
111, 111, 60, 111, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 111, 111, 111, 87, 111,
-1, 111, -1, 111, 111, 111, 111, -1, -1, 87,
9, 10, 11, 12, 13, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 87, 111, 87,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 99, 100, 101, -1, 103, -1, -1, 106, 48,
-1, -1, -1, 111, -1, -1, 114, 115, -1, -1,
-1, 60, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, -1, -1, 97, 98, -1, -1, -1,
13, 99, 100, 101, 87, 103, 111, 111, 106, 48,
111, 87, 111, 111, 111, 111, 114, 115, 111, 111,
111, 60, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 111, 111, 97, 98, -1, 50, -1,
102, 103, 104, 105, 106, 107, 108, 60, 87, 111,
-1, 113, -1, -1, -1, -1, -1, -1, -1, -1,
99, 100, 101, -1, 103, -1, -1, -1, -1, -1,
@ -1220,17 +1226,28 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 60, -1, -1, -1, -1, -1,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, -1, -1, -1, -1, -1, -1, 97, 98, -1,
-1, 87, 102, 103, 104, 105, 106, 107, 108, -1,
-1, 111, -1, 99, 100, 101, -1, 103, -1, -1,
60, -1, -1, -1, -1, 111, -1, -1, 114, 115,
87, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 87, -1, 60, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 99, 100, 101, -1, 103, -1, -1,
-1, -1, -1, -1, -1, 111, -1, -1, 114, 115,
87, -1, -1, -1, -1, -1, -1, 60, -1, -1,
-1, -1, 99, 100, 101, -1, 103, 87, -1, -1,
-1, -1, -1, -1, 111, -1, -1, 114, 115, 99,
100, 101, -1, 103, 87, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 114, 115, 99, 100, 101, 0,
103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 114, 115, -1, -1, -1, 17, 18, 19, -1,
-1, 111, -1, -1, 114, 115, 99, 100, 101, -1,
103, -1, -1, -1, -1, -1, -1, -1, 0, -1,
-1, 114, 115, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, -1, 17, 18, 19, -1, 21,
-1, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, -1, 34, 35, 36, -1, -1, -1, -1, -1,
-1, -1, -1, 45, 46, 47, -1, -1, 50, 51,
-1, 53, -1, 55, -1, -1, 58, 59, -1, -1,
62, 63, 64, 65, 66, -1, -1, 69, 70, 71,
72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
-1, 83, -1, 85, 86, -1, -1, 87, 90, 91,
92, -1, -1, -1, -1, -1, -1, -1, -1, 99,
100, 101, -1, 103, -1, -1, -1, -1, -1, 111,
-1, -1, -1, -1, 114, 115, 17, 18, 19, -1,
21, -1, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, -1, 34, 35, 36, -1, -1, -1, -1,
-1, -1, -1, -1, 45, 46, 47, -1, -1, 50,
@ -1242,27 +1259,18 @@ static const yytype_int16 yycheck[] =
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
111, 34, 35, 36, -1, -1, -1, -1, -1, -1,
-1, -1, 45, 46, 47, -1, -1, 50, 51, -1,
53, -1, 55, -1, -1, 58, 59, -1, -1, 62,
-1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
63, 64, 65, 66, -1, -1, 69, 70, 71, 72,
73, 74, 75, 76, 77, -1, -1, 80, 81, -1,
83, -1, 85, 86, -1, -1, -1, 90, 91, 92,
-1, -1, 17, 18, 19, -1, 21, -1, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 111, 34,
35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
45, 46, 47, -1, -1, 50, 51, -1, -1, -1,
-1, -1, -1, 58, 59, -1, -1, -1, 63, 64,
65, 66, -1, -1, 69, 70, 71, 72, 73, 74,
75, 76, 77, -1, -1, 80, 81, -1, 83, -1,
-1, -1, -1, -1, 14, 90, 91, 92, -1, -1,
-1, -1, -1, -1, -1, -1, 26, -1, -1, -1,
-1, -1, -1, 33, -1, -1, 111, 37, 38, 39,
40, 41, 42, 43, 44, 97, 98, -1, -1, -1,
102, 103, 104, 105, 106, 107, 108, 97, 98, 111,
-1, 113, 102, 103, 104, 105, 106, 107, 108, 97,
83, -1, -1, -1, -1, -1, 14, 90, 91, 92,
-1, -1, -1, -1, -1, -1, -1, -1, 26, -1,
-1, -1, -1, -1, -1, 33, -1, -1, 111, 37,
38, 39, 40, 41, 42, 43, 44, 97, 98, -1,
-1, -1, 102, 103, 104, 105, 106, 107, 108, 97,
98, 111, -1, 113, 102, 103, 104, 105, 106, 107,
108, -1, 82, 111, -1, 113, -1, -1, 88, 89,
97, 98, -1, 93, 94, 102, 103, 104, 105, 106,
107, 108, 97, 98, 111, -1, 113, 102, 103, 104,
108, 97, 98, 111, -1, 113, 102, 103, 104, 105,
106, 107, 108, -1, 82, 111, -1, 113, -1, -1,
88, 89, 97, 98, -1, 93, 94, 102, 103, 104,
105, 106, 107, 108, 97, 98, 111, -1, 113, 102,
103, 104, 105, 106, 107, 108, 97, 98, 111, -1,
113, 102, 103, 104, 105, 106, 107, 108, 97, 98,
@ -1274,8 +1282,12 @@ static const yytype_int16 yycheck[] =
113, 102, 103, 104, 105, 106, 107, 108, 97, 98,
111, -1, 113, 102, 103, 104, 105, 106, 107, 108,
97, 98, 111, -1, 113, 102, 103, 104, 105, 106,
107, 108, 97, 98, -1, -1, 113, 102, 103, 104,
105, 106, 107, 108, -1, -1, -1, -1, 113
107, 108, 97, 98, 111, -1, 113, 102, 103, 104,
105, 106, 107, 108, 97, 98, 111, -1, 113, 102,
103, 104, 105, 106, 107, 108, 97, 98, -1, -1,
113, 102, 103, 104, 105, 106, 107, 108, 97, 98,
-1, -1, 113, 102, 103, 104, 105, 106, 107, 108,
-1, -1, 111
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@ -1303,7 +1315,7 @@ static const yytype_uint8 yystos[] =
54, 56, 57, 49, 67, 68, 111, 168, 61, 95,
87, 87, 15, 16, 120, 120, 120, 111, 87, 87,
60, 60, 111, 87, 111, 17, 61, 78, 79, 111,
87, 111, 60, 95, 111, 60, 84, 60, 111, 111,
111, 168, 60, 95, 111, 60, 84, 60, 111, 111,
87, 168, 17, 18, 19, 21, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 34, 35, 36, 45,
46, 47, 50, 51, 58, 59, 63, 64, 65, 66,
@ -1317,8 +1329,8 @@ static const yytype_uint8 yystos[] =
111, 111, 60, 111, 90, 111, 111, 111, 111, 111,
168, 111, 60, 87, 111, 87, 111, 111, 111, 168,
111, 112, 103, 111, 168, 111, 111, 111, 87, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 87,
87, 111, 111, 111, 87, 111, 60, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 168,
168, 111, 111, 111, 87, 111, 60, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
@ -3259,8 +3271,8 @@ yyreduce:
case 195:
#line 1023 "parser.y"
{
dbg_printf("unwatch - remove all watch points\n");
dbg_printf("unwatch handle - remove a watch point\n");
dbg_printf("unwatch - remove all watch points\n");
dbg_printf("unwatch addr - remove a watch point\n");
free((yyvsp[(1) - (3)].sval));free((yyvsp[(2) - (3)].sval));
}
break;
@ -3617,7 +3629,7 @@ yyreduce:
/* Line 1267 of yacc.c. */
#line 3621 "y.tab.c"
#line 3633 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: parser.y,v 1.32 2008-09-12 21:03:56 sshwarts Exp $
// $Id: parser.y,v 1.33 2008-10-08 17:13:35 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
%{
@ -329,12 +329,12 @@ watch_point_command:
bx_dbg_watch(-1, 0);
free($1);
}
| BX_TOKEN_WATCH BX_TOKEN_READ BX_TOKEN_NUMERIC '\n'
| BX_TOKEN_WATCH BX_TOKEN_READ expression '\n'
{
bx_dbg_watch(0, $3); /* BX_READ */
free($1); free($2);
}
| BX_TOKEN_WATCH BX_TOKEN_WRITE BX_TOKEN_NUMERIC '\n'
| BX_TOKEN_WATCH BX_TOKEN_WRITE expression '\n'
{
bx_dbg_watch(1, $3); /* BX_WRITE */
free($1); free($2);
@ -344,7 +344,7 @@ watch_point_command:
bx_dbg_unwatch(-1);
free($1);
}
| BX_TOKEN_UNWATCH BX_TOKEN_NUMERIC '\n'
| BX_TOKEN_UNWATCH expression '\n'
{
bx_dbg_unwatch($2);
free($1);
@ -1021,8 +1021,8 @@ help_command:
}
| BX_TOKEN_HELP BX_TOKEN_UNWATCH '\n'
{
dbg_printf("unwatch - remove all watch points\n");
dbg_printf("unwatch handle - remove a watch point\n");
dbg_printf("unwatch - remove all watch points\n");
dbg_printf("unwatch addr - remove a watch point\n");
free($1);free($2);
}
| BX_TOKEN_HELP BX_TOKEN_EXAMINE '\n'