diff options
author | Randolph Chung <tausq@debian.org> | 2004-04-23 02:51:52 +0000 |
---|---|---|
committer | Randolph Chung <tausq@debian.org> | 2004-04-23 02:51:52 +0000 |
commit | 369aa5203706c51ab15c9ecc8edfff92c4e10d69 (patch) | |
tree | aed6e6d88718f6ae6d1a17baf65aa3f4158d1090 /gdb/hppa-tdep.c | |
parent | 1f1799d5ad9c8f2af8bebf4df515507c87659a9c (diff) | |
download | gdb-369aa5203706c51ab15c9ecc8edfff92c4e10d69.zip gdb-369aa5203706c51ab15c9ecc8edfff92c4e10d69.tar.gz gdb-369aa5203706c51ab15c9ecc8edfff92c4e10d69.tar.bz2 |
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.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 46a5d00..26b73dc 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -54,6 +54,8 @@ #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; @@ -607,9 +609,17 @@ find_unwind_entry (CORE_ADDR pc) 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) - return NULL; + { + if (hppa_debug) + fprintf_unfiltered (gdb_stdlog, "NULL }\n"); + return NULL; + } ALL_OBJFILES (objfile) { @@ -633,7 +643,12 @@ find_unwind_entry (CORE_ADDR pc) if (ui->cache && pc >= ui->cache->region_start && pc <= ui->cache->region_end) - return ui->cache; + { + 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 */ @@ -647,6 +662,9 @@ find_unwind_entry (CORE_ADDR pc) && 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]; } @@ -656,6 +674,10 @@ find_unwind_entry (CORE_ADDR pc) first = middle + 1; } } /* ALL_OBJFILES() */ + + if (hppa_debug) + fprintf_unfiltered (gdb_stdlog, "NULL (not found) }\n"); + return NULL; } @@ -2041,8 +2063,17 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache) 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) - return (*this_cache); + { + 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); @@ -2050,7 +2081,11 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache) /* Yow! */ u = find_unwind_entry (frame_func_unwind (next_frame)); if (!u) - return (*this_cache); + { + 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; @@ -2245,6 +2280,9 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache) } } + if (hppa_debug) + fprintf_unfiltered (gdb_stdlog, "base=0x%s }", + paddr_nz (((struct hppa_frame_cache *)*this_cache)->base)); return (*this_cache); } @@ -2776,5 +2814,10 @@ 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); } |