This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [rfa] Add some flags to tramp frame unwinder
- From: Randolph Chung <randolph at tausq dot org>
- To: Andrew Cagney <cagney at gnu dot org>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sun, 12 Dec 2004 19:37:07 -0800
- Subject: Re: [rfa] Add some flags to tramp frame unwinder
- References: <20041209172303.GF29171@tausq.org> <41BC730C.6050609@gnu.org>
- Reply-to: Randolph Chung <randolph at tausq dot org>
> Instead of this, delete the test and in its place add a comment
> explaining what was there. I just hit another similar case - signal
> trampolines on altstacks - where there's either/or a valid symbol or
> segment.
ok, checked in the following
2004-12-12 Randolph Chung <tausq@debian.org>
* tramp-frame.c (tramp_frame_sniffer): Allow frames with names or
sections to be trampolines too.
Index: tramp-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/tramp-frame.c,v
retrieving revision 1.7
diff -u -p -r1.7 tramp-frame.c
--- tramp-frame.c 7 Nov 2004 12:54:58 -0000 1.7
+++ tramp-frame.c 13 Dec 2004 01:35:42 -0000
@@ -122,19 +122,12 @@ tramp_frame_sniffer (const struct frame_
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;
randolph
--
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/