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-next>] [day] [month] [year] [list]
Message-ID: <53A9D326.9060409@myspectrum.nl>
Date:	Tue, 24 Jun 2014 21:36:06 +0200
From:	Jeroen Hofstee <jeroen@...pectrum.nl>
To:	Masahiro Yamada <yamada.m@...panasonic.com>
CC:	u-boot@...ts.denx.de, linux-kernel@...r.kernel.org
Subject: Re: [U-Boot] [RFC] kbuild.h: workaround for llvm IAS

Hi Masahiro,

On 24-06-14 14:53, Masahiro Yamada wrote:
> On Thu, 12 Jun 2014 23:40:54 +0200
> Jeroen Hofstee <jeroen@...pectrum.nl> wrote:
>
>> KBuild (ab)uses the asm statement to write to a file and
>> llvm integrated as chokes about these invalid asm statements.
>> Workaround it by making it look like valid asm code.
>>
>> Signed-off-by: Jeroen Hofstee <jeroen@...pectrum.nl>
> I think Linux has the same problem.
>
> Are you willing to this patch to linux-kbuild ML?
> Or fixing U-Boot only?
I don't mind in general, but it is just noise for them (cc-ing them to
create some).  For u-boot (ARM) you actually get a valid binary with
this patch after clang support has landed, for linux you just get other
errors as far as I tried (native only), patch below.

However in linux there seem more spots relying on the format, e.g.
     arch/ia64/kvm/Makefile
     arch/ia64/kernel/Makefile
     arch/um/Makefile

So if anything, I think this should be made a general rules first
in the makefiles. It seems stupid to potentially break something
while it gains nothing.

So yes, u-boot only afaic, or does that make your syncing more difficult?

Regards,
Jeroen


--- a/Kbuild
+++ b/Kbuild
@@ -52,7 +52,8 @@ targets += arch/$(SRCARCH)/kernel/asm-offsets.s

  # Default sed regexp - multiline due to syntax constraints
  define sed-y
-       "/^->/{s:->#\(.*\):/* \1 */:; \
+       "s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \
+       /^->/{s:->#\(.*\):/* \1 */:; \
         s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
         s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
         s:->::; p;}"
diff --git a/include/linux/kbuild.h b/include/linux/kbuild.h
index 22a7219..4e80f3a 100644
--- a/include/linux/kbuild.h
+++ b/include/linux/kbuild.h
@@ -2,14 +2,14 @@
  #define __LINUX_KBUILD_H

  #define DEFINE(sym, val) \
-        asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+       asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val))

-#define BLANK() asm volatile("\n->" : : )
+#define BLANK() asm volatile("\n.ascii \"->\"" : : )

  #define OFFSET(sym, str, mem) \
         DEFINE(sym, offsetof(struct str, mem))

  #define COMMENT(x) \
-       asm volatile("\n->#" x)
+       asm volatile("\n.ascii \"->#" x "\"")

  #endif
diff --git a/scripts/mod/Makefile b/scripts/mod/Makefile
index c11212f..0698af3 100644
--- a/scripts/mod/Makefile
+++ b/scripts/mod/Makefile
@@ -6,7 +6,8 @@ modpost-objs    := modpost.o file2alias.o sumversion.o
  devicetable-offsets-file := devicetable-offsets.h

  define sed-y
-       "/^->/{s:->#\(.*\):/* \1 */:; \
+       "s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \
+       /^->/{s:->#\(.*\):/* \1 */:; \
         s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
         s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
         s:->::; p;}"
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ