From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 58043 invoked by alias); 27 Oct 2017 12:37:35 -0000 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 Received: (qmail 58034 invoked by uid 89); 27 Oct 2017 12:37:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 27 Oct 2017 12:37:33 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 000052FC2 for ; Fri, 27 Oct 2017 12:37:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 000052FC2 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 41BBC177D3; Fri, 27 Oct 2017 12:37:31 +0000 (UTC) Subject: Re: [PATCH 2/2] Report stop locations in inlined functions. To: Keith Seitz , gdb-patches@sourceware.org References: <1499740601-15957-1-git-send-email-keiths@redhat.com> <1499740601-15957-2-git-send-email-keiths@redhat.com> <4bfba041-22f5-1650-1f83-0f8860f202fb@redhat.com> <17ac2bdc-cd7b-d8f1-bf75-056fe87ca916@redhat.com> From: Pedro Alves Message-ID: <092c3398-9989-44b5-ecd9-3026f0b6c4cf@redhat.com> Date: Fri, 27 Oct 2017 12:37:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-10/txt/msg00849.txt.bz2 On 10/20/2017 08:21 PM, Keith Seitz wrote: > > *1 The "simpler" solution (for illustration only) > > diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c > index 32ceea7..4d2ebd8 100644 > --- a/gdb/breakpoint.c > +++ b/gdb/breakpoint.c > @@ -68,6 +68,7 @@ > #include "format.h" > #include "thread-fsm.h" > #include "tid-parse.h" > +#include "inline-frame.h" > > /* readline include files */ > #include "readline/readline.h" > @@ -5359,6 +5360,7 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid) > } > CATCH (ex, RETURN_MASK_ALL) > { > + clear_inline_frame_state (ptid); > exception_fprintf (gdb_stderr, ex, > "Error in testing breakpoint condition:\n"); > } > diff --git a/gdb/infrun.c b/gdb/infrun.c > index d00c5f6..60fd166 100644 > --- a/gdb/infrun.c > +++ b/gdb/infrun.c > @@ -5864,6 +5864,12 @@ handle_signal_stop (struct execution_control_state *ecs) > stop_print_frame = 1; > stopped_by_random_signal = 0; > > + /* See if there is a breakpoint/watchpoint/catchpoint/etc. that > + handles this event. */ > + ecs->event_thread->control.stop_bpstat > + = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), > + stop_pc, ecs->ptid, &ecs->ws); > + > /* Hide inlined functions starting here, unless we just performed stepi or > nexti. After stepi and nexti, always show the innermost frame (not any > inline function call sites). */ > @@ -5894,7 +5900,12 @@ handle_signal_stop (struct execution_control_state *ecs) > ecs->event_thread->prev_pc, > &ecs->ws))) > { > - skip_inline_frames (ecs->ptid); > + struct breakpoint *bpt = NULL; > + > + if (ecs->event_thread->control.stop_bpstat != NULL) > + bpt = ecs->event_thread->control.stop_bpstat->breakpoint_at; > + > + skip_inline_frames (ecs->ptid, bpt); > > /* Re-fetch current thread's frame in case that invalidated > the frame cache. */ > @@ -5939,12 +5950,6 @@ handle_signal_stop (struct execution_control_state *ecs) > } > } > > - /* See if there is a breakpoint/watchpoint/catchpoint/etc. that > - handles this event. */ > - ecs->event_thread->control.stop_bpstat > - = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), > - stop_pc, ecs->ptid, &ecs->ws); > - > /* Following in case break condition called a > function. */ > stop_print_frame = 1; > > > > *2 The more "complex," safer solution (for illustration only) Can you send me these as full patches, or send me the patch they apply on top of too? I'll need to play with it a bit to understand it all better. Thanks, Pedro Alves