From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13828 invoked by alias); 9 Oct 2011 19:27:33 -0000 Received: (qmail 13817 invoked by uid 22791); 9 Oct 2011 19:27:32 -0000 X-SWARE-Spam-Status: No, hits=-6.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS 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; Sun, 09 Oct 2011 19:27:15 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p99JREmM011259 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 9 Oct 2011 15:27:15 -0400 Received: from host1.jankratochvil.net (ovpn-116-16.ams2.redhat.com [10.36.116.16]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p99JRCNw003022 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 9 Oct 2011 15:27:14 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p99JRCeN001591 for ; Sun, 9 Oct 2011 21:27:12 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p99JRCOh001590 for gdb-patches@sourceware.org; Sun, 9 Oct 2011 21:27:12 +0200 Date: Sun, 09 Oct 2011 19:27:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: [commit] [patch 04/12] entryval#3: Virtual tail call frames Message-ID: <20111009192712.GD12651@host1.jankratochvil.net> References: <20110929194925.GE26579@host1.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110929194925.GE26579@host1.jankratochvil.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes 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-10/txt/msg00234.txt.bz2 On Thu, 29 Sep 2011 21:49:25 +0200, Jan Kratochvil wrote: > gdb/ > 2011-09-13 Jan Kratochvil > > Recognize virtual tail call frames. > * Makefile.in (SFILES): Add dwarf2-frame-tailcall.c. > (HFILES_NO_SRCDIR): Add dwarf2-frame-tailcall.h. > (COMMON_OBS): Add dwarf2-frame-tailcall.o. > * dwarf2-frame-tailcall.c: New file. > * dwarf2-frame-tailcall.h: New file. > * dwarf2-frame.c: Include dwarf2-frame-tailcall.h. > (execute_cfa_program): New function comment. Return INSN_PTR. Reset > REGS.PREV only after CIE execution. > (struct dwarf2_frame_cache): New field tailcall_cache. > (dwarf2_frame_cache): New variables entry_pc, entry_cfa_sp_offset, > entry_cfa_sp_offset_p and instr. Execute FDE instructions in two > parts, try to find entry_cfa_sp_offset. Call > dwarf2_tailcall_sniffer_first. > (dwarf2_frame_prev_register): Call dwarf2_tailcall_prev_register_first > when appropriate. > (dwarf2_frame_dealloc_cache): New function. > (dwarf2_frame_sniffer): Preinitialize cache by dwarf2_frame_cache. > (dwarf2_frame_unwind): Install dwarf2_frame_dealloc_cache. > (dwarf2_signal_frame_unwind): Do not install dwarf2_frame_dealloc_cache. > (dwarf2_append_unwinders): Add dwarf2_tailcall_frame_unwind. > (dwarf2_frame_cfa): Support also dwarf2_tailcall_frame_unwind. > * dwarf2loc.c (func_addr_to_tail_call_list) > (tailcall_dump, call_sitep, VEC (call_sitep), chain_candidate) > (call_site_find_chain_1, call_site_find_chain): New. > * dwarf2loc.h (struct call_site_chain): New. > (call_site_find_chain): New declaration. > * frame.c (get_frame_address_in_block): Support also TAILCALL_FRAME. > * frame.h (enum frame_type): New entry TAILCALL_FRAME. > * python/py-frame.c (gdbpy_initialize_frames): Add TAILCALL_FRAME. > * stack.c (frame_info): Support also TAILCALL_FRAME. > > gdb/doc/ > 2011-07-18 Jan Kratochvil > Eli Zaretskii > > Recognize virtual tail call frames. > * gdb.texinfo (Optimized Code): Add reference to Tail Call Frames. > (Tail Call Frames): New node. > (Frames In Python): Add gdb.TAILCALL_FRAME. > > gdb/testsuite/ > 2011-07-18 Jan Kratochvil > > Recognize virtual tail call frames. > * gdb.arch/amd64-entry-value.cc (c, a, b, amb_z, amb_y, amb_x, amb) > (amb_b, amb_a): New. > (main): Call a and b. > * gdb.arch/amd64-entry-value.exp (tailcall: breakhere, tailcall: bt) > (tailcall: p i, tailcall: p j, set $sp0=$sp, up, p $sp0 == $sp, frame 3) > (p $sp0 + sizeof (void *) == $sp, ambiguous: breakhere, ambiguous: bt): > New tests. Checked in: http://sourceware.org/ml/gdb-cvs/2011-10/msg00059.html Thanks, Jan