From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5475 invoked by alias); 5 Jan 2011 21:04:32 -0000 Received: (qmail 5457 invoked by uid 22791); 5 Jan 2011 21:04:31 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 05 Jan 2011 21:04:25 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id p05L4OJ2012713 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Jan 2011 16:04:24 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p05L4N7v001866; Wed, 5 Jan 2011 16:04:24 -0500 Received: from opsy.redhat.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id p05L4N4m026633; Wed, 5 Jan 2011 16:04:23 -0500 Received: by opsy.redhat.com (Postfix, from userid 500) id D6CE637848D; Wed, 5 Jan 2011 14:04:22 -0700 (MST) From: Tom Tromey To: Mark Kettenis Cc: gdb-patches@sourceware.org Subject: Re: RFA: document frame types, plus add missing ones References: <201101052053.p05KrX6H003178@glazunov.sibelius.xs4all.nl> Date: Wed, 05 Jan 2011 21:04:00 -0000 In-Reply-To: <201101052053.p05KrX6H003178@glazunov.sibelius.xs4all.nl> (Mark Kettenis's message of "Wed, 5 Jan 2011 21:53:33 +0100 (CET)") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-01/txt/msg00090.txt.bz2 >> +@item gdb.SIGTRAMP_FRAME >> +A frame in a signal handler. Mark> Hmm, actualy, the frame for what most people consider the signal Mark> handler is a NORMAL_FRAME. The SIGTRAMP_FRAME is the frame Mark> immediately preceding the signal handler. It is for the "signal Mark> trampoline", the bit of (low-level) code provided by the kernel or Mark> libc that runs the true signal handler. I updated this. Thanks. >> +@item gdb.ARCH_FRAME >> +A fake stack frame representing a cross-architecture call. Mark> Oh, we have those now? Yes, I think for the SPU only. See ppc-linux-tdep.c and spu-tdep.c. >> +@item gdb.SENTINEL_FRAME >> +This is like @code{gdb.NORMAL_FRAME}, but it is only used for the >> +newest frame. Mark> Ah, so by "newest frame" you really mean "innermost frame". Yes. My recollection is that when exporting this to Python, there was some confusion about terms like "inner" and "outer", or "up" and "down", or "next" and "previous". So, we went with "newer" and "older", which seem less confusion-provoking... unless one is already a gdb developer :) Tom 2011-01-05 Tom Tromey * python/py-frame.c (gdbpy_initialize_frames): Add INLINE_FRAME and ARCH_FRAME. 2011-01-05 Tom Tromey PR python/12133: * gdb.texinfo (Frames In Python): Document various frame constants. Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.783 diff -u -r1.783 gdb.texinfo --- doc/gdb.texinfo 5 Jan 2011 05:09:52 -0000 1.783 +++ doc/gdb.texinfo 5 Jan 2011 21:03:32 -0000 @@ -22536,9 +22536,30 @@ @end defmethod @defmethod Frame type -Returns the type of the frame. The value can be one of -@code{gdb.NORMAL_FRAME}, @code{gdb.DUMMY_FRAME}, @code{gdb.SIGTRAMP_FRAME} -or @code{gdb.SENTINEL_FRAME}. +Returns the type of the frame. The value can be one of: +@table @code +@item gdb.NORMAL_FRAME +An ordinary stack frame. + +@item gdb.DUMMY_FRAME +A fake stack frame that was created by @value{GDBN} when performing an +inferior function call. + +@item gdb.INLINE_FRAME +A frame representing an inlined function. The function was inlined +into a @code{gdb.NORMAL_FRAME} that is newer than this one. + +@item gdb.SIGTRAMP_FRAME +A signal trampoline frame. This is the frame created by the OS when +it calls into a signal handler. + +@item gdb.ARCH_FRAME +A fake stack frame representing a cross-architecture call. + +@item gdb.SENTINEL_FRAME +This is like @code{gdb.NORMAL_FRAME}, but it is only used for the +newest frame. +@end table @end defmethod @defmethod Frame unwind_stop_reason Index: python/py-frame.c =================================================================== RCS file: /cvs/src/src/gdb/python/py-frame.c,v retrieving revision 1.10 diff -u -r1.10 py-frame.c --- python/py-frame.c 1 Jan 2011 15:33:25 -0000 1.10 +++ python/py-frame.c 5 Jan 2011 21:03:32 -0000 @@ -574,7 +574,9 @@ That seems too messy. */ PyModule_AddIntConstant (gdb_module, "NORMAL_FRAME", NORMAL_FRAME); PyModule_AddIntConstant (gdb_module, "DUMMY_FRAME", DUMMY_FRAME); + PyModule_AddIntConstant (gdb_module, "INLINE_FRAME", INLINE_FRAME); PyModule_AddIntConstant (gdb_module, "SIGTRAMP_FRAME", SIGTRAMP_FRAME); + PyModule_AddIntConstant (gdb_module, "ARCH_FRAME", ARCH_FRAME); PyModule_AddIntConstant (gdb_module, "SENTINEL_FRAME", SENTINEL_FRAME); PyModule_AddIntConstant (gdb_module, "FRAME_UNWIND_NO_REASON", UNWIND_NO_REASON);