diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-04-20 18:02:54 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-04-20 18:02:54 +0000 |
commit | cee86be37f49b8e1ec399271b9e7a4945faf34e5 (patch) | |
tree | 7e4ad00eb100e5c1d5918fe623efeacd00160a50 | |
parent | 01f5a1f8257c2837c4d3388e0f6b5d13ffb1422b (diff) | |
download | gdb-cee86be37f49b8e1ec399271b9e7a4945faf34e5.zip gdb-cee86be37f49b8e1ec399271b9e7a4945faf34e5.tar.gz gdb-cee86be37f49b8e1ec399271b9e7a4945faf34e5.tar.bz2 |
* rs6000-tdep.c: Delete unused function print_frame.
* frame.h (struct frame_info): Doc fix for next_frame.
New field signal_handler_caller.
blockframe.c (create_new_frame, get_prev_frame_info),
config/rs6000/tm-rs6000.h (INIT_EXTRA_FRAME_INFO): Set it (needs
INIT_FRAME_PC_FIRST).
stack.c (print_frame_info), rs6000-tdep.c (rs6000_frame_chain):
Check it.
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/rs6000-tdep.c | 26 | ||||
-rw-r--r-- | gdb/stack.c | 9 |
3 files changed, 25 insertions, 22 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6f2ca5a..774c63d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +Tue Apr 20 08:55:11 1993 Jim Kingdon (kingdon@cygnus.com) + + * rs6000-tdep.c: Delete unused function print_frame. + + * frame.h (struct frame_info): Doc fix for next_frame. + New field signal_handler_caller. + blockframe.c (create_new_frame, get_prev_frame_info), + config/rs6000/tm-rs6000.h (INIT_EXTRA_FRAME_INFO): Set it (needs + INIT_FRAME_PC_FIRST). + stack.c (print_frame_info), rs6000-tdep.c (rs6000_frame_chain): + Check it. + Mon Apr 19 22:52:33 1993 Stu Grossman (grossman@cygnus.com) * irix4-nat.c (fetch_core_registers): Special version of this for diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 5aa7632..12d3361 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -892,23 +892,6 @@ extract_return_value (valtype, regbuf, valbuf) CORE_ADDR rs6000_struct_return_address; -/* Throw away this debugging code. FIXMEmgo. */ -void -print_frame(fram) -int fram; -{ - int ii, val; - for (ii=0; ii<40; ++ii) { - if ((ii % 4) == 0) - printf ("\n"); - val = read_memory_integer (fram + ii * 4, 4); - printf ("0x%08x\t", val); - } - printf ("\n"); -} - - - /* Indirect function calls use a piece of trampoline code to do context switching, i.e. to set the new TOC table. Skip such code if we are on its first instruction (as when we have single-stepped to here). @@ -1098,12 +1081,8 @@ rs6000_frame_chain (thisframe) FRAME_ADDR fp; if (inside_entry_file ((thisframe)->pc)) return 0; - fp = read_memory_integer ((thisframe)->frame, 4); - if (fp == 0 && thisframe->pc < TEXT_SEGMENT_BASE) + if (thisframe->signal_handler_caller) { - /* If we are doing a backtrace from a signal handler, fp will be 0 - and thisframe->pc will be something like 0x3f88 or 0x2790. */ - /* This was determined by experimentation on AIX 3.2. Perhaps it corresponds to some offset in /usr/include/sys/user.h or something like that. Using some system include file would @@ -1114,6 +1093,9 @@ rs6000_frame_chain (thisframe) #define SIG_FRAME_FP_OFFSET 284 fp = read_memory_integer (thisframe->frame + SIG_FRAME_FP_OFFSET, 4); } + else + fp = read_memory_integer ((thisframe)->frame, 4); + return fp; } diff --git a/gdb/stack.c b/gdb/stack.c index b5f965e..3d3d135 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -152,6 +152,15 @@ print_frame_info (fi, level, source, args) printf_filtered ("<function called from gdb>\n"); return; } + if (fi->signal_handler_caller) + { + /* Do this regardless of SOURCE because we don't have any source + to list for this frame. */ + if (level >= 0) + printf_filtered ("#%-2d ", level); + printf_filtered ("<signal handler called>\n"); + return; + } sal = find_pc_line (fi->pc, fi->next_frame); func = find_pc_function (fi->pc); |