* hppa-tdep.c (hppa_debug): New variable.
(find_unwind_entry, hppa_frame_cache): Add debug output.
(_initialize_hppa_tdep): Add command to set debug flag.
+2004-04-22 Randolph Chung <tausq@debian.org>
+
+ * hppa-tdep.c (hppa_debug): New variable.
+ (find_unwind_entry, hppa_frame_cache): Add debug output.
+ (_initialize_hppa_tdep): Add command to set debug flag.
+
2004-04-22 Andrew Cagney <cagney@redhat.com>
* ppcnbsd-tdep.c: Update copyright. Include "tramp-frame.h" and
2004-04-22 Andrew Cagney <cagney@redhat.com>
* ppcnbsd-tdep.c: Update copyright. Include "tramp-frame.h" and
#include "objfiles.h"
#include "hppa-tdep.h"
#include "objfiles.h"
#include "hppa-tdep.h"
+static int hppa_debug = 0;
+
/* Some local constants. */
static const int hppa32_num_regs = 128;
static const int hppa64_num_regs = 96;
/* Some local constants. */
static const int hppa32_num_regs = 128;
static const int hppa64_num_regs = 96;
struct objfile *objfile;
struct hppa_objfile_private *priv;
struct objfile *objfile;
struct hppa_objfile_private *priv;
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "{ find_unwind_entry 0x%s -> ",
+ paddr_nz (pc));
+
/* A function at address 0? Not in HP-UX! */
if (pc == (CORE_ADDR) 0)
/* A function at address 0? Not in HP-UX! */
if (pc == (CORE_ADDR) 0)
+ {
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "NULL }\n");
+ return NULL;
+ }
if (ui->cache
&& pc >= ui->cache->region_start
&& pc <= ui->cache->region_end)
if (ui->cache
&& pc >= ui->cache->region_start
&& pc <= ui->cache->region_end)
+ {
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "0x%s (cached) }\n",
+ paddr_nz ((CORE_ADDR) ui->cache));
+ return ui->cache;
+ }
/* Not in the cache, do a binary search */
/* Not in the cache, do a binary search */
&& pc <= ui->table[middle].region_end)
{
ui->cache = &ui->table[middle];
&& pc <= ui->table[middle].region_end)
{
ui->cache = &ui->table[middle];
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "0x%s }\n",
+ paddr_nz ((CORE_ADDR) ui->cache));
return &ui->table[middle];
}
return &ui->table[middle];
}
first = middle + 1;
}
} /* ALL_OBJFILES() */
first = middle + 1;
}
} /* ALL_OBJFILES() */
+
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "NULL (not found) }\n");
+
struct unwind_table_entry *u;
int i;
struct unwind_table_entry *u;
int i;
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "{ hppa_frame_cache (frame=%d) -> ",
+ frame_relative_level(next_frame));
+
if ((*this_cache) != NULL)
if ((*this_cache) != NULL)
+ {
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "base=0x%s (cached) }",
+ paddr_nz (((struct hppa_frame_cache *)*this_cache)->base));
+ return (*this_cache);
+ }
cache = FRAME_OBSTACK_ZALLOC (struct hppa_frame_cache);
(*this_cache) = cache;
cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
cache = FRAME_OBSTACK_ZALLOC (struct hppa_frame_cache);
(*this_cache) = cache;
cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
/* Yow! */
u = find_unwind_entry (frame_func_unwind (next_frame));
if (!u)
/* Yow! */
u = find_unwind_entry (frame_func_unwind (next_frame));
if (!u)
+ {
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "base=NULL (no unwind entry) }");
+ return (*this_cache);
+ }
/* Turn the Entry_GR field into a bitmask. */
saved_gr_mask = 0;
/* Turn the Entry_GR field into a bitmask. */
saved_gr_mask = 0;
+ if (hppa_debug)
+ fprintf_unfiltered (gdb_stdlog, "base=0x%s }",
+ paddr_nz (((struct hppa_frame_cache *)*this_cache)->base));
break_at_finish_at_depth_command,
"Set breakpoint at procedure exit. Either there should\n\
be no argument or the argument must be a depth.\n"), NULL);
break_at_finish_at_depth_command,
"Set breakpoint at procedure exit. Either there should\n\
be no argument or the argument must be a depth.\n"), NULL);
+
+ /* Debug this files internals. */
+ add_show_from_set (add_set_cmd ("hppa", class_maintenance, var_zinteger,
+ &hppa_debug, "Set hppa debugging.\n\
+When non-zero, hppa specific debugging is enabled.", &setdebuglist), &showdebuglist);