From patchwork Thu Jan 11 13:05:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124194 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp653166qgn; Thu, 11 Jan 2018 05:06:49 -0800 (PST) X-Google-Smtp-Source: ACJfBovHjSQfpNPgj9vwwwQdY3Zc5dSoYwMPTLuzodBXfXHH8i27kvrcnfJcI5lqaC3hY3oZ2p/t X-Received: by 10.98.34.206 with SMTP id p75mr8532564pfj.235.1515676009355; Thu, 11 Jan 2018 05:06:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515676009; cv=none; d=google.com; s=arc-20160816; b=y1c+kUsUPXLyNcCsoI8VvYsVqVP8xJA4eRv6F/Bl9CgKhxWTRa4xwcS2/m5jK5ZQBO gXv+OBj1EUDXLIhmvC5LfyetfBZKPSN+pAmPrmjPoafxH+YQ6rZOQbRCo5fuYFV3o097 j7RFCtpvEd2K5zIEq/GtEkwKh7v1+81KxlIyGAcjZxTObplKyEdVgE7aFu2zMoQVDPiz EMmAFlK7td57/d+lCPRiyLuvIhHykhvnyQJgmu/BcVvHM3VWVEk029zF0OxlGG4VzHci v9JXXrngRt3JWOUvNIzTXdR3Hx8Zl61QO5EyConL8OwzrHr/dQrKzYlnxfV6GuazkLLY Wo5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter:arc-authentication-results; bh=t5LJndo0Qp+uLpCfwQJM92O6+FV03razvPeEDgaoAUA=; b=A7D5f0GXXC496zkytejHVXH1CkyGlv9zOzXZja8zCTAcrrFJhXJl0MD/u7LtK0XeyL 849k1sTMSUxBc1syzL0ok0P8e9e6QpDFWV4K0iYvpbEXKi3w7KWNxRKztSHaA2/SqaRf V9JiNJ4UHR7u/DHUiCB58kJxzDk1fPM2MbHLuoSs0mYLdVB/mCgD/wUCz3PfJLHoSOO7 s3PM0ihem1gde/cNfPCslgI/G0hhX42GkO9rcN8TJE2nW/9JePkdF1xlCfg9bGtIaAoz gMSKOynxYNY/SwbrSFMNzglE8t0VKshoy2ksnajRAjlbPD2VC4YwHWDc2abfg+98d30I gw1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=jwRv7ziF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z21si4293066pge.348.2018.01.11.05.06.49; Thu, 11 Jan 2018 05:06:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=jwRv7ziF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934411AbeAKNGc (ORCPT + 28 others); Thu, 11 Jan 2018 08:06:32 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60587 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934033AbeAKNG1 (ORCPT ); Thu, 11 Jan 2018 08:06:27 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX1031475; Thu, 11 Jan 2018 22:05:48 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX1031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675949; bh=t5LJndo0Qp+uLpCfwQJM92O6+FV03razvPeEDgaoAUA=; h=From:To:Cc:Subject:Date:From; b=jwRv7ziF2QDoyL0v7FTBZEEjKAyopvuota6JsTlVEk5GisyQfAXJbrymT58cAfdqe EWsZG2E1GWq/uY3p+NX/giP6SKRVOXKeRWE8p2on3he6xfErXBLt2zJuxQ+03ddSAs dCono0pIJlk9rC8kPUQvDmSeZzVBdzZwy1ciPmbxg0DytNAwy7JP1zusWpxFh8AJ/z U9iOoxmaZSbYoaOTfbyuVOpQwu0rSNeMhUR0DDBxPv1caWKMeDCPIHPKfsSgLTwfHI H2ZhvHb/4VIH4I+7JfNXYWQuqxaHbb5b0ci+wgIkKLTBSNIfDLwAuAP7CFW23VE2tl CzhkjnwQF6ZxQ== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 1/7] fixdep: remove unnecessary inclusion Date: Thu, 11 Jan 2018 22:05:40 +0900 Message-Id: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org was included for ntohl(), but it was removed by commit dee81e988674 ("fixdep: faster CONFIG_ search"). Signed-off-by: Masahiro Yamada --- Changes in v2: - newly added scripts/basic/fixdep.c | 1 - 1 file changed, 1 deletion(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 86a61d6..b9b4bbf 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -112,7 +112,6 @@ #include #include #include -#include int insert_extra_deps; char *target; From patchwork Thu Jan 11 13:05:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124196 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp653854qgn; Thu, 11 Jan 2018 05:07:18 -0800 (PST) X-Google-Smtp-Source: ACJfBouukSMsXJDC8Swie/5L7fa9G2rakooReg3G04BYfWxky3LhXEaZVYmUyjUEYkwEmAwYza/F X-Received: by 10.98.36.69 with SMTP id r66mr19696325pfj.96.1515676037895; Thu, 11 Jan 2018 05:07:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515676037; cv=none; d=google.com; s=arc-20160816; b=MUn5VV22g1py1HQlNruwdEGcAGfg8+yH8oDHGcLPHSzflP0Lq2wGf5fEpllNv3oQXK OP66au1zKDxnvc34qECljQknpUEHuOPszg+xZ18H8Mm6kdWf9PFuew0o0BaUh0swQMWV JJFyPwg7Xb4ILYQPHldYMUTxg6liCiFHaGP06oMwGrczkMhu8CaJRVF4WwX2JS94VP8C tg0dDXZAaTuf38yIMCoyUcU19VEJALPd8Un6peOGwECTHcKJ6CS1E07Lhk1dfqq1XsnY r55tioc+gB9vrnciTkHYavwpdb8tLvSU4QIBPMJeCGSBdFx708NpvYMFdOYK+fLkz9ix 1IRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=lfrnL9KTtg/tfbAR4dy6BJvs4PqANmmIxPoFeDsu3ho=; b=kkl6bKJUQlQ2Xh4k+SUVo7DRTZcxOQHPN77uIRPk3l083y22iqnZZzU1gH7qTYQBAe W7K6g3nNOnztOU/zWzw2Jplr+LTWgyxSTb6mjrUeAkKaYAbwwGH+u1bHzBLQgoL8BiSO +0hVFK/ehCCDmNR/D7QzHhXzY6ZmaR+jeQuMNX5QQHLRkc+1bH0EK/QcC5/GkOQY93eL tSVEjXmruxli4eiB1O/nEainfm1jnF/uh2Pg5yjzQ1/tGjQanzOpNpOU20UbJJY16FXR jUpcLigLSORo9i9O8CjqMULp9jyeC4+C0kEt/mxynh+4HoHGZivfjYilNlBDdDAi6oop VBiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=yRX9Ouj+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m81si3393054pfk.168.2018.01.11.05.07.17; Thu, 11 Jan 2018 05:07:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=yRX9Ouj+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934464AbeAKNHP (ORCPT + 28 others); Thu, 11 Jan 2018 08:07:15 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60688 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934394AbeAKNGb (ORCPT ); Thu, 11 Jan 2018 08:06:31 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX2031475; Thu, 11 Jan 2018 22:05:49 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX2031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675949; bh=lfrnL9KTtg/tfbAR4dy6BJvs4PqANmmIxPoFeDsu3ho=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yRX9Ouj+FG6U3kdn6PiANggR1lh3esCd99qJ5zI7twH+9tDe/zAKYgnZV73y9mNND pmjOidU1GY1c5/QV48qVbFFUkRf2UOW4ToA2559C8YA8XmN+w7ZNmglblcgVmRdL5q LiX6JV7sGYOWnpqxW8CGS1xijq9GQUJAvKWstoWf6oV6MfHIR2h9B9nNB9o4rkJfVd 4B83UT1uCX8/aF8seIyKqFgUh3mJFx3td1ZdhqyVsGUhjrd4qsJrRlEBkaro/qMh2q owjXr4Bdp4NHhtxdn7iOVKsjX7Bnp35G2J0RuJozQDZRBthBMk3o50lhxVR9BA7sdq AfkhWsXIlhJvQ== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 2/7] fixdep: use malloc() and read() to load dep_file to buffer Date: Thu, 11 Jan 2018 22:05:41 +0900 Message-Id: <1515675946-7514-2-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit dee81e988674 ("fixdep: faster CONFIG_ search") changed how to read files in which CONFIG options are searched. It used malloc() and read() instead of mmap() because it needed to zero-terminate the buffer in order to use strstr(). print_deps() was left untouched since there was no reason to change it. Now, I have two motivations to change it in the same way. - do_config_file() and print_deps() do quite similar things; they open a file, load it onto memory, and pass it to a parser function. If we use malloc() and read() for print_deps() too, we can factor out the common code. (I will do this in the next commit.) - parse_dep_file() copies each token to a temporary buffer because it needs to zero-terminate it to be passed to printf(). It is not possible to modify the buffer directly because it is mmap'ed with O_RDONLY. If we load the file content into a malloc'ed buffer, we can insert '\0' after each token, and save memcpy(). (I will do this in the commit after next.) Signed-off-by: Masahiro Yamada --- Changes in v2: - Remove #include scripts/basic/fixdep.c | 56 ++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 24 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index b9b4bbf..91bb4c1 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -104,7 +104,6 @@ #include #include -#include #include #include #include @@ -308,24 +307,27 @@ static void do_config_file(const char *filename) * assignments are parsed not only by make, but also by the rather simple * parser in scripts/mod/sumversion.c. */ -static void parse_dep_file(void *map, size_t len) +static void parse_dep_file(char *m) { - char *m = map; - char *end = m + len; char *p; char s[PATH_MAX]; - int is_target; + int is_last, is_target; int saw_any_target = 0; int is_first_dep = 0; - while (m < end) { + while (1) { /* Skip any "white space" */ - while (m < end && (*m == ' ' || *m == '\\' || *m == '\n')) + while (*m == ' ' || *m == '\\' || *m == '\n') m++; + + if (!*m) + break; + /* Find next "white space" */ p = m; - while (p < end && *p != ' ' && *p != '\\' && *p != '\n') + while (*p && *p != ' ' && *p != '\\' && *p != '\n') p++; + is_last = (*p == '\0'); /* Is the token we found a target name? */ is_target = (*(p-1) == ':'); /* Don't write any target names into the dependency file */ @@ -373,6 +375,10 @@ static void parse_dep_file(void *map, size_t len) do_config_file(s); } } + + if (is_last) + break; + /* * Start searching for next token immediately after the first * "whitespace" character that follows this token. @@ -391,40 +397,42 @@ static void parse_dep_file(void *map, size_t len) printf("$(deps_%s):\n", target); } -static void print_deps(void) +static void print_deps(const char *filename) { struct stat st; int fd; - void *map; + char *buf; - fd = open(depfile, O_RDONLY); + fd = open(filename, O_RDONLY); if (fd < 0) { fprintf(stderr, "fixdep: error opening depfile: "); - perror(depfile); + perror(filename); exit(2); } if (fstat(fd, &st) < 0) { fprintf(stderr, "fixdep: error fstat'ing depfile: "); - perror(depfile); + perror(filename); exit(2); } if (st.st_size == 0) { - fprintf(stderr,"fixdep: %s is empty\n",depfile); close(fd); return; } - map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); - if ((long) map == -1) { - perror("fixdep: mmap"); - close(fd); - return; + buf = malloc(st.st_size + 1); + if (!buf) { + perror("fixdep: malloc"); + exit(2); } + if (read(fd, buf, st.st_size) != st.st_size) { + perror("fixdep: read"); + exit(2); + } + buf[st.st_size] = '\0'; + close(fd); - parse_dep_file(map, st.st_size); - - munmap(map, st.st_size); + parse_dep_file(buf); - close(fd); + free(buf); } int main(int argc, char *argv[]) @@ -440,7 +448,7 @@ int main(int argc, char *argv[]) cmdline = argv[3]; print_cmdline(); - print_deps(); + print_deps(depfile); return 0; } From patchwork Thu Jan 11 13:05:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124198 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp654788qgn; Thu, 11 Jan 2018 05:07:58 -0800 (PST) X-Google-Smtp-Source: ACJfBotO+3FdS1GkUp5EI3eeD4Hh64yhUuguRZbsTamI23N2ME/r0cvjMxfc7rxC3uxJfz+Fuk1Z X-Received: by 10.99.146.14 with SMTP id o14mr17541692pgd.267.1515676078521; Thu, 11 Jan 2018 05:07:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515676078; cv=none; d=google.com; s=arc-20160816; b=C26EgwTavw9OFX0X6SFNvjqKgG39PF36gVThNE3axV1eMtY949RzJ1Nfx3u4awvwa2 rlbmsALubpsqFiKvi2cK0jEbXFJ8v6kEjtjYqi2vNyyBZ1jPhjWM2+t9gTg1XNxK5Jmr mlnLJLMbyev7KMV1hwcVyS+7VaN1zGD5To4XmQwzWdMTcxz0WszoA3fSpv7lNkGyztWO VjlmvR2f+Yme+UyBO8ycpplsj6JEqbjaFfdIeG6tITF5OAl3Kvu3WzGKfkzlWeRsMM3u KlFW0TAwZQ8wNcUQ8XpSdKDBuJjqE7GbA/HIUkYEgsB1FIQcjHKXtIU7qIf5S+yo/pPz GHyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=GgZYNEarIpRHP7hobwe6Zb11mGtp6vclkM61EXOkrrA=; b=aPvue1llyNZkEgSafVppAT61KgOEVPoemP42LlwwUUgFtO2E4Kfnzyb+B8KLnRywNd zY3BGs1Dzj04WVtGyD3iFTFtd55EArwHi4TOUYHfIDRjGLV2xF0bvOE0oV2V+n53RI0x Bxfx4vOC5VEwowXhfSbRVtdmpko1dGYhQMUX661Xgb7ebVjCmn1MyER4z15+FqRdGbMY S0hcp1soDe9zke394Sy+cdReUTnSJ4eBq4Bs+eiuEwWmlfHv+x6wNjsJo+Tl+7NAzax+ 2k4/GMz2jdVA0ibCEh9D6jLJFkgMQojAV1N98J5CZ6AI7akfoHZKO5LoZsvsVICZosHx FzsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=irtPVNsm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r59si1360465plb.314.2018.01.11.05.07.58; Thu, 11 Jan 2018 05:07:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=irtPVNsm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934481AbeAKNHn (ORCPT + 28 others); Thu, 11 Jan 2018 08:07:43 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60598 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934064AbeAKNG1 (ORCPT ); Thu, 11 Jan 2018 08:06:27 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX3031475; Thu, 11 Jan 2018 22:05:50 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX3031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675950; bh=GgZYNEarIpRHP7hobwe6Zb11mGtp6vclkM61EXOkrrA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=irtPVNsm43M9q/Ated7V3cIDT06kVgh1hQlUuhXHJM32wWauRfsZjxHnnGJeT8NVw 4OtPZmDEKejtxiH8u4+yVqwXKPoqbHTkIqNoLbUEyKZO8LpDuVzAc9P5yM1txzYg6o XwMVVbxAs5PJeE4IKWyR4E2jdOXWKK+5fcR6RfcH3XBrdfPiHfVVJ2Sn8pX1rJ7EBM 0iRk0h9X6lTTZtWt4qgqKo+M9Gewdwhs/vsdpSjYz/CcRmbN3GyXKacnspsxhWfZJx jjywj0Sd8w6eIS9efJ2i8lfDXeqMo7eI0o+6ZdHppAoGFw/SNo8N4f82amTgd8Lcbr SZkH/GMM9g3ng== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 3/7] fixdep: factor out common code for reading files Date: Thu, 11 Jan 2018 22:05:42 +0900 Message-Id: <1515675946-7514-3-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now, do_config_files() and print_deps() are almost the same. Only the difference is the parser function called (parse_config_file vs parse_dep_file). We can reduce the code duplication by factoring out the common code into read_file() - this function allocates a buffer and loads a file to it. It returns the pointer to the allocated buffer. (As before, it bails out by exit(2) for any error.) The caller must free the buffer when done. Having empty source files is possible; fixdep should simply skip them. I deleted the "st.st_size == 0" check, so read_file() allocates 1-byte buffer for an empty file. strstr() will immediately return NULL, and this is what we expect. On the other hand, an empty dep_file should be treated as an error. In this case, parse_dep_file() will error out with "no targets found" and it is a correct error message. Signed-off-by: Masahiro Yamada --- Changes in v2: - rename load_file to read_file scripts/basic/fixdep.c | 75 ++++++++++++++------------------------------------ 1 file changed, 20 insertions(+), 55 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 91bb4c1..9f9238e 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -264,42 +264,36 @@ static int strrcmp(const char *s, const char *sub) return memcmp(s + slen - sublen, sub, sublen); } -static void do_config_file(const char *filename) +static void *read_file(const char *filename) { struct stat st; int fd; - char *map; + char *buf; fd = open(filename, O_RDONLY); if (fd < 0) { - fprintf(stderr, "fixdep: error opening config file: "); + fprintf(stderr, "fixdep: error opening file: "); perror(filename); exit(2); } if (fstat(fd, &st) < 0) { - fprintf(stderr, "fixdep: error fstat'ing config file: "); + fprintf(stderr, "fixdep: error fstat'ing file: "); perror(filename); exit(2); } - if (st.st_size == 0) { - close(fd); - return; - } - map = malloc(st.st_size + 1); - if (!map) { + buf = malloc(st.st_size + 1); + if (!buf) { perror("fixdep: malloc"); exit(2); } - if (read(fd, map, st.st_size) != st.st_size) { + if (read(fd, buf, st.st_size) != st.st_size) { perror("fixdep: read"); exit(2); } - map[st.st_size] = '\0'; + buf[st.st_size] = '\0'; close(fd); - parse_config_file(map); - - free(map); + return buf; } /* @@ -314,6 +308,7 @@ static void parse_dep_file(char *m) int is_last, is_target; int saw_any_target = 0; int is_first_dep = 0; + void *buf; while (1) { /* Skip any "white space" */ @@ -372,7 +367,10 @@ static void parse_dep_file(char *m) is_first_dep = 0; } else printf(" %s \\\n", s); - do_config_file(s); + + buf = read_file(s); + parse_config_file(buf); + free(buf); } } @@ -397,46 +395,10 @@ static void parse_dep_file(char *m) printf("$(deps_%s):\n", target); } -static void print_deps(const char *filename) -{ - struct stat st; - int fd; - char *buf; - - fd = open(filename, O_RDONLY); - if (fd < 0) { - fprintf(stderr, "fixdep: error opening depfile: "); - perror(filename); - exit(2); - } - if (fstat(fd, &st) < 0) { - fprintf(stderr, "fixdep: error fstat'ing depfile: "); - perror(filename); - exit(2); - } - if (st.st_size == 0) { - close(fd); - return; - } - buf = malloc(st.st_size + 1); - if (!buf) { - perror("fixdep: malloc"); - exit(2); - } - if (read(fd, buf, st.st_size) != st.st_size) { - perror("fixdep: read"); - exit(2); - } - buf[st.st_size] = '\0'; - close(fd); - - parse_dep_file(buf); - - free(buf); -} - int main(int argc, char *argv[]) { + void *buf; + if (argc == 5 && !strcmp(argv[1], "-e")) { insert_extra_deps = 1; argv++; @@ -448,7 +410,10 @@ int main(int argc, char *argv[]) cmdline = argv[3]; print_cmdline(); - print_deps(depfile); + + buf = read_file(depfile); + parse_dep_file(buf); + free(buf); return 0; } From patchwork Thu Jan 11 13:05:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124195 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp653210qgn; Thu, 11 Jan 2018 05:06:51 -0800 (PST) X-Google-Smtp-Source: ACJfBotIZ6+4YR68TZ57tX9NNY6DMOaLg3T+dLh4pZ3hEVLpJjyyAmgNUzvDBXEQaG7nIq8djV5w X-Received: by 10.99.181.78 with SMTP id u14mr17497133pgo.369.1515676011299; Thu, 11 Jan 2018 05:06:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515676011; cv=none; d=google.com; s=arc-20160816; b=KQZB85DG35dTpRcyd1PSj0UKMgfcGtSwy96gdYSIMOsMsgywBfz96j37DwkDmKRrXd Rw0xJ85BwhtDq8qwtACiMdyKnlTTdSln3VkYaCq7xCZWoWmueoJ1ph/1+UqOACNcIDOr HW4B33njRhlBwWpCXG5+SpznuuCX5rzPPg+598QMmScU85KQ95qy9wgiwWkv3tKsqa0c koAMnVny4jxVD5061db7dX9T5v2OSwkMY1SBUPMYdsuD9lXPBxs5A1sw0teFAb73Xx6B sHDpmXhZ5cBNb9f6hd36JHKzCSaW4wd3yvme5YekouoQhydtl9eBItlNdfMIgbQyEQnn dJ6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=lFzmbu+hsRyXmSwbN26MonbD0ojlAbbvAfPvKUib1ok=; b=PunsbQzuG3HY+bzvqqJbHNqw41DkSernfzDuwSvEemw0C684SAFl8ZYXYED8HlXwg+ 3K31Fmkj738fEMOswtfFuUOUMLbpGvLYbAknL+4M5XVkmtIS//5WOdXJzDSvhxHNF8et awaYItnVMNXENPAv5mtAuvUAobBUdWwsqto5wIkBNtP8oP77yGiiDDA4k/KFU6YNpn2T 6SuHm2qqm6LyBA12K09ggTxx9ApZTByZGZ+82hChlZaXanSotEJq7BRlG7qT8XrZ38xx oQUhKE34jRbm4KA7iKYcBadxmxicLOFEuQW+NqKck/ljgU8jEoNPTEZqRAvzecyHhYUg 6oqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=kKcgGPDl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z21si4293066pge.348.2018.01.11.05.06.50; Thu, 11 Jan 2018 05:06:51 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=kKcgGPDl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934449AbeAKNGt (ORCPT + 28 others); Thu, 11 Jan 2018 08:06:49 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60734 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932665AbeAKNGc (ORCPT ); Thu, 11 Jan 2018 08:06:32 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX4031475; Thu, 11 Jan 2018 22:05:50 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX4031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675950; bh=lFzmbu+hsRyXmSwbN26MonbD0ojlAbbvAfPvKUib1ok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kKcgGPDlDsf/Gqsui3I1vw3MgK/mb5qskTBaOdz/qLgfL2LS7rtSL6U+nVbr8+65b Z337E0zNIWpneACqp6A05DZyUmKlhFDHbyNLKmo+ia9BPfy/zr4yU0t3T+sSCXqYpO hWnVwCae6fmUQeosdWg9/VomvLxzsm6c7ACdL0Kp7L2IIFyK4SOhJysm5NB7cSMc2E tRESfO8DvPe/nPjCyg5XHW2eWsaapgiJ+mLmMvLNRPVTbFzYwCmd0DPG1gHBJynHA9 xz7RJt5Qu+ixs/aHe7Dnc6RlBBs5pPfQT4Zl3RuLoIXMFb/qhXbvpi94n985u+D3hV SZS7YAvIXxiyA== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 4/7] fixdep: remove unneeded memcpy() in parse_dep_file() Date: Thu, 11 Jan 2018 22:05:43 +0900 Message-Id: <1515675946-7514-4-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Each token in the depfile is copied to the temporary buffer 's' to terminate the token with zero. We do not need to do this any more because the parsed buffer is now writable. Insert '\0' directly in the buffer without calling memcpy(). is no longer necessary. (It was needed for PATH_MAX). Signed-off-by: Masahiro Yamada --- Changes in v2: None scripts/basic/fixdep.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 9f9238e..dfba77b 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -109,7 +109,6 @@ #include #include #include -#include #include int insert_extra_deps; @@ -304,7 +303,6 @@ static void *read_file(const char *filename) static void parse_dep_file(char *m) { char *p; - char s[PATH_MAX]; int is_last, is_target; int saw_any_target = 0; int is_first_dep = 0; @@ -330,16 +328,14 @@ static void parse_dep_file(char *m) /* The /next/ file is the first dependency */ is_first_dep = 1; } else { - /* Save this token/filename */ - memcpy(s, m, p-m); - s[p - m] = 0; + *p = '\0'; /* Ignore certain dependencies */ - if (strrcmp(s, "include/generated/autoconf.h") && - strrcmp(s, "include/generated/autoksyms.h") && - strrcmp(s, "arch/um/include/uml-config.h") && - strrcmp(s, "include/linux/kconfig.h") && - strrcmp(s, ".ver")) { + if (strrcmp(m, "include/generated/autoconf.h") && + strrcmp(m, "include/generated/autoksyms.h") && + strrcmp(m, "arch/um/include/uml-config.h") && + strrcmp(m, "include/linux/kconfig.h") && + strrcmp(m, ".ver")) { /* * Do not list the source file as dependency, * so that kbuild is not confused if a .c file @@ -360,15 +356,15 @@ static void parse_dep_file(char *m) if (!saw_any_target) { saw_any_target = 1; printf("source_%s := %s\n\n", - target, s); + target, m); printf("deps_%s := \\\n", target); } is_first_dep = 0; } else - printf(" %s \\\n", s); + printf(" %s \\\n", m); - buf = read_file(s); + buf = read_file(m); parse_config_file(buf); free(buf); } From patchwork Thu Jan 11 13:05:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124193 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp652908qgn; Thu, 11 Jan 2018 05:06:37 -0800 (PST) X-Google-Smtp-Source: ACJfBotIugJNGkPjwW1KqTXr7SeaU+w+I/2buvN6dMVGXLVHD3hBPzKUhxKqXXPpgYih32d72fui X-Received: by 10.101.80.74 with SMTP id k10mr17717707pgo.430.1515675996911; Thu, 11 Jan 2018 05:06:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515675996; cv=none; d=google.com; s=arc-20160816; b=z55vNLgfE6ts2c4OJmzb3Bz3JaV8iOunMk0tOq636Zqe35gnPr9MvW7sXfQ57Djm/q KysS6AoURT1a1hIuVNkSaFGJeEzKn5RudBGS9SDcH4HOXFbTmWGWA/K0e5vx3nUJ16m6 4pDKAruPybPLra+xgHzNkVslGpJGRdvfOcavSvR/l0GmDT9/Lojk46IHVk1ParLXednl zH9tsKEdkwPECvXjSV+L3467cZqHn2q430AAiShCZHrIS4g+fvRTNEKKI7sNs8ZMYUwD o0CS8onkladuRWQsjYTw7T+nXYyzWiSPtG/Smtj9ovRv2WisyRJd+edWYYOKUHupknax 9l+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=TOsD+8D2XyvWm4o2T6/N81pAPgp9EqZGN/+gQVNKyL4=; b=NCLjTamD7kqJPSXhCY7mkKMtdZGeaVgR2vUGm/a0EvBVO/Ve2DVG9Wq4YrQ9zi8b5S +63C0NtK3YuN2AZJylsOvJt3887RPdN0UGxFr5nVgbp9FsoJBOY9RgKG8nUUPvYf4PrV NBXMdBc+6HcIyOxMmD664SEm35i0hdc0fUA5+XN7fr1NXk2Gugix+FS+kWmG4/FrR6qW FAYrGiDk8EfS/UcSeZMqdoH64y38LYKSEvhTaa7lHYWESIg4FE+lm/6E5+w9C646NKFH FGZuwrxku/LLJSAKZuMSKuYW5D89/RTm8+IQjewPA1/niM5NpWsVkPVqrkjPUBSTVIiY qIPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=22c3R+P1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z21si4293066pge.348.2018.01.11.05.06.36; Thu, 11 Jan 2018 05:06:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=22c3R+P1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934430AbeAKNGe (ORCPT + 28 others); Thu, 11 Jan 2018 08:06:34 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60595 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934059AbeAKNG1 (ORCPT ); Thu, 11 Jan 2018 08:06:27 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX5031475; Thu, 11 Jan 2018 22:05:51 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX5031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675951; bh=TOsD+8D2XyvWm4o2T6/N81pAPgp9EqZGN/+gQVNKyL4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=22c3R+P1gG6J+HAN0ZdbXhz7yTxhHYycL3PlnC0I1axbYF+QpoZoccSqvuBhYFCV9 Y4KClpvaFXmfgNk3LdTSqIkUAxB00SC/MQ/4OI7ATrmXLp662nXYqkDwT36edf2ank YKflYCjjLaxyLRMrgPaoWDhwWIbAMtLuMZj4uMCL/IosxPaMzwkLNrCm4bBG0BIJXm C6nB5vkAk13s3hcPbQrFxCeQdNEUv2sHL01NniNFCGVi6OsRo3aUd948L6XuA0yyQW DpzkVv+7aknZ+FroeWcspYw2FFn843kRtXWk+DMT5xEDzylllZI9qjuRVNV/XQz7z3 xG7A3A6jZP+sg== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 5/7] fixdep: move global variables to local variables of main() Date: Thu, 11 Jan 2018 22:05:44 +0900 Message-Id: <1515675946-7514-5-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I do not mind global variables where they are useful enough. In this case, I do not see a good reason to use global variables since they are just referenced in shallow places. It is easy to pass them via function arguments. I squashed print_cmdline() into main() since it is just one line code. Signed-off-by: Masahiro Yamada --- Changes in v2: - Squash print_cmdline() into main() scripts/basic/fixdep.c | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index dfba77b..d33b5a4 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -111,11 +111,6 @@ #include #include -int insert_extra_deps; -char *target; -char *depfile; -char *cmdline; - static void usage(void) { fprintf(stderr, "Usage: fixdep [-e] \n"); @@ -124,14 +119,6 @@ static void usage(void) } /* - * Print out the commandline prefixed with cmd_ := - */ -static void print_cmdline(void) -{ - printf("cmd_%s := %s\n\n", target, cmdline); -} - -/* * Print out a dependency path from a symbol name */ static void print_config(const char *m, int slen) @@ -152,16 +139,16 @@ static void print_config(const char *m, int slen) static void do_extra_deps(void) { - if (insert_extra_deps) { - char buf[80]; - while(fgets(buf, sizeof(buf), stdin)) { - int len = strlen(buf); - if (len < 2 || buf[len-1] != '\n') { - fprintf(stderr, "fixdep: bad data on stdin\n"); - exit(1); - } - print_config(buf, len-1); + char buf[80]; + + while (fgets(buf, sizeof(buf), stdin)) { + int len = strlen(buf); + + if (len < 2 || buf[len - 1] != '\n') { + fprintf(stderr, "fixdep: bad data on stdin\n"); + exit(1); } + print_config(buf, len - 1); } } @@ -300,7 +287,7 @@ static void *read_file(const char *filename) * assignments are parsed not only by make, but also by the rather simple * parser in scripts/mod/sumversion.c. */ -static void parse_dep_file(char *m) +static void parse_dep_file(char *m, const char *target, int insert_extra_deps) { char *p; int is_last, is_target; @@ -385,7 +372,8 @@ static void parse_dep_file(char *m) exit(1); } - do_extra_deps(); + if (insert_extra_deps) + do_extra_deps(); printf("\n%s: $(deps_%s)\n\n", target, target); printf("$(deps_%s):\n", target); @@ -393,6 +381,8 @@ static void parse_dep_file(char *m) int main(int argc, char *argv[]) { + const char *depfile, *target, *cmdline; + int insert_extra_deps = 0; void *buf; if (argc == 5 && !strcmp(argv[1], "-e")) { @@ -405,10 +395,10 @@ int main(int argc, char *argv[]) target = argv[2]; cmdline = argv[3]; - print_cmdline(); + printf("cmd_%s := %s\n\n", target, cmdline); buf = read_file(depfile); - parse_dep_file(buf); + parse_dep_file(buf, target, insert_extra_deps); free(buf); return 0; From patchwork Thu Jan 11 13:05:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124197 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp654555qgn; Thu, 11 Jan 2018 05:07:46 -0800 (PST) X-Google-Smtp-Source: ACJfBou/xru5tW1yPeKfKt4xum+KLLpVAZfEUviTj5PZEPC43daJ4RECd2D7fzHk/Uj2Zf6r2W6L X-Received: by 10.159.247.129 with SMTP id e1mr15025955pls.330.1515676066737; Thu, 11 Jan 2018 05:07:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515676066; cv=none; d=google.com; s=arc-20160816; b=GAZ4eNysnVUh07lhNOnhDuYZZPJKcvlRhIHUy/qN+S9duQyrhdra2TPVN27toxc8p/ rmEZe3uKBi/0uvR9uAgXhErS1Vfjh5A8HLSWWPuH6gUnevm1geU6EemYVuPM9T2pfvwf CoBH9CIIFISq/lAZyhf0hhRZzQnPdagvGh3DSRh33n2WwZ6uOQFQgtTU4HSTMgV8E5+9 VTc0O97/juGtwYS32KW2hpM9rfxmfBFUVOubYJzlAPKMWYn1eyTHXEiebgGJYHJSKA6l mcuWNMqkoejxqXp7tjmztSUKAr8W3/BVKBzrAyvIMRAfKf/9ALWIf0GrO3uYarNid8Iw uDbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=MeF0KCtHw5TauBWNsBow2HMdNQMYrHzZXLyCfHzFnps=; b=jBt43tTK7U43cfie7y6FcpMS23xusZei2aFpMEwk4F457r4GlJuZMUlhH240UkMFTK Buzwp+JKKulV4kQtq2UjqxfvaYpClhnqyV5MvlVpiBYhJR0C2DnUF+EuV9diKdw17bem eHzr4p2IDsqM1BtoIAERX+uY8UPlOL6lHF1zT9LSfllrxi6rDqblt7KdDyM/Y6WTKbDF TYfq3mE8aF9I4eyPU22dZbOlK8+y8rHguS+5aMdx2YoTeCSQD5GT4SIq6pCHRr9V1Pt1 5/JQayB+fFsLt1BdsHawDIrwtrnU2RYM/mjCEUOC0uAKz0fR0kLfQlbg/wxCknDb1V9N PG+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=ygdEH868; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v20si14302059plo.820.2018.01.11.05.07.46; Thu, 11 Jan 2018 05:07:46 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=ygdEH868; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934495AbeAKNHo (ORCPT + 28 others); Thu, 11 Jan 2018 08:07:44 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60578 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934031AbeAKNG1 (ORCPT ); Thu, 11 Jan 2018 08:06:27 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX6031475; Thu, 11 Jan 2018 22:05:51 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX6031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675952; bh=MeF0KCtHw5TauBWNsBow2HMdNQMYrHzZXLyCfHzFnps=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ygdEH868QPJPvvWpRkWjccWx+ZhUaoRGV7MC2Aed8ueu38W3cvhMQmSadlzzvA7Ve dcF8V7pEuU/ekSmeiKqwUO/UwePrv1DxbMGVUsCcRqzOXc0XWw/qYWo9JhV/dEmXcb 0ZN5moN3N7T47Cvnc0ZcWQo3gicymuKp/C9QHJgltdT2lXpz8nZ+zeZ681ziPrB9HO SXuHPmoHct/FzmBrqjWnogtc6MGiwAjvW5XZ2+P0bjw6cLLP4tZ+pZssfgRdtwA5Pb ru7tIgk17VSkiUmQgH2gNa5vEptEZMm+yOa6fUQ88++iV6Bx1B/BrRGrt4/xI8gJP0 QtIcV69J0h45g== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 6/7] fixdep: refactor parse_dep_file() Date: Thu, 11 Jan 2018 22:05:45 +0900 Message-Id: <1515675946-7514-6-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org parse_dep_file() has too much indentation, and puts the code far to the right. This commit refactors the code and reduces the one level of indentation. strrcmp() computes 'slen' by itself, but the caller already knows the length of the token, so 'slen' can be passed via function argument. With this, we can swap the order of strrcmp() and "*p = \0;" Also, strrcmp() is an ambiguous function name. Flip the logic and rename it to str_ends_with(). I added a new helper is_ignored_file() - this returns 1 if the token represents a file that should be ignored. Signed-off-by: Masahiro Yamada --- Changes in v2: None scripts/basic/fixdep.c | 80 +++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index d33b5a4..0abc15778 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -239,15 +239,14 @@ static void parse_config_file(const char *p) } /* test if s ends in sub */ -static int strrcmp(const char *s, const char *sub) +static int str_ends_with(const char *s, int slen, const char *sub) { - int slen = strlen(s); int sublen = strlen(sub); if (sublen > slen) - return 1; + return 0; - return memcmp(s + slen - sublen, sub, sublen); + return !memcmp(s + slen - sublen, sub, sublen); } static void *read_file(const char *filename) @@ -282,6 +281,16 @@ static void *read_file(const char *filename) return buf; } +/* Ignore certain dependencies */ +static int is_ignored_file(const char *s, int len) +{ + return str_ends_with(s, len, "include/generated/autoconf.h") || + str_ends_with(s, len, "include/generated/autoksyms.h") || + str_ends_with(s, len, "arch/um/include/uml-config.h") || + str_ends_with(s, len, "include/linux/kconfig.h") || + str_ends_with(s, len, ".ver"); +} + /* * Important: The below generated source_foo.o and deps_foo.o variable * assignments are parsed not only by make, but also by the rather simple @@ -314,47 +323,38 @@ static void parse_dep_file(char *m, const char *target, int insert_extra_deps) if (is_target) { /* The /next/ file is the first dependency */ is_first_dep = 1; - } else { + } else if (!is_ignored_file(m, p - m)) { *p = '\0'; - /* Ignore certain dependencies */ - if (strrcmp(m, "include/generated/autoconf.h") && - strrcmp(m, "include/generated/autoksyms.h") && - strrcmp(m, "arch/um/include/uml-config.h") && - strrcmp(m, "include/linux/kconfig.h") && - strrcmp(m, ".ver")) { + /* + * Do not list the source file as dependency, so that + * kbuild is not confused if a .c file is rewritten + * into .S or vice versa. Storing it in source_* is + * needed for modpost to compute srcversions. + */ + if (is_first_dep) { /* - * Do not list the source file as dependency, - * so that kbuild is not confused if a .c file - * is rewritten into .S or vice versa. Storing - * it in source_* is needed for modpost to - * compute srcversions. + * If processing the concatenation of multiple + * dependency files, only process the first + * target name, which will be the original + * source name, and ignore any other target + * names, which will be intermediate temporary + * files. */ - if (is_first_dep) { - /* - * If processing the concatenation of - * multiple dependency files, only - * process the first target name, which - * will be the original source name, - * and ignore any other target names, - * which will be intermediate temporary - * files. - */ - if (!saw_any_target) { - saw_any_target = 1; - printf("source_%s := %s\n\n", - target, m); - printf("deps_%s := \\\n", - target); - } - is_first_dep = 0; - } else - printf(" %s \\\n", m); - - buf = read_file(m); - parse_config_file(buf); - free(buf); + if (!saw_any_target) { + saw_any_target = 1; + printf("source_%s := %s\n\n", + target, m); + printf("deps_%s := \\\n", target); + } + is_first_dep = 0; + } else { + printf(" %s \\\n", m); } + + buf = read_file(m); + parse_config_file(buf); + free(buf); } if (is_last) From patchwork Thu Jan 11 13:05:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 124192 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp652834qgn; Thu, 11 Jan 2018 05:06:33 -0800 (PST) X-Google-Smtp-Source: ACJfBotZjSra5lNjYAsX/7uBRdCQC8iOdwT8ED6mtWkpaf5cX3HtdQu3730deD/GsjwYebWSEKNI X-Received: by 10.99.44.14 with SMTP id s14mr17746564pgs.452.1515675993033; Thu, 11 Jan 2018 05:06:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515675993; cv=none; d=google.com; s=arc-20160816; b=h8PLuvaB2mYSlR7yeBy1z6C3UzcCPQ0hxdxbJ77OmL5PmqKkBfUQakjGbIfSLWSmUA 7bcb+o8Z6wQhD4BcnIwpK9/KN1ThVgybHEjQdG9ZhvbrQs/ZdgVmZxvbhII5WUEfJAXe qHiEyFvWP4wilbV6FJghLF8/mSVQw/vrRk3aFnwnpfzVdMMIax+jyKEFSVQ5xY+x5A9P jPQZPh9LLEm7IRyqN0oBK4B2Hg7J9oWYtOk+0RQZYs3I21jMGzlPt97q1bXwlaQHHPbn i1QU2xbZoqc6NGUUymXweSAbF6+4mbWUL8554CQPukKYQ4LPBbhc9to33GP5YIvEOkpf KOEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=ksfIr6M+6kyG4ooySJ9AwLYrTsN6Ic3kKlHcNhVbv4M=; b=zD5yybzwYNZyG/1QaCh9pNTefcAUhPdt80H4XeCvqDLr4THLw6uzaSeVjf/MOvJjOL b6hBYjoWnqk5mViS9L/f/793XfjVIubRquNo4bDTV+ubZWcHCodmJvrbFHJn0bjkYwC2 4ELaq/AHO0towuU0eHtD/vveSxHhMoEvvWUUgBuy/rX4RxIQYOPhRNPc8DWv+egNntKg qjAvoB1J6oNCuLy8P2zx9+xHCB0m0ghgVo/1IAkHcHr/JrjsQRGeFPTPeg//wQwdQaSq agTXAoP6c2yEnM2JQCrBa701CdXwrRguIXlXdLXEOX83p1pfbz9OSxYzBsS9s6N1xkS4 BZXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=gr+D01CT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z21si4293066pge.348.2018.01.11.05.06.32; Thu, 11 Jan 2018 05:06:33 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=gr+D01CT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934393AbeAKNG3 (ORCPT + 28 others); Thu, 11 Jan 2018 08:06:29 -0500 Received: from conuserg-12.nifty.com ([210.131.2.79]:60577 "EHLO conuserg-12.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932665AbeAKNG1 (ORCPT ); Thu, 11 Jan 2018 08:06:27 -0500 Received: from grover.sesame (FL1-125-199-20-195.osk.mesh.ad.jp [125.199.20.195]) (authenticated) by conuserg-12.nifty.com with ESMTP id w0BD5mX7031475; Thu, 11 Jan 2018 22:05:52 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-12.nifty.com w0BD5mX7031475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1515675952; bh=ksfIr6M+6kyG4ooySJ9AwLYrTsN6Ic3kKlHcNhVbv4M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gr+D01CTfeWexAAV160lPXCXGEqvfFvDfV5Wwodanx8y9892Tyk1Cw7UU4vcvxW76 jgb0j4iOv+BwRYjn9FkNrTdd+BJPwLoLoCDF13t+F5+zArM+uj+U9oOZCdSLjCPZDe OSbBFSc9JdslzfB0E6shho5DLe86/Z7DA5KFcUr0/h4T0glqSDSzx9+jYCzssgVx0C VsFMPaPu0ULsq+pS6QxstbqvJrDjc6HcxImGiFLl0vhx0xNEDJSCYid3Ara1LJEQ6J Mm5Pk3mfj8LPSQSYgZNJOyG9kHWTjDA6yAu9vFD199jyfOl+qqtXhTXSVQFr4jnQ+T 036s0sIPCXA1w== X-Nifty-SrcIP: [125.199.20.195] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Michal Marek , Sam Ravnborg , Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH v2 7/7] fixdep: use existing helper to check modular CONFIG options Date: Thu, 11 Jan 2018 22:05:46 +0900 Message-Id: <1515675946-7514-7-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> References: <1515675946-7514-1-git-send-email-yamada.masahiro@socionext.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org str_ends_with() tests if the given token ends with a particular string. Currently, it is used to check file paths without $(srctree). Actually, we have one more place where this helper is useful. Use it to check if CONFIG option ends with _MODULE. Signed-off-by: Masahiro Yamada --- Changes in v2: None scripts/basic/fixdep.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) -- 2.7.4 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 0abc15778..fa3d39b6 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -219,6 +219,17 @@ static void use_config(const char *m, int slen) print_config(m, slen); } +/* test if s ends in sub */ +static int str_ends_with(const char *s, int slen, const char *sub) +{ + int sublen = strlen(sub); + + if (sublen > slen) + return 0; + + return !memcmp(s + slen - sublen, sub, sublen); +} + static void parse_config_file(const char *p) { const char *q, *r; @@ -228,7 +239,7 @@ static void parse_config_file(const char *p) q = p; while (*q && (isalnum(*q) || *q == '_')) q++; - if (memcmp(q - 7, "_MODULE", 7) == 0) + if (str_ends_with(p, q - p, "_MODULE")) r = q - 7; else r = q; @@ -238,17 +249,6 @@ static void parse_config_file(const char *p) } } -/* test if s ends in sub */ -static int str_ends_with(const char *s, int slen, const char *sub) -{ - int sublen = strlen(sub); - - if (sublen > slen) - return 0; - - return !memcmp(s + slen - sublen, sub, sublen); -} - static void *read_file(const char *filename) { struct stat st;