diff options
author | Randolph Chung <tausq@debian.org> | 2004-12-13 03:38:23 +0000 |
---|---|---|
committer | Randolph Chung <tausq@debian.org> | 2004-12-13 03:38:23 +0000 |
commit | 0efcf9dce5173dc3206260261dcf01487e6e8b5d (patch) | |
tree | 20bb9bcf004abc5367a30f90d9f97d77ae9d96c8 | |
parent | af596d0889fcaf8e650797527277817734c61c08 (diff) | |
download | gdb-0efcf9dce5173dc3206260261dcf01487e6e8b5d.zip gdb-0efcf9dce5173dc3206260261dcf01487e6e8b5d.tar.gz gdb-0efcf9dce5173dc3206260261dcf01487e6e8b5d.tar.bz2 |
2004-12-13 Randolph Chung <tausq@debian.org>
* tramp-frame.c (tramp_frame_sniffer): Allow frames with names or
sections to be trampolines too.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/tramp-frame.c | 15 |
2 files changed, 9 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39b3d9d..f0e245e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2004-12-13 Randolph Chung <tausq@debian.org> + + * tramp-frame.c (tramp_frame_sniffer): Allow frames with names or + sections to be trampolines too. + 2004-12-13 Ben Elliston <bje@au.ibm.com> * f-exp.y (typename): Remove unused nonterminal. diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c index 19ce3bd..75fb22f 100644 --- a/gdb/tramp-frame.c +++ b/gdb/tramp-frame.c @@ -122,19 +122,12 @@ tramp_frame_sniffer (const struct frame_unwind *self, const struct tramp_frame *tramp = self->unwind_data->tramp_frame; CORE_ADDR pc = frame_pc_unwind (next_frame); CORE_ADDR func; - char *name; struct tramp_frame_cache *tramp_cache; - /* If the function has a valid symbol name, it isn't a - trampoline. */ - find_pc_partial_function (pc, &name, NULL, NULL); - if (name != NULL) - return 0; - /* If the function lives in a valid section (even without a starting - point) it isn't a trampoline. */ - if (find_pc_section (pc) != NULL) - return 0; - /* Finally, check that the trampoline matches at PC. */ + /* tausq/2004-12-12: We used to assume if pc has a name or is in a valid + section, then this is not a trampoline. However, this assumption is + false on HPUX which has a signal trampoline that has a name; it can + also be false when using an alternative signal stack. */ func = tramp_frame_start (tramp, next_frame, pc); if (func == 0) return 0; |