forked from Imagelibrary/binutils-gdb
* alpha-mdebug-tdep.c: Include "gdb_string.h".
(find_proc_desc): Add fix-up code for setjmp procedure descriptor. * mdebugread.c (parse_procedure): Remove setjmp fix-up code. * Makefile.in (alpha-mdebug-tdep.o): Update dependencies. * config/alpha/alpha.mt (DEPRECATED_TM_FILE): Remove. * config/alpha/alpha-linux.mt (DEPRECATED_TM_FILE): Remove. * config/alpha/alpha-osf1.mt (DEPRECATED_TM_FILE): Remove. * config/alpha/fbsd.mt (DEPRECATED_TM_FILE): Remove. * config/alpha/tm-alpha.h: Remove file.
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "gdbcore.h"
|
||||
#include "block.h"
|
||||
#include "gdb_assert.h"
|
||||
#include "gdb_string.h"
|
||||
|
||||
#include "alpha-tdep.h"
|
||||
#include "mdebugread.h"
|
||||
@@ -95,11 +96,12 @@ find_proc_desc (CORE_ADDR pc)
|
||||
struct block *b = block_for_pc (pc);
|
||||
struct mdebug_extra_func_info *proc_desc = NULL;
|
||||
struct symbol *sym = NULL;
|
||||
char *sh_name = NULL;
|
||||
|
||||
if (b)
|
||||
{
|
||||
CORE_ADDR startaddr;
|
||||
find_pc_partial_function (pc, NULL, &startaddr, NULL);
|
||||
find_pc_partial_function (pc, &sh_name, &startaddr, NULL);
|
||||
|
||||
if (startaddr > BLOCK_START (b))
|
||||
/* This is the "pathological" case referred to in a comment in
|
||||
@@ -114,6 +116,16 @@ find_proc_desc (CORE_ADDR pc)
|
||||
{
|
||||
proc_desc = (struct mdebug_extra_func_info *) SYMBOL_VALUE (sym);
|
||||
|
||||
/* Correct incorrect setjmp procedure descriptor from the library
|
||||
to make backtrace through setjmp work. */
|
||||
if (proc_desc->pdr.pcreg == 0
|
||||
&& strcmp (sh_name, "setjmp") == 0)
|
||||
{
|
||||
proc_desc->pdr.pcreg = ALPHA_RA_REGNUM;
|
||||
proc_desc->pdr.regmask = 0x80000000;
|
||||
proc_desc->pdr.regoffset = -4;
|
||||
}
|
||||
|
||||
/* If we never found a PDR for this function in symbol reading,
|
||||
then examine prologues to find the information. */
|
||||
if (proc_desc->pdr.framereg == -1)
|
||||
|
||||
Reference in New Issue
Block a user