diff mbox

Kbuild: provide a __UNIQUE_ID for clang

Message ID 1454942318-2782493-1-git-send-email-arnd@arndb.de (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann Feb. 8, 2016, 2:38 p.m. UTC
The default __UNIQUE_ID macro in compiler.h fails to work for some drivers:

drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:615:1: error: redefinition of
      '__UNIQUE_ID_firmware615'
BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");

This adds a copy of the version we use for gcc-4.3 and higher, as the same
one works with all versions of clang that I could find in svn (2.6 and higher).

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/compiler-clang.h | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Michal Marek Feb. 8, 2016, 6:13 p.m. UTC | #1
On Mon, Feb 08, 2016 at 03:38:32PM +0100, Arnd Bergmann wrote:
> The default __UNIQUE_ID macro in compiler.h fails to work for some drivers:
> 
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:615:1: error: redefinition of
>       '__UNIQUE_ID_firmware615'
> BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");

I applied the patch to kbuild.git#kbuild, but can you tell me with which
commit and config you get such failure. I only see a single
MODULE_FIRMWARE() call in the expansion of BRCMF_FW_NVRAM_DEF(), which
should work with line numbers as well. And I can't reproduce it with
today's linux-next. If there is some issue with code not yet in
linux-next, it needs to be worked around, because older GCCs did not
have __COUNTER__.

Michal
diff mbox

Patch

diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
index d1e49d52b640..de179993e039 100644
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -10,3 +10,8 @@ 
 #undef uninitialized_var
 #define uninitialized_var(x) x = *(&(x))
 #endif
+
+/* same as gcc, this was present in clang-2.6 so we can assume it works
+ * with any version that can compile the kernel
+ */
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)