From patchwork Fri Mar 31 01:44:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 9655395 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AC5F360113 for ; Fri, 31 Mar 2017 01:46:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9EAF328688 for ; Fri, 31 Mar 2017 01:46:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 937DF28698; Fri, 31 Mar 2017 01:46:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B2FD28688 for ; Fri, 31 Mar 2017 01:46:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934681AbdCaBqr (ORCPT ); Thu, 30 Mar 2017 21:46:47 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:34254 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934889AbdCaBqp (ORCPT ); Thu, 30 Mar 2017 21:46:45 -0400 Received: by mail-wr0-f196.google.com with SMTP id w43so16583251wrb.1 for ; Thu, 30 Mar 2017 18:46:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=eWay0i/yXFe9DZqP7lPey85aEDBgFJndQDR4Opfl0vU=; b=gCSnPqN7xgtQVpA2CBXhEM9j1EdEJep4V08nN4zSe5+iXA7BMCqmubC/sczqbZxaBd tYF3v3jydp4n7Pls1aTGQuTuX7w7AaJ5wXOCPB/XVsXu+D+DwMmAMIWIl6Gz34MzxA5Y eWKxyLQYs4DewgnwaySpGsNNVYjSRVYH+oOUfPChEoe6Ww5cz+gTTWZ/BysKXcj6R/dW WFTyabc7dTowKlydF96KTzFBvP3A4EbRyzdHEc/XTlKTQf9gxBHJXs0oLAwIg6qx3ueR U62235hcrLg6UzaT0yajRaM0mqo8CUqHRBZWNVXtYAa9AWYsvUxVPbzy0Wi05/VU4t2p zVyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=eWay0i/yXFe9DZqP7lPey85aEDBgFJndQDR4Opfl0vU=; b=gxR4bkeNZPg3j0TLDD0Pdsqt+jhr91Ihki3ZpotAkuyrxEjpu/LI3KFeaL447zBfz0 G3VWJyDZpg0FuW4V/K0E6zpZlUQLO2k/QcG26HqOmBizBbngkOe4ea5MTlAbkTMq7bkd jnTJSXOha+ij+Tuw5LCoJaVtKjnTcRQqWXNVJPYdApEI+I+A+QV2oFiIWKf2v/oaFyyg sLgywRKxXn3Ht99VQrsusFOgVmyEfOvhaZ6JCKSUw4VGsn7+r+E4RioMwFV9ZCQ8kVzr RR3flNfutqhD/VlXEkDBJrzCg+cj2Mrmow8HBmJGoSl0n9ydDMvb7nau/+2F9vObTgf8 2mdA== X-Gm-Message-State: AFeK/H0bwY00jeba7CeVpM3NHNv8DHSABIp2+C0lF1j4D7cgEDztkNhSWBI9hcD+tVi5/Q== X-Received: by 10.28.174.203 with SMTP id x194mr388133wme.85.1490924803193; Thu, 30 Mar 2017 18:46:43 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:88d:1900:cdad:92b8:5279:ae19]) by smtp.gmail.com with ESMTPSA id 189sm917023wmm.31.2017.03.30.18.46.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Mar 2017 18:46:42 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Nicolai Stange , Luc Van Oostenryck Subject: [PATCH v4 16/25] constexpr: recognize string literals as address constants Date: Fri, 31 Mar 2017 03:44:50 +0200 Message-Id: <20170331014459.9351-17-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170331014459.9351-1-luc.vanoostenryck@gmail.com> References: <20170331014459.9351-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Nicolai Stange Introduce support for recognizing string literals as address constants. Make evaluate_string() unconditionally tag the *-preop wrapped symbol expression as being an address constant. Signed-off-by: Nicolai Stange Signed-off-by: Luc Van Oostenryck --- evaluate.c | 1 + validation/constexpr-string.c | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 validation/constexpr-string.c diff --git a/evaluate.c b/evaluate.c index 9a7d432b8..cdbc08ef2 100644 --- a/evaluate.c +++ b/evaluate.c @@ -108,6 +108,7 @@ static struct symbol *evaluate_string(struct expression *expr) addr->symbol = sym; addr->ctype = &lazy_ptr_ctype; + addr->flags = CEF_ADDR; expr->type = EXPR_PREOP; expr->op = '*'; diff --git a/validation/constexpr-string.c b/validation/constexpr-string.c new file mode 100644 index 000000000..e641a83eb --- /dev/null +++ b/validation/constexpr-string.c @@ -0,0 +1,9 @@ +static char *a = "foobar"; // OK + +/* + * check-name: string literal constness verification. + * check-command: sparse -Wconstexpr-not-const $file + * + * check-error-start + * check-error-end + */