aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/tramp-frame.c15
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;