aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2004-10-11 02:04:23 +0000
committerJoel Brobecker <brobecker@gnat.com>2004-10-11 02:04:23 +0000
commitc68a4142534e3a8d588f12ad8b279e559bd320d7 (patch)
tree5da74a5610177b747686a8fdeee45feca19f04aa /gdb
parent1da212d6fb911a6b167ffe3d76fcb195525adfdd (diff)
downloadgdb-c68a4142534e3a8d588f12ad8b279e559bd320d7.zip
gdb-c68a4142534e3a8d588f12ad8b279e559bd320d7.tar.gz
gdb-c68a4142534e3a8d588f12ad8b279e559bd320d7.tar.bz2
* mips-tdep.c (mips_insn16_frame_cache): Remove unused variables.
Update comments. Also immediately return empty cache when the start address of our function could not be found. (mips_insn32_frame_cache): Likewise.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/mips-tdep.c36
2 files changed, 19 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e8ac361..058de09 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2004-10-10 Joel Brobecker <brobecker@gnat.com>
+ * mips-tdep.c (mips_insn16_frame_cache): Remove unused variables.
+ Update comments. Also immediately return empty cache when the start
+ address of our function could not be found.
+ (mips_insn32_frame_cache): Likewise.
+
+2004-10-10 Joel Brobecker <brobecker@gnat.com>
+
* mips-tdep.c (mips16_decode_reg_save): Delete, no longer used.
(mips_insn16_frame_cache): Pass frame cache in call to
heuristic_proc_desc. Move some code to mips16_heuristic_proc_desc.
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 682ed62..adf9831c 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1717,14 +1717,7 @@ mips_mdebug_frame_base_sniffer (struct frame_info *next_frame)
static struct mips_frame_cache *
mips_insn16_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- mips_extra_func_info_t proc_desc;
struct mips_frame_cache *cache;
- struct gdbarch *gdbarch = get_frame_arch (next_frame);
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- /* r0 bit means kernel trap */
- int kernel_trap;
- /* What registers have been saved? Bitmasks. */
- unsigned long gen_mask, float_mask;
if ((*this_cache) != NULL)
return (*this_cache);
@@ -1732,7 +1725,7 @@ mips_insn16_frame_cache (struct frame_info *next_frame, void **this_cache)
(*this_cache) = cache;
cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
- /* Synthesize a proc descriptor. */
+ /* Analyze the function prologue. */
{
const CORE_ADDR pc = frame_pc_unwind (next_frame);
CORE_ADDR start_addr;
@@ -1740,8 +1733,12 @@ mips_insn16_frame_cache (struct frame_info *next_frame, void **this_cache)
find_pc_partial_function (pc, NULL, &start_addr, NULL);
if (start_addr == 0)
start_addr = heuristic_proc_start (pc);
+ /* We can't analyze the prologue if we couldn't find the begining
+ of the function. */
+ if (start_addr == 0)
+ return cache;
- proc_desc = heuristic_proc_desc (start_addr, pc, next_frame, *this_cache);
+ heuristic_proc_desc (start_addr, pc, next_frame, *this_cache);
}
/* SP_REGNUM, contains the value and not the address. */
@@ -1822,14 +1819,7 @@ mips_insn16_frame_base_sniffer (struct frame_info *next_frame)
static struct mips_frame_cache *
mips_insn32_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- mips_extra_func_info_t proc_desc;
struct mips_frame_cache *cache;
- struct gdbarch *gdbarch = get_frame_arch (next_frame);
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- /* r0 bit means kernel trap */
- int kernel_trap;
- /* What registers have been saved? Bitmasks. */
- unsigned long gen_mask, float_mask;
if ((*this_cache) != NULL)
return (*this_cache);
@@ -1838,7 +1828,7 @@ mips_insn32_frame_cache (struct frame_info *next_frame, void **this_cache)
(*this_cache) = cache;
cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
- /* Synthesize a proc descriptor. */
+ /* Analyze the function prologue. */
{
const CORE_ADDR pc = frame_pc_unwind (next_frame);
CORE_ADDR start_addr;
@@ -1846,16 +1836,14 @@ mips_insn32_frame_cache (struct frame_info *next_frame, void **this_cache)
find_pc_partial_function (pc, NULL, &start_addr, NULL);
if (start_addr == 0)
start_addr = heuristic_proc_start (pc);
+ /* We can't analyze the prologue if we couldn't find the begining
+ of the function. */
+ if (start_addr == 0)
+ return cache;
- proc_desc = heuristic_proc_desc (start_addr, pc, next_frame, *this_cache);
+ heuristic_proc_desc (start_addr, pc, next_frame, *this_cache);
}
- if (proc_desc == NULL)
- /* I'm not sure how/whether this can happen. Normally when we
- can't find a proc_desc, we "synthesize" one using
- heuristic_proc_desc and set the saved_regs right away. */
- return cache;
-
/* SP_REGNUM, contains the value and not the address. */
trad_frame_set_value (cache->saved_regs, NUM_REGS + MIPS_SP_REGNUM, cache->base);