From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751651AbcAPMDf (ORCPT ); Sat, 16 Jan 2016 07:03:35 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:56849 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750885AbcAPMDd convert rfc822-to-8bit (ORCPT ); Sat, 16 Jan 2016 07:03:33 -0500 From: Kalle Valo To: Geert Uytterhoeven Cc: Hante Meuleman , "netdev\@vger.kernel.org" , linux-wireless , brcm80211-dev-list@broadcom.com, "linux-kernel\@vger.kernel.org" Subject: Re: brcmfmac build failure with gcc < 4.3 due to __UNIQUE_ID() clash References: Date: Sat, 16 Jan 2016 14:03:25 +0200 In-Reply-To: (Geert Uytterhoeven's message of "Thu, 14 Jan 2016 21:23:57 +0100") Message-ID: <87fuxx7muq.fsf@kamboji.qca.qualcomm.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Geert Uytterhoeven writes: > On Wed, Jan 13, 2016 at 5:55 AM, Linux Kernel Mailing List > wrote: >> Commit: 46d703a775394e4724509ff55cdda41d228c028c >> brcmfmac: Unify methods to define and map firmware files. > [...] > This change breaks the build with gcc < 4.3: > > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:598: > error: redefinition of ‘__UNIQUE_ID_firmware598’ > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:598: > error: previous definition of ‘__UNIQUE_ID_firmware598’ was here > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:599: > error: redefinition of ‘__UNIQUE_ID_firmware600’ > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:599: > error: previous definition of ‘__UNIQUE_ID_firmware600’ was here > ... > > The reason is that BRCMF_FW_NVRAM_DEF() expands to two instances of > MODULE_FIRMWARE(): > >> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.h >> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.h >> >> +#define BRCMF_FW_NVRAM_DEF(fw_nvram_name, fw, nvram) \ >> +static const char BRCM_ ## fw_nvram_name ## _FIRMWARE_NAME[] = \ >> + BRCMF_FW_DEFAULT_PATH fw; \ >> +static const char BRCM_ ## fw_nvram_name ## _NVRAM_NAME[] = \ >> + BRCMF_FW_DEFAULT_PATH nvram; \ >> +MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH fw); \ >> +MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH nvram) > > When compiling using gcc < 4.3, __UNIQUE_ID() uses __LINE__ instead of > __COUNTER__, as the latter is not available. Hence it derives a "unique" ID > from the same source line number, causing a redefinition. Hante, what should we do? We need to fix this build breakage ASAP. -- Kalle Valo