Line 818... |
Line 818... |
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
static CORE_ADDR
|
static CORE_ADDR
|
or32_skip_prologue (struct gdbarch *gdbarch,
|
or32_skip_prologue (struct gdbarch *gdbarch,
|
CORE_ADDR pc)
|
CORE_ADDR pc)
|
{
|
{
|
|
CORE_ADDR start_pc;
|
CORE_ADDR addr;
|
CORE_ADDR addr;
|
uint32_t inst;
|
uint32_t inst;
|
|
|
unsigned int ra, rb, rd; /* For instruction analysis */
|
unsigned int ra, rb, rd; /* For instruction analysis */
|
int simm;
|
int simm;
|
|
|
int frame_size = 0;
|
int frame_size = 0;
|
|
|
/* Try using SAL first if we have symbolic information available. */
|
/* Try using SAL first if we have symbolic information available. This only
|
/* if (find_pc_partial_function (pc, NULL, NULL, NULL)) */
|
works for DWARF 2, not STABS. */
|
/* { */
|
if (find_pc_partial_function (pc, NULL, &start_pc, NULL))
|
/* CORE_ADDR prologue_end = skip_prologue_using_sal( gdbarch, pc ); */
|
{
|
|
CORE_ADDR prologue_end = skip_prologue_using_sal( gdbarch, pc );
|
/* if (0 != prologue_end) */
|
|
/* { */
|
if (0 != prologue_end)
|
/* return (prologue_end > pc) ? prologue_end : pc; */
|
{
|
/* } */
|
struct symtab_and_line prologue_sal = find_pc_line (start_pc, 0);
|
/* } */
|
char *debug_format = prologue_sal.symtab->debugformat;
|
|
|
|
if ((strlen ("dwarf") <= strlen (debug_format))
|
|
&& (0 == strncasecmp ("dwarf", debug_format, strlen ("dwarf"))))
|
|
{
|
|
return (prologue_end > pc) ? prologue_end : pc;
|
|
}
|
|
}
|
|
}
|
|
|
/* Look to see if we can find any of the standard prologue sequence. All
|
/* Look to see if we can find any of the standard prologue sequence. All
|
quite difficult, since any or all of it may be missing. So this is just a
|
quite difficult, since any or all of it may be missing. So this is just a
|
best guess! */
|
best guess! */
|
addr = pc; /* Where we have got to */
|
addr = pc; /* Where we have got to */
|