From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2293 invoked by alias); 31 Aug 2017 21:51:37 -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 2262 invoked by uid 89); 31 Aug 2017 21:51:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,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; Thu, 31 Aug 2017 21:51:36 +0000 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C3CD081DE8; Thu, 31 Aug 2017 21:51:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C3CD081DE8 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.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 0908A600C4; Thu, 31 Aug 2017 21:51:33 +0000 (UTC) Subject: Re: [PATCH] Add a 'starti' command. To: John Baldwin , gdb-patches@sourceware.org References: <20170829225457.66096-1-jhb@FreeBSD.org> From: Pedro Alves Message-ID: <645c49bd-86fb-88c8-e22c-3613a72f2be7@redhat.com> Date: Thu, 31 Aug 2017 21:51: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: <20170829225457.66096-1-jhb@FreeBSD.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-08/txt/msg00551.txt.bz2 Hi John, On 08/30/2017 12:54 AM, John Baldwin wrote: > This works like 'start' but it stops at the first instruction rather than > the first line in main(). This is useful if one wants to single step > through runtime linker startup. I like the idea. I actually once wrote a patch quite similar to this. I had called the command "create", inspired by "target_create_inferior". Is there a reason to actually set a breakpoint at the first instruction and run to it, actually? My old prototype just created the inferior and didn't resume it all, see: https://github.com/palves/gdb/commits/create_command though maybe going through normal_stop may be a good idea. I agree with Keith - this should really have some tests. For example: - write a global constructor that sets a flag, and then check that the flag is still clear when we're still at the entry point. This can be either a C++ test or a C test using __attribute__ ((constructor))- - After creating the inferior, check that you can manually set a break on main, and continue to it. - Try backtrace, and check that only one frame comes out. That may expose buggy unwinders that don't stop unwinding at the entry point currently, but then that should be fixed anyway, since users will run into that too. Thanks, Pedro Alves