lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 1 Dec 2016 14:00:25 +0100
From:   Jiri Olsa <jolsa@...hat.com>
To:     Arnaldo Carvalho de Melo <acme@...hat.com>
Cc:     Peter Foley <pefoley2@...oley.com>,
        LKML <linux-kernel@...r.kernel.org>, wangnan0@...wei.com
Subject: [PATCHv3] tools build: Make fixdep parsing wait for last target

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
> > > > > <SNIP>
> > > > >   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@...et 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 <jolsa@...nel.org>
---
 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ