From: Michal Marek <mmarek@suse.cz>
To: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
Sascha Hauer <s.hauer@pengutronix.de>,
x86@kernel.org, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] kbuild: escape single backslashes in macro make-cmd
Date: Wed, 06 Aug 2014 13:45:50 +0200 [thread overview]
Message-ID: <53E2156E.9060700@suse.cz> (raw)
In-Reply-To: <20140726163551.19857.17737.stgit@zurg>
On 2014-07-26 18:35, Konstantin Khlebnikov wrote:
> This already has been fixed in commit c353acba28fb3fa1fd05fd
> ("kbuild: make: fix if_changed when command contains backslashes")
> but escaping still isn't perfect and triggers false-positive rebuilds.
>
> For x86 problem happens every time, because rules in arch/x86/realmode/rm/
> and arch/x86/boot/ contains commands like sed -n -e 's/foo\(.*\)/\1/p'.
> Backslash in \1 isn't escaped and turns into ascii symbol with code 1.
> Macro if_changed detects command change and rebuilds target again and again.
>
> Backslash escaping conflicts with other passes because it's used for escaping
> other symbols. To avoid that current macro handles only double backslashes.
> Obviously this doesn't work for \1 like above.
>
> This patch reorders passes. It doubles all backslashes before escaping # and '
>
> Visible effect in rebuilding x86/defconfig without changes, before patch:
>
> blind@zurg:~/src/linux$ make V=2
> CHK include/config/kernel.release
> CHK include/generated/uapi/linux/version.h
> CHK include/generated/utsrelease.h
> CALL scripts/checksyscalls.sh - due to target missing
> CHK include/generated/compile.h
> PASYMS arch/x86/realmode/rm/pasyms.h - due to command line change
With which make and shell version are you seeing this? While the patch
looks correct, I can't reproduce the error here:
$ make V=2
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh - due to target missing
CHK include/generated/compile.h
Kernel: arch/x86/boot/bzImage is ready (#1)
Building modules, stage 2.
MODPOST 12 modules - due to target is PHONY
$ cat arch/x86/realmode/rm/.pasyms.h.cmd
cmd_arch/x86/realmode/rm/pasyms.h := nm arch/x86/realmode/rm/header.o
arch/x86/realmode/rm/trampoline_64.o arch/x86/realmode/rm/stack.o
arch/x86/realmode/rm/reboot.o arch/x86/realmode/rm/wakeup_asm.o
arch/x86/realmode/rm/wakemain.o arch/x86/realmode/rm/video-mode.o
arch/x86/realmode/rm/copy.o arch/x86/realmode/rm/bioscall.o
arch/x86/realmode/rm/regs.o arch/x86/realmode/rm/video-vga.o
arch/x86/realmode/rm/video-vesa.o arch/x86/realmode/rm/video-bios.o |
sed -n -r -e 's/^([0-9a-fA-F]+) [ABCDGRSTVW] (.+)$$/pa_\2 = \2;/p' |
sort | uniq > arch/x86/realmode/rm/pasyms.h
This is with both 3.16 and my kbuild branch, which is based on 3.16-rc1.
Also, in the description, you say that backslash escaping conflicts with
escaping # and ', but this has nothing to do with the \2 backreference
in the sed command.
Michal
next prev parent reply other threads:[~2014-08-06 11:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-26 16:35 [PATCH] kbuild: escape single backslashes in macro make-cmd Konstantin Khlebnikov
2014-08-06 11:45 ` Michal Marek [this message]
2014-08-06 12:19 ` Konstantin Khlebnikov
2014-08-06 15:01 ` Michal Marek
2014-08-07 16:07 ` Michal Marek
2014-08-07 16:54 ` Konstantin Khlebnikov
2014-08-07 17:08 ` Sam Ravnborg
2014-08-07 19:56 ` [PATCH] kbuild: Fix handling of backslashes in *.cmd files Michal Marek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53E2156E.9060700@suse.cz \
--to=mmarek@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=koct9i@gmail.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox