From patchwork Fri May 19 11:20:53 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: 9736961 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 54651601A1 for ; Fri, 19 May 2017 11:21:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4738626907 for ; Fri, 19 May 2017 11:21:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3B82528875; Fri, 19 May 2017 11:21:09 +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 D7DC926907 for ; Fri, 19 May 2017 11:21:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754399AbdESLVI (ORCPT ); Fri, 19 May 2017 07:21:08 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:32775 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754418AbdESLVH (ORCPT ); Fri, 19 May 2017 07:21:07 -0400 Received: by mail-wr0-f194.google.com with SMTP id w50so2620177wrc.0 for ; Fri, 19 May 2017 04:21:06 -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=6zlBDgO339b6PtHoqQvtH8cBVmR7nwuyfjvaOMopjLk=; b=purU228daeL/wk7ABCeGblZetv+qoyvHlRTi6wai5fJJoYn5Ng5Ta+xLzPZDV3R5Dm mg1y4AQ8AGRfZGckYZcfuJvW0akj9hGEvAzXcAwUmUiQF7FfB359SD4hMioczlJ4DwiE OwLcsqFLe1g8Dkpslq1BzcmhbHUtrndr0t5vY+X4M6YqdXreD4ScVIW587eBYaKZws66 a4vh2nBC9P5n7XmhrEMwzmLCcm7Su6Jpdnf7LIcsO3R8VVJ9KxrrtM5x6hfMyy6JuQKu +RsfV1XqtpOZh7rsfGKGMyfOtWVDY059kg0GsUgFlgPFqMxdrA/oq5FcJibj5Sl9JluH 9d0Q== 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=6zlBDgO339b6PtHoqQvtH8cBVmR7nwuyfjvaOMopjLk=; b=j3HmM7/AulpnjmcdGYTc1hWi1x3XIPYCBINg3OriNReRr0wYOARKFpr9U1+mLuzHy1 FJW7xIsI0VbSWssFAZjgn118EaeuCqnAonJ43LunuENf3PQLjUAayl69Zoe56PceEZyI elgXwP51E4TwI+HQj7tIMiIfhWv8BReYtr5VEPCGuTcMJHFjvC/caIGyCdIPfWV3eael suPflFwyUhrNSYb2glPpD+en8oizQa3s8lVXJqcu09ZlCDC4pWMh78lukr9LJZQpO88r qJ13eIx/+Q7ESubwR2IRdEOsanvmGAZjHBaYCOs4R9kH5N6/3hVm/N82iOECGXXIjRBl 4pXA== X-Gm-Message-State: AODbwcAuNPLhhLxo1I7HUGuJBouI/azArir2KvYrI8saoQS3B24F00hS xZPzlsP+vIetJYtAz1M= X-Received: by 10.80.184.129 with SMTP id l1mr6634437ede.88.1495192865921; Fri, 19 May 2017 04:21:05 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:82d:ce00:d850:21e6:e0a6:5c5a]) by smtp.gmail.com with ESMTPSA id i2sm2782168eda.18.2017.05.19.04.21.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 May 2017 04:21:05 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 3/3] fix definition of __SCHAR_MAX__ & friends Date: Fri, 19 May 2017 13:20:53 +0200 Message-Id: <20170519112053.24632-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170519112053.24632-1-luc.vanoostenryck@gmail.com> References: <20170519112053.24632-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 The predefined macros __SCHAR_MAX__, __SHRT_MAX__, __WCHAR_MAX__ & __CHAR_BIT__ are defined based on the size of these types on the machine where sparse was compiled. But since sparse has flags like -m32/-m64 and it's not unlikely to have one day a flag like -march=, better to use the used by sparse for these types as stored in 'bits_in_char', 'bits_in_short', ... Signed-off-by: Luc Van Oostenryck --- lib.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib.c b/lib.c index 20eb72e95..99ecdcc4a 100644 --- a/lib.c +++ b/lib.c @@ -832,11 +832,16 @@ static void predefined_sizeof(const char *name, unsigned bits) add_pre_buffer("#weak_define __SIZEOF_%s__ %d\n", name, bits/8); } -static void predefined_type_size(const char *name, const char *suffix, unsigned bits) +static void predefined_max(const char *name, const char *suffix, unsigned bits) { unsigned long long max = (1ULL << (bits - 1 )) - 1; add_pre_buffer("#weak_define __%s_MAX__ %#llx%s\n", name, max, suffix); +} + +static void predefined_type_size(const char *name, const char *suffix, unsigned bits) +{ + predefined_max(name, suffix, bits); predefined_sizeof(name, bits); } @@ -845,6 +850,10 @@ static void predefined_macros(void) add_pre_buffer("#define __CHECKER__ 1\n"); predefined_sizeof("SHORT", bits_in_short); + predefined_max("SHRT", "", bits_in_short); + predefined_max("SCHAR", "", bits_in_char); + predefined_max("WCHAR", "", bits_in_wchar); + add_pre_buffer("#weak_define __CHAR_BIT__ %d\n", bits_in_char); predefined_type_size("INT", "", bits_in_int); predefined_type_size("LONG", "L", bits_in_long); @@ -1068,12 +1077,6 @@ void create_builtin_stream(void) add_pre_buffer("#define __OPTIMIZE__ 1\n"); if (optimize_size) add_pre_buffer("#define __OPTIMIZE_SIZE__ 1\n"); - - /* GCC defines these for limits.h */ - add_pre_buffer("#weak_define __SHRT_MAX__ " STRINGIFY(__SHRT_MAX__) "\n"); - add_pre_buffer("#weak_define __SCHAR_MAX__ " STRINGIFY(__SCHAR_MAX__) "\n"); - add_pre_buffer("#weak_define __WCHAR_MAX__ " STRINGIFY(__WCHAR_MAX__) "\n"); - add_pre_buffer("#weak_define __CHAR_BIT__ " STRINGIFY(__CHAR_BIT__) "\n"); } static struct symbol_list *sparse_tokenstream(struct token *token)