|
|
|
@ -344,7 +344,7 @@ i386_follow_jump (CORE_ADDR pc) |
|
|
|
long delta = 0; |
|
|
|
int data16 = 0; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
if (op == 0x66) |
|
|
|
{ |
|
|
|
data16 = 1; |
|
|
|
@ -410,12 +410,12 @@ i386_analyze_struct_return (CORE_ADDR pc, CORE_ADDR current_pc, |
|
|
|
if (current_pc <= pc) |
|
|
|
return pc; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
|
|
|
|
if (op != 0x58) /* popl %eax */ |
|
|
|
return pc; |
|
|
|
|
|
|
|
read_memory_nobpt (pc + 1, buf, 4); |
|
|
|
target_read_memory (pc + 1, buf, 4); |
|
|
|
if (memcmp (buf, proto1, 3) != 0 && memcmp (buf, proto2, 4) != 0) |
|
|
|
return pc; |
|
|
|
|
|
|
|
@ -454,7 +454,7 @@ i386_skip_probe (CORE_ADDR pc) |
|
|
|
gdb_byte buf[8]; |
|
|
|
gdb_byte op; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
|
|
|
|
if (op == 0x68 || op == 0x6a) |
|
|
|
{ |
|
|
|
@ -541,7 +541,7 @@ i386_match_insn (CORE_ADDR pc, struct i386_insn *skip_insns) |
|
|
|
struct i386_insn *insn; |
|
|
|
gdb_byte op; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
|
|
|
|
for (insn = skip_insns; insn->len > 0; insn++) |
|
|
|
{ |
|
|
|
@ -554,7 +554,7 @@ i386_match_insn (CORE_ADDR pc, struct i386_insn *skip_insns) |
|
|
|
gdb_assert (insn->len > 1); |
|
|
|
gdb_assert (insn->len <= I386_MAX_INSN_LEN); |
|
|
|
|
|
|
|
read_memory_nobpt (pc + 1, buf, insn->len - 1); |
|
|
|
target_read_memory (pc + 1, buf, insn->len - 1); |
|
|
|
for (i = 1; i < insn->len; i++) |
|
|
|
{ |
|
|
|
if ((buf[i - 1] & insn->mask[i]) != insn->insn[i]) |
|
|
|
@ -632,7 +632,7 @@ i386_skip_noop (CORE_ADDR pc) |
|
|
|
gdb_byte op; |
|
|
|
int check = 1; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
|
|
|
|
while (check) |
|
|
|
{ |
|
|
|
@ -641,7 +641,7 @@ i386_skip_noop (CORE_ADDR pc) |
|
|
|
if (op == 0x90) |
|
|
|
{ |
|
|
|
pc += 1; |
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
check = 1; |
|
|
|
} |
|
|
|
/* Ignore no-op instruction `mov %edi, %edi'.
|
|
|
|
@ -657,11 +657,11 @@ i386_skip_noop (CORE_ADDR pc) |
|
|
|
|
|
|
|
else if (op == 0x8b) |
|
|
|
{ |
|
|
|
read_memory_nobpt (pc + 1, &op, 1); |
|
|
|
target_read_memory (pc + 1, &op, 1); |
|
|
|
if (op == 0xff) |
|
|
|
{ |
|
|
|
pc += 2; |
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
check = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -685,7 +685,7 @@ i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR limit, |
|
|
|
if (limit <= pc) |
|
|
|
return limit; |
|
|
|
|
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
|
|
|
|
if (op == 0x55) /* pushl %ebp */ |
|
|
|
{ |
|
|
|
@ -720,7 +720,7 @@ i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR limit, |
|
|
|
if (limit <= pc + skip) |
|
|
|
return limit; |
|
|
|
|
|
|
|
read_memory_nobpt (pc + skip, &op, 1); |
|
|
|
target_read_memory (pc + skip, &op, 1); |
|
|
|
|
|
|
|
/* Check for `movl %esp, %ebp' -- can be written in two ways. */ |
|
|
|
switch (op) |
|
|
|
@ -754,7 +754,7 @@ i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR limit, |
|
|
|
|
|
|
|
NOTE: You can't subtract a 16-bit immediate from a 32-bit |
|
|
|
reg, so we don't have to worry about a data16 prefix. */ |
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
if (op == 0x83) |
|
|
|
{ |
|
|
|
/* `subl' with 8-bit immediate. */ |
|
|
|
@ -810,7 +810,7 @@ i386_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc, |
|
|
|
offset -= cache->locals; |
|
|
|
for (i = 0; i < 8 && pc < current_pc; i++) |
|
|
|
{ |
|
|
|
read_memory_nobpt (pc, &op, 1); |
|
|
|
target_read_memory (pc, &op, 1); |
|
|
|
if (op < 0x50 || op > 0x57) |
|
|
|
break; |
|
|
|
|
|
|
|
@ -900,7 +900,7 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
|
|
|
|
|
|
|
for (i = 0; i < 6; i++) |
|
|
|
{ |
|
|
|
read_memory_nobpt (pc + i, &op, 1); |
|
|
|
target_read_memory (pc + i, &op, 1); |
|
|
|
if (pic_pat[i] != op) |
|
|
|
break; |
|
|
|
} |
|
|
|
@ -908,7 +908,7 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
|
|
|
{ |
|
|
|
int delta = 6; |
|
|
|
|
|
|
|
read_memory_nobpt (pc + delta, &op, 1); |
|
|
|
target_read_memory (pc + delta, &op, 1); |
|
|
|
|
|
|
|
if (op == 0x89) /* movl %ebx, x(%ebp) */ |
|
|
|
{ |
|
|
|
@ -921,7 +921,7 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
|
|
|
else /* Unexpected instruction. */ |
|
|
|
delta = 0; |
|
|
|
|
|
|
|
read_memory_nobpt (pc + delta, &op, 1); |
|
|
|
target_read_memory (pc + delta, &op, 1); |
|
|
|
} |
|
|
|
|
|
|
|
/* addl y,%ebx */ |
|
|
|
|