From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 94319 invoked by alias); 15 Apr 2016 19:48:51 -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 94309 invoked by uid 89); 15 Apr 2016 19:48:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=colleagues, qiyaoltc@gmail.com, qiyaoltcgmailcom, our 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 (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 15 Apr 2016 19:48:40 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DE74F3B71F; Fri, 15 Apr 2016 19:48:38 +0000 (UTC) Received: from pinnacle.lan (ovpn-113-52.phx2.redhat.com [10.3.113.52]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u3FJmbfV028923 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA256 bits=256 verify=NO); Fri, 15 Apr 2016 15:48:38 -0400 Date: Fri, 15 Apr 2016 19:48:00 -0000 From: Kevin Buettner To: Yao Qi Cc: gdb-patches@sourceware.org, Luis Machado , Subject: Re: [PATCH 0/8] Break at each iteration for breakpoints placed on a while statement Message-ID: <20160415124832.62f1bf28@pinnacle.lan> In-Reply-To: <86zisvkrqg.fsf@gmail.com> References: <20150818235334.1afb0c85@pinnacle.lan> <86zit9nzac.fsf@gmail.com> <570FC5BB.6060103@codesourcery.com> <86zisvkrqg.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00366.txt.bz2 On Fri, 15 Apr 2016 12:59:19 +0100 Yao Qi wrote: > Luis Machado writes: > > > Thinking about the series, isn't this problem related to the compiler > > optimizing things and/or presenting an imprecise addr/line information > > as opposed to GDB doing the wrong thing. > > I think the address/line information is correct, and compiler does > nothing wrong in this case. The first instruction of for loop is > branch/jmp, which is correctly mapped to the right line. GDB should > insert breakpoint at the place which can be hit in every iteration of > loop on that line, rather than the first instruction of the loop (or line). If the compiler could arrange to set `is_stmt' to false for that inital branch, we could more easily arrange for GDB to not place a break on that initial branch. It might even "just work" without any additional coding on our part. One of my colleagues within Red Hat looked at this and came up with a gcc patch, but it turned out to cause breakage elsewhere. I still think it makes sense to try to tackle this problem from the compiler side though. Kevin