diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2007-10-12 16:13:20 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2007-10-12 16:13:20 +0000 |
commit | 62f6180c256958f8bae44944f3db2b13f897631b (patch) | |
tree | 18e70ab9035e94f79c41fd32a989dde1dc4defa1 /gdb/alpha-mdebug-tdep.c | |
parent | ee53e8729a3de34db1558b06f97437517b203b8c (diff) | |
download | gdb-62f6180c256958f8bae44944f3db2b13f897631b.zip gdb-62f6180c256958f8bae44944f3db2b13f897631b.tar.gz gdb-62f6180c256958f8bae44944f3db2b13f897631b.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/alpha-mdebug-tdep.c')
-rw-r--r-- | gdb/alpha-mdebug-tdep.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c index ab2fb91..9c82ad1 100644 --- a/gdb/alpha-mdebug-tdep.c +++ b/gdb/alpha-mdebug-tdep.c @@ -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) |