From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8139 invoked by alias); 22 Jun 2017 15:36:44 -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 8082 invoked by uid 89); 22 Jun 2017 15:36:39 -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,SPF_HELO_PASS,T_RP_MATCHES_RCVD 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, 22 Jun 2017 15:36:37 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7668B41A54; Thu, 22 Jun 2017 15:36:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7668B41A54 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 7668B41A54 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 BDA68619D0; Thu, 22 Jun 2017 15:36:35 +0000 (UTC) Subject: Re: [PATCH 06/25] Generate c for feature instead of tdesc To: Yao Qi References: <1497256916-4958-1-git-send-email-yao.qi@linaro.org> <1497256916-4958-7-git-send-email-yao.qi@linaro.org> <86mv90hyci.fsf@gmail.com> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: <81c7a0ce-71a9-f9dc-e5e3-47f8d162d20d@redhat.com> Date: Thu, 22 Jun 2017 15:36: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: <86mv90hyci.fsf@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-06/txt/msg00654.txt.bz2 On 06/22/2017 03:49 PM, Yao Qi wrote: > Pedro Alves writes: > >> > On 06/12/2017 09:41 AM, Yao Qi wrote: >>> >> +$(FEATURE_CFILES): %.c: %.xml.tmp >>> >> + $(GDB) -nx -q -batch \ >>> >> + -ex 'maint print c-tdesc $<' > $@.tmp >>> >> + sh ../../move-if-change $@.tmp $@ >>> >> + rm $< >>> >> + >>> >> +%.xml.tmp: %.xml >>> >> + echo "" > $@ >>> >> + echo "" >> $@ >>> >> + echo "" >> $@ >>> >> + echo " " >> $@ >>> >> + if test $(findstring i386/32bit-,$@); then echo "i386" >> $@ ; fi; >>> >> + echo " " >> $@ >>> >> + echo " " >> $@ >>> >> + echo "" >> $@ >>> >> + >> > >> > Don't we need move-if-change here? >> > > move-if-change from what to what? *.xml.tmp is removed after *.c is > generated. "*.xml.tmp.tmp" to "*.xml.tmp". I.e., from $@.tmp to $@, just like the rule further above. I may be missing something, but AFAICS, the "%.xml.tmp: %.xml" rule is writing to the target directly. If the build is interrupted in the middle of that rule, we end up with an incomplete "%.xml.tmp" file left over in the file system. Then the next time you invoke make, make will think that the "%.xml.tmp" file is already up to date and won't rebuild it. As a result, you'll pass a broken xml.tmp file to "maint print c-tdesc". Avoiding these issues is the whole point of move-if-change, by atomically creating the target file. Thanks, Pedro Alves