Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758763AbcLANA3 (ORCPT ); Thu, 1 Dec 2016 08:00:29 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44640 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757785AbcLANA2 (ORCPT ); Thu, 1 Dec 2016 08:00:28 -0500 Date: Thu, 1 Dec 2016 14:00:25 +0100 From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: Peter Foley , LKML , wangnan0@huawei.com Subject: [PATCHv3] tools build: Make fixdep parsing wait for last target Message-ID: <20161201130025.GA16430@krava> References: <20161128024346.17371-1-pefoley2@pefoley.com> <20161128113928.GD9072@krava> <20161128150024.GG2267@redhat.com> <20161128165859.GC30148@krava> <20161128194046.GB2361@redhat.com> <20161129142808.GA10972@krava> <20161129143314.GC2361@redhat.com> <20161129143935.GA22691@krava> <20161129144904.GD2361@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161129144904.GD2361@redhat.com> User-Agent: Mutt/1.7.1 (2016-10-04) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 01 Dec 2016 13:00:27 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4069 Lines: 102 On Tue, Nov 29, 2016 at 12:49:04PM -0200, Arnaldo Carvalho de Melo wrote: > Em Tue, Nov 29, 2016 at 03:39:35PM +0100, Jiri Olsa escreveu: > > On Tue, Nov 29, 2016 at 12:33:15PM -0200, Arnaldo Carvalho de Melo wrote: > > > Em Tue, Nov 29, 2016 at 03:28:08PM +0100, Jiri Olsa escreveu: > > > > On Mon, Nov 28, 2016 at 05:40:46PM -0200, Arnaldo Carvalho de Melo wrote: > > > > > > > > SNIP > > > > > > > > > CC /tmp/build/perf/builtin-buildid-list.o > > > > > LD /tmp/build/perf/pmu-events/pmu-events-in.o > > > > > CC /tmp/build/perf/arch/x86/util/intel-bts.o > > > > > CC /tmp/build/perf/builtin-buildid-cache.o > > > > > CC /tmp/build/perf/builtin-list.o > > > > > LD /tmp/build/perf/arch/x86/util/libperf-in.o > > > > > MKDIR /tmp/build/perf/arch/x86/tests/ > > > > > CC /tmp/build/perf/arch/x86/tests/regs_load.o > > > > > /tmp/build/perf/.plugin_jbd2.o.cmd:3: *** empty variable name. Stop. > > > > > Makefile:192: recipe for target '/tmp/build/perf/plugin_jbd2-in.o' failed > > > > > make[2]: *** [/tmp/build/perf/plugin_jbd2-in.o] Error 2 > > > > > Makefile.perf:591: recipe for target '/tmp/build/perf/libtraceevent-dynamic-list' failed > > > > > make[1]: *** [/tmp/build/perf/libtraceevent-dynamic-list] Error 2 > > > > > make[1]: *** Waiting for unfinished jobs.... > > > > > MKDIR /tmp/build/perf/arch/x86/tests/ > > > > > CC /tmp/build/perf/arch/x86/tests/arch-tests.o > > > > > > > > > > CC /tmp/build/perf/util/pmu.o > > > > > CC /tmp/build/perf/util/pmu-flex.o > > > > > LD /tmp/build/perf/util/libperf-in.o > > > > > LD /tmp/build/perf/libperf-in.o > > > > > Makefile:108: recipe for target 'install-bin' failed > > > > > make: *** [install-bin] Error 2 > > > > > make: Leaving directory '/home/acme/git/linux/tools/perf' > > > > > [acme@jouet linux]$ > > > > > > > > how about following fix.. it gets rid of the -Wp,MT option completely > > > > so it should address Peter's issue.. it also makes fixdep more robust > > > > and makes it wait for first target before spitting out dependencies > > > > > > So this should replace Peter's patch? On top? I'm checking that now... > > > > it's replacement.. also I'll put it into 2 patches > > Ok, just tested, Peter's patch works if I remove ccache, with your patch > replacing it, everything works, with and without ccache, on f25, and it > builds on f24 without ccache, in one of the containers I have. > ok, so v3 actually ;-) the v2 was tricky for the case when fixdep is not available, so I decided to go with Peter's fix and fixing 'fixdep' tool to properly parse out the target in case we hit the ccache error.. we need to be able to do it anyway please apply this patch before Peter's so we keep clean bisect thanks, jirka --- The fixdep tool among other things replaces the target of the object in the gcc generated dependency output file. The parsing code assumes there's only single target in the rule but this is not always the case as described in here: https://gcc.gnu.org/ml/gcc-help/2016-11/msg00099.html Making the fixdep code smart enough to skip all the possible targets. Link: http://lkml.kernel.org/n/tip-anlmi1osaky314m1gu3skdnz@git.kernel.org Signed-off-by: Jiri Olsa --- tools/build/fixdep.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/build/fixdep.c b/tools/build/fixdep.c index 1521d36cef0d..734d1547cbae 100644 --- a/tools/build/fixdep.c +++ b/tools/build/fixdep.c @@ -49,7 +49,7 @@ static void parse_dep_file(void *map, size_t len) char *end = m + len; char *p; char s[PATH_MAX]; - int is_target; + int is_target, has_target = 0; int saw_any_target = 0; int is_first_dep = 0; @@ -67,7 +67,8 @@ static void parse_dep_file(void *map, size_t len) if (is_target) { /* The /next/ file is the first dependency */ is_first_dep = 1; - } else { + has_target = 1; + } else if (has_target) { /* Save this token/filename */ memcpy(s, m, p-m); s[p - m] = 0; -- 2.7.4