public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: kvm@vger.kernel.org
Cc: pbonzini@redhat.com, drjones@redhat.com, lvivier@redhat.com
Subject: [PATCH v2 4/7] kbuild: fix asm-offset generation to work with clang
Date: Thu,  1 Oct 2020 09:22:31 +0200	[thread overview]
Message-ID: <20201001072234.143703-5-thuth@redhat.com> (raw)
In-Reply-To: <20201001072234.143703-1-thuth@redhat.com>

KBuild abuses the asm statement to write to a file and
clang chokes about these invalid asm statements. Hack it
even more by fooling this is actual valid asm code.

This is an adaption of the Linux kernel commit cf0c3e68aa81f992b0
which in turn is based on a patch for the U-Boot:
  http://patchwork.ozlabs.org/patch/375026/

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 lib/kbuild.h            | 6 +++---
 scripts/asm-offsets.mak | 5 +++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/kbuild.h b/lib/kbuild.h
index ab99db6..79644e5 100644
--- a/lib/kbuild.h
+++ b/lib/kbuild.h
@@ -1,8 +1,8 @@
 #ifndef _KBUILD_H_
 #define _KBUILD_H_
 #define DEFINE(sym, val) \
-	asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+	asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val))
 #define OFFSET(sym, str, mem)	DEFINE(sym, offsetof(struct str, mem))
-#define COMMENT(x)		asm volatile("\n->#" x)
-#define BLANK()			asm volatile("\n->" : : )
+#define COMMENT(x)		asm volatile("\n.ascii \"->#" x "\"")
+#define BLANK()			asm volatile("\n.ascii \"->\"" : : )
 #endif
diff --git a/scripts/asm-offsets.mak b/scripts/asm-offsets.mak
index b35da09..7b64162 100644
--- a/scripts/asm-offsets.mak
+++ b/scripts/asm-offsets.mak
@@ -8,10 +8,11 @@
 #
 
 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;}"
+	s:->::; p;}'
 endef
 
 define make_asm_offsets
-- 
2.18.2


  parent reply	other threads:[~2020-10-01  7:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-01  7:22 [PATCH v2 0/7] Update travis CI Thomas Huth
2020-10-01  7:22 ` [PATCH v2 1/7] travis.yml: Rework the x86 64-bit tests Thomas Huth
2020-10-01  7:22 ` [PATCH v2 2/7] travis.yml: Refresh the x86 32-bit test list Thomas Huth
2020-10-01  7:22 ` [PATCH v2 3/7] travis.yml: Add the selftest-setup ppc64 test Thomas Huth
2020-10-01  7:22 ` Thomas Huth [this message]
2020-10-01  9:12   ` [PATCH v2 4/7] kbuild: fix asm-offset generation to work with clang Andrew Jones
2020-10-01  7:22 ` [PATCH v2 5/7] arm/pmu: Fix inline assembly for Clang Thomas Huth
2020-10-01  9:12   ` Andrew Jones
2020-10-01  9:14     ` Andrew Jones
2020-10-01 10:50       ` Thomas Huth
2020-10-01 12:02         ` Andrew Jones
2020-10-01  7:22 ` [PATCH v2 6/7] lib/arm64/spinlock: " Thomas Huth
2020-10-01  9:12   ` Andrew Jones
2020-10-01  7:22 ` [PATCH v2 7/7] travis.yml: Rework the aarch64 jobs Thomas Huth
2020-10-01  9:18 ` [PATCH v2 0/7] Update travis CI Paolo Bonzini

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=20201001072234.143703-5-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=drjones@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    /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