Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1159955ybi; Tue, 16 Jul 2019 10:29:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqxybuB0tZZVBQvYF7QDwU5nfdtfGzWVhS5KOxtY7u6WxHbTvA5fKYU2ymMqf+J6kfT1ah4f X-Received: by 2002:a17:902:8689:: with SMTP id g9mr34798275plo.252.1563298166577; Tue, 16 Jul 2019 10:29:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563298166; cv=none; d=google.com; s=arc-20160816; b=JzsJKXGRzYrd0yRw/ehIfdFetg6oPgCkM/tt/OhXFuYnuDtRLmM5bVwfN/i1qNKnau rhcHnxtM05jaPLyeglMgtG8IH3IXpj7ooMAyYrz8iDBCf8dFqr6GOFpTel2+yZ5LWriK FZhudrXDzGJZfrA/EQ4ni+xnBqbO9y96TVeTLknBgZ78Ff+4DNrMb22Ut/Q4qElFHBwK hoSYvoYu7zSMUzmbc5nj8k1+CntlbWVkxAN/VuoU6/O7qFgISm7Q8/clfDR3FdVbZZIZ 1d6fxNNkFAGOcIhxcRkTaWO2jEmFs71rW76g0Odz9q4Xlma/BPkxAtt+MqqNfk7qEYkT d1VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=FdipyjVpCY6f56Xd4OimbS+PX/++xiAeJwdsr6JXrj4=; b=mD/TFp3oJ7vNdvqgIHh9kte2HkxT3kyOeO/3aoLHswCp6BgCzmG0CXz7t7WtvgmRut Gt76uCgsWWG5Fnu7ULpZHyBBU4QqBDW8/yMZQZi/QDVO/D1+ct9TR6r3qapDXJVbaoou 68rI0yUT0jG8JQVJWMupZnoDwif3rmUP9oUESWzGBia0RFY+jF6rl7rIu16uFdIm7COQ Q33z6d7qchhVTnhxHnjfhKZBx6bun09Xf1OGvoVWzTqH6PzQODqhVXdZNvKQvGSUjwam L3OD8KP3KVCmAfZg2PKIUgJpiLPmBNcJu4GepwO28tEjoNQvmJJDBgrMebWYOir4OZTq kiig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=h1+V62UQ; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t14si19208161ply.347.2019.07.16.10.28.55; Tue, 16 Jul 2019 10:29:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=h1+V62UQ; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387773AbfGPR2w (ORCPT + 99 others); Tue, 16 Jul 2019 13:28:52 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:39170 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728575AbfGPR2v (ORCPT ); Tue, 16 Jul 2019 13:28:51 -0400 Received: by mail-pg1-f195.google.com with SMTP id u17so9775118pgi.6 for ; Tue, 16 Jul 2019 10:28:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FdipyjVpCY6f56Xd4OimbS+PX/++xiAeJwdsr6JXrj4=; b=h1+V62UQ9GlP5V7C0IVqWNdDBKsnlQlECKOfmge8wZcQCKZdqLaxGAP+GFTdv6GM43 rsyjKA7SqGqU56sdSzRhGCyQ9fEcpRAkOuZoc/fykRCryb/mK1IJFA6rYJu74nY6zCXP plvbFxEctwJ92ks0XB0cx3o3ptKwXdPR56Xp2M9jEdbyBmQvREnzRwijT5bcJQK8ciS0 CHmrSsEx2FL+yOvxYn8aj8xeJzpN/yDZlr/uPRH9K1OnIT57lKWkYZZLe5JLY+tHpxoF vPlE1PtJIoTbnhydJ88RkCm1pYqsKye8E1Ee6wJUbVNzG7CCcGHdGc3tWJTq9mhurxUV nPuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FdipyjVpCY6f56Xd4OimbS+PX/++xiAeJwdsr6JXrj4=; b=K/6AkXjvfmpeinkmN4xEZX0DhHWPQL9xozTxYjorGsTShYVXmMnsZW4etDzrgy1GVm jL7EMmx10xruB5vi4Xt7qlrb7cGfY8vHei8KakpKB95FMSJJ61sWfNbdS9BS0ykIV9l9 dcOVMLhtMg6ViH6C5hbys2qz2tOy3cXGlq2/MQ1fhU5iJHimTWwIQEIn+hhyEtZFMh7Z YidvpV7waymMX2geqUdPkYxi3123T/BeXOWHfYUPJcjLKuyB3+9GgCM7IqB+GxKoGYhu qDyNt0wJrGjEmBfRLwoieXSPyrvTrL9n+42CFDxfMIs3ZuuwC+SG3FEVM0/JhMzQH8Iv Atuw== X-Gm-Message-State: APjAAAX0X3QjEqc9jAepgvUKoLZ+Qppxx+Oiy0V5rMBFr6NFLfor+Mxb 8rjUt5P5bgrMCLh2RpPLm8GXPx+BvcYGhy3N011FMw== X-Received: by 2002:a65:5687:: with SMTP id v7mr36183069pgs.263.1563298130577; Tue, 16 Jul 2019 10:28:50 -0700 (PDT) MIME-Version: 1.0 References: <20190712001708.170259-1-ndesaulniers@google.com> In-Reply-To: From: Nick Desaulniers Date: Tue, 16 Jul 2019 10:28:39 -0700 Message-ID: Subject: Re: [PATCH -next] iwlwifi: dbg: work around clang bug by marking debug strings static To: Joe Perches , Kalle Valo Cc: Arnd Bergmann , Nathan Chancellor , Johannes Berg , Emmanuel Grumbach , Luca Coelho , Intel Linux Wireless , "David S. Miller" , Shahar S Matityahu , Sara Sharon , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, LKML , clang-built-linux Content-Type: text/plain; charset="UTF-8" Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Thu, Jul 11, 2019 at 7:15 PM Joe Perches 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 > > Reported-by: Nathan Chancellor > > Signed-off-by: Nick Desaulniers > > --- > > 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