From nobody Sat Sep 13 04:02:25 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 358DEC636CC for ; Mon, 6 Feb 2023 01:33:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229606AbjBFBde (ORCPT ); Sun, 5 Feb 2023 20:33:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229558AbjBFBdb (ORCPT ); Sun, 5 Feb 2023 20:33:31 -0500 Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D2FF1ABF4 for ; Sun, 5 Feb 2023 17:33:30 -0800 (PST) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B03CF5C0095; Sun, 5 Feb 2023 20:33:29 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Sun, 05 Feb 2023 20:33:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm1; t=1675647209; x=1675733609; bh=fV X1dx//6BL4WmVFCPIKJBAFS5M6Tn6T+JrR5oaXwfA=; b=TVmE5BM51339xZSqh3 rllB+kqqIjNQEA7s/hAQyA9KOD3JM2ahyZRWUWeZuCFDodJelqkXNKHfuLZwFNLM +gYgJsKky8ZY4aoBh3AQIMsspgkm5ctiHcBXbY+yZrRTlLDw5WiJ7Z8CipDi73Rg 22/NI7d867Idri/km/SSh+7GB/Nwp77xds7diK33V36vXSNisGjDxLdK3z2ePvC7 h9wsRamE7o/AWEAerOe0AyACjo5YTWiLqYscafrvzGoTGXHaiX/i8MCEy4rdR7zX 5YJURttVBoyRmU7OMAFDv4JVlbIHSH2BWjGAuF5o3zkOAq8DFKfN9KyXZxWkIMR9 N7mg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1675647209; x=1675733609; bh=fVX1dx//6BL4W mVFCPIKJBAFS5M6Tn6T+JrR5oaXwfA=; b=D+MA7O4hghsnoKVXx6h3lUkn7Hg78 dDXmP0YrSQh+jCaJ0+8+b3WRui5HN931m99M9G+vFJgPC96+x8ntz1CLQyEhhanF ie0nRCJo8Dm6D3U1a25+WMt5W3SYyXRvJWq44DUvoP9Laedml7NGf7WQn6/9g+40 MIEk+ndMBzM+3jAqHOWG9EVcN1xQM7lHsOOuOKzjEjb961SioeyVWWggIY8mJQAp eCO/83Ehx2aJwMI4g2ehKZuequDYwAiWLvQH32FzZA+MJ57qgEes06O63x+jTDjL LtCV3arbRN3ps5gYjTe5GLxYNBjoNk6O5Zz/MF6SfOmOElW+1SF1QRvAw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeghedgfeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpeggihhntggvnhhtucffrghgohhnnhgvrghuuceovhesvhgu rgdrihhoqeenucggtffrrghtthgvrhhnpedujedtgefgtdelffefjeeggffgiefgjeevve dtjefhuddvleeiudetuedtffefheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr mhepmhgrihhlfhhrohhmpehvsehvuggrrdhioh X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 5 Feb 2023 20:33:29 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, Vincent Dagonneau Subject: [PATCH v3 1/4] tools/nolibc: Adding stdint.h Date: Sun, 5 Feb 2023 20:32:46 -0500 Message-Id: <20230206013248.471664-2-v@vda.io> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230206013248.471664-1-v@vda.io> References: <20230206013248.471664-1-v@vda.io> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Nolibc works fine for small and limited program however most program expect integer types to be defined in stdint.h rather than std.h. This is a quick fix that moves the existing integer definitions in std.h to stdint.h. --- tools/include/nolibc/Makefile | 4 ++-- tools/include/nolibc/std.h | 15 +-------------- tools/include/nolibc/stdint.h | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 tools/include/nolibc/stdint.h diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile index cfd06764b5ae..ec57d3932506 100644 --- a/tools/include/nolibc/Makefile +++ b/tools/include/nolibc/Makefile @@ -25,8 +25,8 @@ endif =20 nolibc_arch :=3D $(patsubst arm64,aarch64,$(ARCH)) arch_file :=3D arch-$(nolibc_arch).h -all_files :=3D ctype.h errno.h nolibc.h signal.h std.h stdio.h stdlib.h st= ring.h \ - sys.h time.h types.h unistd.h +all_files :=3D ctype.h errno.h nolibc.h signal.h std.h stdint.h stdio.h st= dlib.h \ + string.h sys.h time.h types.h unistd.h =20 # install all headers needed to support a bare-metal compiler all: headers diff --git a/tools/include/nolibc/std.h b/tools/include/nolibc/std.h index 1747ae125392..933bc0be7e1c 100644 --- a/tools/include/nolibc/std.h +++ b/tools/include/nolibc/std.h @@ -18,20 +18,7 @@ #define NULL ((void *)0) #endif =20 -/* stdint types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; -typedef unsigned short uint16_t; -typedef signed short int16_t; -typedef unsigned int uint32_t; -typedef signed int int32_t; -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -typedef unsigned long size_t; -typedef signed long ssize_t; -typedef unsigned long uintptr_t; -typedef signed long intptr_t; -typedef signed long ptrdiff_t; +#include "stdint.h" =20 /* those are commonly provided by sys/types.h */ typedef unsigned int dev_t; diff --git a/tools/include/nolibc/stdint.h b/tools/include/nolibc/stdint.h new file mode 100644 index 000000000000..4ba264031df9 --- /dev/null +++ b/tools/include/nolibc/stdint.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * Standard definitions and types for NOLIBC + * Copyright (C) 2023 Vincent Dagonneau + */ + +#ifndef _NOLIBC_STDINT_H +#define _NOLIBC_STDINT_H + +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +typedef unsigned int uint32_t; +typedef signed int int32_t; +typedef unsigned long long uint64_t; +typedef signed long long int64_t; +typedef unsigned long size_t; +typedef signed long ssize_t; +typedef unsigned long uintptr_t; +typedef signed long intptr_t; +typedef signed long ptrdiff_t; + +#endif /* _NOLIBC_STDINT_H */ --=20 2.39.1 From nobody Sat Sep 13 04:02:25 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF118C636CC for ; Mon, 6 Feb 2023 01:33:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229539AbjBFBdo (ORCPT ); Sun, 5 Feb 2023 20:33:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229558AbjBFBdg (ORCPT ); Sun, 5 Feb 2023 20:33:36 -0500 Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CA841ADC4 for ; Sun, 5 Feb 2023 17:33:33 -0800 (PST) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 775225C012E; Sun, 5 Feb 2023 20:33:32 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 05 Feb 2023 20:33:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm1; t=1675647212; x=1675733612; bh=2M /FZOrWxjfHGOTs/u+tXzvp2U//Imf0DNiIU0PoXIE=; b=G7B4JVYDbn9/G0BGz1 lI3bpMwjZM9fDtFhM/tR9rBovCAyh887cWTmkBs85AyY7IP90sPpQtBZCp4ndZXd GtdZ35XnQyBcQGJb6HhfNJJimbzmSPCh8AwXb+NGAAkU35wiYU+6U1GVZYiiS/tW QuKanGqXq9t3F2EZ6lnuPVY8V7igmRCpG+wvmgHw5r9KiVGdST8fR8UmaFyQKy3/ du70RBav0JKXYRBmLDnnPXEYTj6XoiLUkbBlxm63hoUflUbAUlRDmqcLra+qzTwD xVu0QsxEkjv/+kMJ/rE5WAZwflVGersnQxWfW7/dBUMcVHa5XsluteavPxdxZAwx YIPg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1675647212; x=1675733612; bh=2M/FZOrWxjfHG OTs/u+tXzvp2U//Imf0DNiIU0PoXIE=; b=b/W96titouLSfFt0MUQ2NLU82sTWh aXDVOJPo9KchAmarEwSXTxYsuVWO+fPt+HyIqmxCOm45mYcithETWhoFmSr9L1Y5 4gQey+xdNdNu/pOM4zsHrXyUbyGZXVdErO2uvsyRjOQwy3WXVl611zsb/CFkmFem KGS6EUXhQmb6OzuVubcTRgS8t8ElNAvdbhtXrOu83ROx5kLx+a5ytCanJwSPuZgF jVDAaLLVkMR4Yso9/Eqafot1U94y1HDEG0xw7VYOb47gBqWHavJBDeoT2AANhUuy Oib7lWUIY9YarrJKw2aAT7MmmjoEbwmwK4PWcyKLtI4+q43hYbtiJq4mQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeghedgfeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpeggihhntggvnhhtucffrghgohhnnhgvrghuuceovhesvhgu rgdrihhoqeenucggtffrrghtthgvrhhnpeehfeevieevuedtudeivefhjeekhefffeejfe etfeehvefgheetueekheefledvhfenucffohhmrghinhepohhpvghnghhrohhuphdrohhr ghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehvse hvuggrrdhioh X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 5 Feb 2023 20:33:31 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, Vincent Dagonneau Subject: [PATCH v3 2/4] tools/nolibc: Adding integer types and integer limit macros Date: Sun, 5 Feb 2023 20:32:47 -0500 Message-Id: <20230206013248.471664-3-v@vda.io> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230206013248.471664-1-v@vda.io> References: <20230206013248.471664-1-v@vda.io> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This commit adds some of the missing integer types to stdint.h and adds limit macros (e.g. INTN_{MIN,MAX}). The reference used for adding these types is https://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html. Note that the maximum size of size_t is implementation-defined (>65535), in this case I chose to stick with what the kernel uses in linux/include/uapi/asm-generic/posix_types.h: unsigned int on 32bits and unsigned long on 64bits. --- tools/include/nolibc/stdint.h | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tools/include/nolibc/stdint.h b/tools/include/nolibc/stdint.h index 4ba264031df9..e676254d896f 100644 --- a/tools/include/nolibc/stdint.h +++ b/tools/include/nolibc/stdint.h @@ -21,4 +21,64 @@ typedef unsigned long uintptr_t; typedef signed long intptr_t; typedef signed long ptrdiff_t; =20 +typedef int8_t int_least8_t; +typedef uint8_t uint_least8_t; +typedef int16_t int_least16_t; +typedef uint16_t uint_least16_t; +typedef int32_t int_least32_t; +typedef uint32_t uint_least32_t; +typedef int64_t int_least64_t; +typedef uint64_t uint_least64_t; + +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + +/* limits of integral types */ + +#define INT8_MIN (-128) +#define INT16_MIN (-32767-1) +#define INT32_MIN (-2147483647-1) +#define INT64_MIN (-9223372036854775807LL-1) + +#define INT8_MAX (127) +#define INT16_MAX (32767) +#define INT32_MAX (2147483647) +#define INT64_MAX (9223372036854775807LL) + +#define UINT8_MAX (255) +#define UINT16_MAX (65535) +#define UINT32_MAX (4294967295U) +#define UINT64_MAX (18446744073709551615ULL) + +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST64_MIN INT64_MIN + +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MAX INT64_MAX + +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +#define SIZE_MAX UINT64_MAX + +#if __WORDSIZE =3D=3D 64 + #define INTPTR_MIN INT64_MIN + #define INTPTR_MAX INT64_MAX + #define UINTPTR_MAX UINT64_MAX + #define PTRDIFF_MIN INT64_MIN + #define PTRDIFF_MAX INT64_MAX +#else + #define INTPTR_MIN INT32_MIN + #define INTPTR_MAX INT32_MAX + #define UINTPTR_MAX UINT32_MAX + #define PTRDIFF_MIN INT32_MIN + #define PTRDIFF_MAX INT32_MAX +#endif /* __WORDSIZE =3D=3D 64 */ + #endif /* _NOLIBC_STDINT_H */ --=20 2.39.1 From nobody Sat Sep 13 04:02:25 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3003C64EC3 for ; Mon, 6 Feb 2023 01:33:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229629AbjBFBdm (ORCPT ); Sun, 5 Feb 2023 20:33:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjBFBdg (ORCPT ); Sun, 5 Feb 2023 20:33:36 -0500 Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82E431ABFF for ; Sun, 5 Feb 2023 17:33:34 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id F23D55C013A; Sun, 5 Feb 2023 20:33:33 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Sun, 05 Feb 2023 20:33:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm1; t=1675647213; x=1675733613; bh=w0 63ixA3VHKfcqn7VyfQPNnKog+0gE3yylZvR0Lv1FA=; b=Ppi4fsQaDAZYw8vqF+ j660mo62MpeCs1OsT7LzviMPVA9kF++0cYaVyx9JLY3Vd/Kil6zb2d0cQs7FHRen hs4VEDEAJjDRRDnPr+x+qZ1P4u8qs7fADe/I1lCnGO3x/361AWs++VJ8NgJBhTkD umtw8i3cBnAkDEL1A0w2dDeknJjcMp9i2SlTpYdh/427S3jbUc8fjJEW0WozQJOI J1qR+IbM7NG48jUt1/HN9ugu6bMhhnOBfdk8Aoqbuts9FjbcPsoYvEO+OumIWu0e HtAGz+33LHLkugV8IIRc3T6RDEphcqxbL4nxviOxqDYFklRCAmzDumOjA8etBl2d U+lA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1675647213; x=1675733613; bh=w063ixA3VHKfc qn7VyfQPNnKog+0gE3yylZvR0Lv1FA=; b=PMsPVCBafUR6KlRBuga1Zw76YEpKz iivwFUsDK5ckZlH00AuhUWINefnRH5jBUmYsbC/9VY3mY92182yHobv4UfTfphyR 2orsXsJ+uKXaJQbOKilXO5NHu3WbJZsSe2QSKfXZDg/83EftRSISBh4hU2VaUv0q BRsEs96A+Yb768e21LCfc0fK9bxiWf5/51bl7T6bN6SN1SmX1/i6MoI9n5qxka/P 4QUndAB0PMdZ/9sVV4xB4ebfEbPVH20DlkArax6J4/msCFGPRU7tkW3nj4m3gkJ5 Lb9/f7IIdKmX02I9AQJwsbmLSxpIKnA+73DoYQSxr2anZx7HnRXiUvCFg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeghedgfeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpeggihhntggvnhhtucffrghgohhnnhgvrghuuceovhesvhgu rgdrihhoqeenucggtffrrghtthgvrhhnpedujedtgefgtdelffefjeeggffgiefgjeevve dtjefhuddvleeiudetuedtffefheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr mhepmhgrihhlfhhrohhmpehvsehvuggrrdhioh X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 5 Feb 2023 20:33:33 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, Vincent Dagonneau Subject: [PATCH v3 3/4] tools/nolibc: Enlarging column width of tests Date: Sun, 5 Feb 2023 20:32:48 -0500 Message-Id: <20230206013248.471664-4-v@vda.io> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230206013248.471664-1-v@vda.io> References: <20230206013248.471664-1-v@vda.io> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This commit enlarges the column width from 40 to 64 characters to make room for longer tests --- tools/testing/selftests/nolibc/nolibc-test.c | 96 ++++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index f14f5076fb6d..725ee66d059c 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -130,111 +130,111 @@ static int pad_spc(int llen, int cnt, const char *f= mt, ...) */ =20 #define EXPECT_ZR(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_zr= (expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_zr= (expr, llen); } while (0) =20 static int expect_zr(int expr, int llen) { int ret =3D !(expr =3D=3D 0); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_NZ(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_nz= (expr, llen; } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_nz= (expr, llen; } while (0) =20 static int expect_nz(int expr, int llen) { int ret =3D !(expr !=3D 0); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_EQ(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_eq= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_eq= (expr, llen, val); } while (0) =20 -static int expect_eq(int expr, int llen, int val) +static int expect_eq(uint64_t expr, int llen, uint64_t val) { int ret =3D !(expr =3D=3D val); =20 - llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + llen +=3D printf(" =3D %lld ", expr); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_NE(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_ne= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_ne= (expr, llen, val); } while (0) =20 static int expect_ne(int expr, int llen, int val) { int ret =3D !(expr !=3D val); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_GE(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_ge= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_ge= (expr, llen, val); } while (0) =20 static int expect_ge(int expr, int llen, int val) { int ret =3D !(expr >=3D val); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_GT(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_gt= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_gt= (expr, llen, val); } while (0) =20 static int expect_gt(int expr, int llen, int val) { int ret =3D !(expr > val); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_LE(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_le= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_le= (expr, llen, val); } while (0) =20 static int expect_le(int expr, int llen, int val) { int ret =3D !(expr <=3D val); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_LT(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_lt= (expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_lt= (expr, llen, val); } while (0) =20 static int expect_lt(int expr, int llen, int val) { int ret =3D !(expr < val); =20 llen +=3D printf(" =3D %d ", expr); - pad_spc(llen, 40, ret ? "[FAIL]\n" : " [OK]\n"); + pad_spc(llen, 64, ret ? "[FAIL]\n" : " [OK]\n"); return ret; } =20 =20 #define EXPECT_SYSZR(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_sy= szr(expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_sy= szr(expr, llen); } while (0) =20 static int expect_syszr(int expr, int llen) { @@ -243,17 +243,17 @@ static int expect_syszr(int expr, int llen) if (expr) { ret =3D 1; llen +=3D printf(" =3D %d %s ", expr, errorname(errno)); - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { llen +=3D printf(" =3D %d ", expr); - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_SYSEQ(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_sy= seq(expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_sy= seq(expr, llen, val); } while (0) =20 static int expect_syseq(int expr, int llen, int val) { @@ -262,17 +262,17 @@ static int expect_syseq(int expr, int llen, int val) if (expr !=3D val) { ret =3D 1; llen +=3D printf(" =3D %d %s ", expr, errorname(errno)); - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { llen +=3D printf(" =3D %d ", expr); - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_SYSNE(cond, expr, val) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_sy= sne(expr, llen, val); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_sy= sne(expr, llen, val); } while (0) =20 static int expect_sysne(int expr, int llen, int val) { @@ -281,17 +281,17 @@ static int expect_sysne(int expr, int llen, int val) if (expr =3D=3D val) { ret =3D 1; llen +=3D printf(" =3D %d %s ", expr, errorname(errno)); - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { llen +=3D printf(" =3D %d ", expr); - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_SYSER(cond, expr, expret, experr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_sy= serr(expr, expret, experr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_sy= serr(expr, expret, experr, llen); } while (0) =20 static int expect_syserr(int expr, int expret, int experr, int llen) { @@ -302,16 +302,16 @@ static int expect_syserr(int expr, int expret, int ex= perr, int llen) if (expr !=3D expret || _errno !=3D experr) { ret =3D 1; llen +=3D printf(" !=3D (%d %s) ", expret, errorname(experr)); - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_PTRZR(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_pt= rzr(expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_pt= rzr(expr, llen); } while (0) =20 static int expect_ptrzr(const void *expr, int llen) { @@ -320,16 +320,16 @@ static int expect_ptrzr(const void *expr, int llen) llen +=3D printf(" =3D <%p> ", expr); if (expr) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_PTRNZ(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_pt= rnz(expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_pt= rnz(expr, llen); } while (0) =20 static int expect_ptrnz(const void *expr, int llen) { @@ -338,16 +338,16 @@ static int expect_ptrnz(const void *expr, int llen) llen +=3D printf(" =3D <%p> ", expr); if (!expr) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_STRZR(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_st= rzr(expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_st= rzr(expr, llen); } while (0) =20 static int expect_strzr(const char *expr, int llen) { @@ -356,16 +356,16 @@ static int expect_strzr(const char *expr, int llen) llen +=3D printf(" =3D <%s> ", expr); if (expr) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_STRNZ(cond, expr) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_st= rnz(expr, llen); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_st= rnz(expr, llen); } while (0) =20 static int expect_strnz(const char *expr, int llen) { @@ -374,16 +374,16 @@ static int expect_strnz(const char *expr, int llen) llen +=3D printf(" =3D <%s> ", expr); if (!expr) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_STREQ(cond, expr, cmp) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_st= req(expr, llen, cmp); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_st= req(expr, llen, cmp); } while (0) =20 static int expect_streq(const char *expr, int llen, const char *cmp) { @@ -392,16 +392,16 @@ static int expect_streq(const char *expr, int llen, c= onst char *cmp) llen +=3D printf(" =3D <%s> ", expr); if (strcmp(expr, cmp) !=3D 0) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } =20 =20 #define EXPECT_STRNE(cond, expr, cmp) \ - do { if (!cond) pad_spc(llen, 40, "[SKIPPED]\n"); else ret +=3D expect_st= rne(expr, llen, cmp); } while (0) + do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret +=3D expect_st= rne(expr, llen, cmp); } while (0) =20 static int expect_strne(const char *expr, int llen, const char *cmp) { @@ -410,9 +410,9 @@ static int expect_strne(const char *expr, int llen, con= st char *cmp) llen +=3D printf(" =3D <%s> ", expr); if (strcmp(expr, cmp) =3D=3D 0) { ret =3D 1; - llen +=3D pad_spc(llen, 40, "[FAIL]\n"); + llen +=3D pad_spc(llen, 64, "[FAIL]\n"); } else { - llen +=3D pad_spc(llen, 40, " [OK]\n"); + llen +=3D pad_spc(llen, 64, " [OK]\n"); } return ret; } --=20 2.39.1 From nobody Sat Sep 13 04:02:25 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD9E8C636CC for ; Mon, 6 Feb 2023 01:33:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229637AbjBFBdv (ORCPT ); Sun, 5 Feb 2023 20:33:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229609AbjBFBdl (ORCPT ); Sun, 5 Feb 2023 20:33:41 -0500 Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A847166C9 for ; Sun, 5 Feb 2023 17:33:36 -0800 (PST) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 875245C0140; Sun, 5 Feb 2023 20:33:35 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Sun, 05 Feb 2023 20:33:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm1; t=1675647215; x=1675733615; bh=f9 sG/L1Not5Vf7PbM7l/y4GQBIOVSUACvYMrutDp8/M=; b=L4nycn0yByTVXGcoR/ FDDgfIw9GI9Zg+rlMBZ+8PLHXmkXhPyuhVW9scT63/u5Z5H3JlGZatRn6YC1zhsi jEMGviZ1427NeimeJGDaey1pxcS7PE+M56ONUnhgDRbMYYSEnNGhlN/jwSFbHKWS DOQftX5XuwB/r2YFTajzujyY7ZyxPh4bkQqpCceHZl/K+aJ1CpoFHnkrZOkZ5QAB Jc1dtBjXGXybHDCovNK3h+lJjsZC9azQBlTjnENvnV+wexim7XI/GZ7mDZ+J4hbg 4rVKgqY/h2P60LBt+wHLg5vPWBDFht3ulGgBH1d9Rq3nv2xhuFRlsnX7RU1HJ0Zp uPsA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1675647215; x=1675733615; bh=f9sG/L1Not5Vf 7PbM7l/y4GQBIOVSUACvYMrutDp8/M=; b=Ln6cH8PLdWTboeO+LSAJaNsMlUhgl QyTpTJ0wTWggtXe5Py1rHdVNydaJE7USJ3VtLm+pxt2KMy2EGe6XLtLAstX15ELT aMqN2MgObWvZcUn9wzMKnODKiUbk24ElslgijMSyUrO8LMLRj6hBit6vrcX/L2Tn HpMT6mmhlYTN2NKJevUQoVoic6P5QuXadARZYPnBGr5QnQQaIUQgm8nKZu9tW1bJ Z8O+fFv3acRdjJ1bvxRNeqUrJaGtwOg5oLQ+bt7KITkp0nvuzqOf6czTB6DwkIJa jN/sZcP7JmNe2hcOf9r2x81kXEmZbYtuIW7lst/Ck5oStt84nMNLEJVyw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeghedgfeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpeggihhntggvnhhtucffrghgohhnnhgvrghuuceovhesvhgu rgdrihhoqeenucggtffrrghtthgvrhhnpedujedtgefgtdelffefjeeggffgiefgjeevve dtjefhuddvleeiudetuedtffefheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr mhepmhgrihhlfhhrohhmpehvsehvuggrrdhioh X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 5 Feb 2023 20:33:35 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, Vincent Dagonneau Subject: [PATCH v3 4/4] tools/nolibc: Adding tests for the integer limits in stdint.h Date: Sun, 5 Feb 2023 20:32:49 -0500 Message-Id: <20230206013248.471664-5-v@vda.io> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230206013248.471664-1-v@vda.io> References: <20230206013248.471664-1-v@vda.io> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" --- tools/testing/selftests/nolibc/nolibc-test.c | 39 +++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 725ee66d059c..f43c451c8ca2 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -531,7 +531,44 @@ int run_syscall(int min, int max) CASE_TEST(waitpid_child); EXPECT_SYSER(1, waitpid(getpid(), &tmp, WN= OHANG), -1, ECHILD); break; CASE_TEST(write_badf); EXPECT_SYSER(1, write(-1, &tmp, 1), -1, EB= ADF); break; CASE_TEST(write_zero); EXPECT_SYSZR(1, write(1, &tmp, 0)); break; - case __LINE__: + CASE_TEST(limit_int8_max); EXPECT_EQ(1, INT8_MAX, (int8_t) = 0x7f); break; + CASE_TEST(limit_int8_min); EXPECT_EQ(1, INT8_MIN, (int8_t) = 0x80); break; + CASE_TEST(limit_uint8_max); EXPECT_EQ(1, UINT8_MAX, (uint8_t) = 0xff); break; + CASE_TEST(limit_int16_max); EXPECT_EQ(1, INT16_MAX, (int16_t) = 0x7fff); break; + CASE_TEST(limit_int16_min); EXPECT_EQ(1, INT16_MIN, (int16_t) = 0x8000); break; + CASE_TEST(limit_uint16_max); EXPECT_EQ(1, UINT16_MAX, (uint16_t) = 0xffff); break; + CASE_TEST(limit_int32_max); EXPECT_EQ(1, INT32_MAX, (int32_t) = 0x7fffffff); break; + CASE_TEST(limit_int32_min); EXPECT_EQ(1, INT32_MIN, (int32_t) = 0x80000000); break; + CASE_TEST(limit_uint32_max); EXPECT_EQ(1, UINT32_MAX, (uint32_t) = 0xffffffff); break; + CASE_TEST(limit_int64_max); EXPECT_EQ(1, INT64_MAX, (int64_t) = 0x7fffffffffffffff); break; + CASE_TEST(limit_int64_min); EXPECT_EQ(1, INT64_MIN, (int64_t) = 0x8000000000000000); break; + CASE_TEST(limit_uint64_max); EXPECT_EQ(1, UINT64_MAX, (uint64_t) = 0xffffffffffffffff); break; + CASE_TEST(limit_int_least8_max); EXPECT_EQ(1, INT_LEAST8_MAX, (int_= least8_t) 0x7f); break; + CASE_TEST(limit_int_least8_min); EXPECT_EQ(1, INT_LEAST8_MIN, (int_= least8_t) 0x80); break; + CASE_TEST(limit_uint_least8_max); EXPECT_EQ(1, UINT_LEAST8_MAX, (uint= _least8_t) 0xff); break; + CASE_TEST(limit_int_least16_max); EXPECT_EQ(1, INT_LEAST16_MAX, (int_= least16_t) 0x7fff); break; + CASE_TEST(limit_int_least16_min); EXPECT_EQ(1, INT_LEAST16_MIN, (int_= least16_t) 0x8000); break; + CASE_TEST(limit_uint_least16_max); EXPECT_EQ(1, UINT_LEAST16_MAX, (uint= _least16_t) 0xffff); break; + CASE_TEST(limit_int_least32_max); EXPECT_EQ(1, INT_LEAST32_MAX, (int_= least32_t) 0x7fffffff); break; + CASE_TEST(limit_int_least32_min); EXPECT_EQ(1, INT_LEAST32_MIN, (int_= least32_t) 0x80000000); break; + CASE_TEST(limit_uint_least32_max); EXPECT_EQ(1, UINT_LEAST32_MAX, (uint= _least32_t) 0xffffffffU); break; + CASE_TEST(limit_int_least64_max); EXPECT_EQ(1, INT_LEAST64_MAX, (int_= least64_t) 0x7fffffffffffffffLL); break; + CASE_TEST(limit_int_least64_min); EXPECT_EQ(1, INT_LEAST64_MIN, (int_= least64_t) 0x8000000000000000LL); break; + CASE_TEST(limit_uint_least64_max); EXPECT_EQ(1, UINT_LEAST64_MAX, (uint= _least64_t) 0xffffffffffffffffULL); break; +#if __WORDSIZE =3D=3D 64 + CASE_TEST(limit_intptr_min); EXPECT_EQ(1, INTPTR_MIN, (intptr_t)= 0x8000000000000000LL); break; + CASE_TEST(limit_intptr_max); EXPECT_EQ(1, INTPTR_MAX, (intptr_t)= 0x7fffffffffffffffLL); break; + CASE_TEST(limit_uintptr_max); EXPECT_EQ(1, UINTPTR_MAX, (uintptr_t= ) 0xffffffffffffffffULL); break; + CASE_TEST(limit_ptrdiff_min); EXPECT_EQ(1, PTRDIFF_MIN, (ptrdiff_t= ) 0x8000000000000000LL); break; + CASE_TEST(limit_ptrdiff_max); EXPECT_EQ(1, PTRDIFF_MAX, (ptrdiff_t= ) 0x7fffffffffffffffLL); break; +#else + CASE_TEST(limit_intptr_min); EXPECT_EQ(1, INTPTR_MIN, (intptr_t)= 0x80000000); break; + CASE_TEST(limit_intptr_max); EXPECT_EQ(1, INTPTR_MAX, (intptr_t)= 0x7fffffff); break; + CASE_TEST(limit_uintptr_max); EXPECT_EQ(1, UINTPTR_MAX, (uintptr_t= ) 0xffffffffU); break; + CASE_TEST(limit_ptrdiff_min); EXPECT_EQ(1, PTRDIFF_MIN, (ptrdiff_t= ) 0x80000000); break; + CASE_TEST(limit_ptrdiff_max); EXPECT_EQ(1, PTRDIFF_MAX, (ptrdiff_t= ) 0x7fffffff); break; +#endif /* __WORDSIZE =3D=3D 64 */ + case __LINE__: return ret; /* must be last */ /* note: do not set any defaults so as to permit holes above */ } --=20 2.39.1