On Thu, Jul 11, 2019 at 7:15 PM Joe Perches <joe@xxxxxxxxxxx> wrote: > > On Thu, 2019-07-11 at 17:17 -0700, Nick Desaulniers wrote: > > Commit r353569 in prerelease Clang-9 is producing a linkage failure: > > > > ld: drivers/net/wireless/intel/iwlwifi/fw/dbg.o: > > in function `_iwl_fw_dbg_apply_point': > > dbg.c:(.text+0x827a): undefined reference to `__compiletime_assert_2387' > > > > when the following configs are enabled: > > - CONFIG_IWLWIFI > > - CONFIG_IWLMVM > > - CONFIG_KASAN > > > > Work around the issue for now by marking the debug strings as `static`, > > which they probably should be any ways. > > > > Link: https://bugs.llvm.org/show_bug.cgi?id=42580 > > Link: https://github.com/ClangBuiltLinux/linux/issues/580 > > Reported-by: Arnd Bergmann <arnd@xxxxxxxx> > > Reported-by: Nathan Chancellor <natechancellor@xxxxxxxxx> > > Signed-off-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > > --- > > drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > > index e411ac98290d..f8c90ea4e9b4 100644 > > --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > > +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > > @@ -2438,7 +2438,7 @@ static void iwl_fw_dbg_info_apply(struct iwl_fw_runtime *fwrt, > > { > > u32 img_name_len = le32_to_cpu(dbg_info->img_name_len); > > u32 dbg_cfg_name_len = le32_to_cpu(dbg_info->dbg_cfg_name_len); > > - const char err_str[] = > > + static const char err_str[] = > > "WRT: ext=%d. Invalid %s name length %d, expected %d\n"; > > Better still would be to use the format string directly > in both locations instead of trying to deduplicate it > via storing it into a separate pointer. > > Let the compiler/linker consolidate the format. > It's smaller object code, allows format/argument verification, > and is simpler for humans to understand. Whichever Kalle prefers, I just want my CI green again. > > --- > diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > index e411ac98290d..25e6712932b8 100644 > --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > @@ -2438,17 +2438,17 @@ static void iwl_fw_dbg_info_apply(struct iwl_fw_runtime *fwrt, > { > u32 img_name_len = le32_to_cpu(dbg_info->img_name_len); > u32 dbg_cfg_name_len = le32_to_cpu(dbg_info->dbg_cfg_name_len); > - const char err_str[] = > - "WRT: ext=%d. Invalid %s name length %d, expected %d\n"; > > if (img_name_len != IWL_FW_INI_MAX_IMG_NAME_LEN) { > - IWL_WARN(fwrt, err_str, ext, "image", img_name_len, > + IWL_WARN(fwrt, "WRT: ext=%d. Invalid %s name length %d, expected %d\n", > + ext, "image", img_name_len, > IWL_FW_INI_MAX_IMG_NAME_LEN); > return; > } > > if (dbg_cfg_name_len != IWL_FW_INI_MAX_DBG_CFG_NAME_LEN) { > - IWL_WARN(fwrt, err_str, ext, "debug cfg", dbg_cfg_name_len, > + IWL_WARN(fwrt, "WRT: ext=%d. Invalid %s name length %d, expected %d\n", > + ext, "debug cfg", dbg_cfg_name_len, > IWL_FW_INI_MAX_DBG_CFG_NAME_LEN); > return; > } > @@ -2775,8 +2775,6 @@ static void _iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, > struct iwl_ucode_tlv *tlv = iter; > void *ini_tlv = (void *)tlv->data; > u32 type = le32_to_cpu(tlv->type); > - const char invalid_ap_str[] = > - "WRT: ext=%d. Invalid apply point %d for %s\n"; > > switch (type) { > case IWL_UCODE_TLV_TYPE_DEBUG_INFO: > @@ -2786,8 +2784,8 @@ static void _iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, > struct iwl_fw_ini_allocation_data *buf_alloc = ini_tlv; > > if (pnt != IWL_FW_INI_APPLY_EARLY) { > - IWL_ERR(fwrt, invalid_ap_str, ext, pnt, > - "buffer allocation"); > + IWL_ERR(fwrt, "WRT: ext=%d. Invalid apply point %d for %s\n", > + ext, pnt, "buffer allocation"); > goto next; > } > > @@ -2797,8 +2795,8 @@ static void _iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, > } > case IWL_UCODE_TLV_TYPE_HCMD: > if (pnt < IWL_FW_INI_APPLY_AFTER_ALIVE) { > - IWL_ERR(fwrt, invalid_ap_str, ext, pnt, > - "host command"); > + IWL_ERR(fwrt, "WRT: ext=%d. Invalid apply point %d for %s\n", > + ext, pnt, "host command"); > goto next; > } > iwl_fw_dbg_send_hcmd(fwrt, tlv, ext); > > -- Thanks, ~Nick Desaulniers