* i386-tdep.c (i386_analyze_stack_align): Add handling of two
other possible code sequences that perform a stack realignment.
This commit is contained in:
parent
6df5070e3f
commit
ade5215683
2 changed files with 19 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2006-12-31 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* i386-tdep.c (i386_analyze_stack_align): Add handling of two
|
||||
other possible code sequences that perform a stack realignment.
|
||||
|
||||
2006-12-31 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* sparc64-tdep.h (SPARC64_PSTATE_AG, SPARC64_PSTATE_IE)
|
||||
|
|
|
@ -497,15 +497,27 @@ static CORE_ADDR
|
|||
i386_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc,
|
||||
struct i386_frame_cache *cache)
|
||||
{
|
||||
static const gdb_byte insns[10] = {
|
||||
static const gdb_byte insns_ecx[10] = {
|
||||
0x8d, 0x4c, 0x24, 0x04, /* leal 4(%esp), %ecx */
|
||||
0x83, 0xe4, 0xf0, /* andl $-16, %esp */
|
||||
0xff, 0x71, 0xfc /* pushl -4(%ecx) */
|
||||
};
|
||||
static const gdb_byte insns_edx[10] = {
|
||||
0x8d, 0x54, 0x24, 0x04, /* leal 4(%esp), %edx */
|
||||
0x83, 0xe4, 0xf0, /* andl $-16, %esp */
|
||||
0xff, 0x72, 0xfc /* pushl -4(%edx) */
|
||||
};
|
||||
static const gdb_byte insns_eax[10] = {
|
||||
0x8d, 0x44, 0x24, 0x04, /* leal 4(%esp), %eax */
|
||||
0x83, 0xe4, 0xf0, /* andl $-16, %esp */
|
||||
0xff, 0x70, 0xfc /* pushl -4(%eax) */
|
||||
};
|
||||
gdb_byte buf[10];
|
||||
|
||||
if (target_read_memory (pc, buf, sizeof buf)
|
||||
|| memcmp (buf, insns, sizeof buf) != 0)
|
||||
|| (memcmp (buf, insns_ecx, sizeof buf) != 0
|
||||
&& memcmp (buf, insns_edx, sizeof buf) != 0
|
||||
&& memcmp (buf, insns_eax, sizeof buf) != 0))
|
||||
return pc;
|
||||
|
||||
if (current_pc > pc + 4)
|
||||
|
|
Loading…
Add table
Reference in a new issue