From nobody Wed Sep 10 03:09:08 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 C9A93C7EE2E for ; Tue, 28 Feb 2023 02:12:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229922AbjB1CMA (ORCPT ); Mon, 27 Feb 2023 21:12:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229909AbjB1CLy (ORCPT ); Mon, 27 Feb 2023 21:11:54 -0500 Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com [64.147.123.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3278529163 for ; Mon, 27 Feb 2023 18:11:53 -0800 (PST) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 60AA5320055E; Mon, 27 Feb 2023 21:11:52 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 27 Feb 2023 21:11:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1677550311; x= 1677636711; bh=spe221j0DFgvCEewZaLWqqkbO2tAWxrToJBpwLW1A7Y=; b=P bjdhNh7/3My0mcyHzkOyJmp+L/mXOydmcfdR37FTgrK1lPMb2pxa9806F+gvgbrj alJ8uPJG47Y3SExDmMmSRgnT9J/zKXmnk1Cz9L8BsPJlHpuFowPAkG5otmLE3awD 6wrZ76reMEv6jCbPX2izLd91l5ZzSkFcpiqwHPIKiJGxn5SzqqHgkL0h0lZ75XPW ks0+NwmEQ6UxgTVh1/9eaVJsDRjKyOjj6O1YBOCltddS1eVcvvfmLgGWATEVi0go OHV21IdVTMO4AmcOicZ8nRzpbY77EU7cZY2xu7nV6EostLI4BK7K81QhNKeAQiO5 qtu2miOu33mVmho9O2kSA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type: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=fm1; t=1677550311; x= 1677636711; bh=spe221j0DFgvCEewZaLWqqkbO2tAWxrToJBpwLW1A7Y=; b=M EjcTDxzM0UYpKI6yAzDkL9e34POs9DuegJE7DLyHQTBxKlHwn7sO3rY76PTshCzH hJNQG0nQQ6J566DUNYwvIfbx5hEvNhXOEetFvAP3iZotxVkNpAETsjABBXzFOOJG zIHMmbnNhQoe5MFInEfB9RtHw+RCBlnfQHuYq0slxYuIvzmi0m5bfYRBWkXjHidZ dnY7J1MIlShoAMRzldiI3I+q4jaBHO++L424a49/+H5iLkRWeZRSkhJMH0UhNFP3 Az2I4Ck6x92WLZeiAjdqRI3Kg2WYvCbyKdVA5fu+D2xKecM3ytlBGc/emJw5tWtb XBnWF/yHYEBBzitKokJ7w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeluddggeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepgghinhgtvghnthcuffgrghhonhhnvggruhcuoehvsehv uggrrdhioheqnecuggftrfgrthhtvghrnhepheehleelhedvteegtdeiteejleeigfelvd eigfetueegjeevteevudeivdekhfeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepvhesvhgurgdrihho X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 27 Feb 2023 21:11:51 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, thomas@t-8ch.de, Vincent Dagonneau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v7 1/4] tools/nolibc: add stdint.h Date: Mon, 27 Feb 2023 21:11:33 -0500 Message-Id: <20230228021136.13472-2-v@vda.io> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230228021136.13472-1-v@vda.io> References: <20230228021136.13472-1-v@vda.io> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Signed-off-by: Vincent Dagonneau Signed-off-by: Willy Tarreau Reviewed-by: Thomas Wei=C3=9Fschuh --- 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.2 From nobody Wed Sep 10 03:09:08 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 01798C64ED6 for ; Tue, 28 Feb 2023 02:12:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229909AbjB1CMD (ORCPT ); Mon, 27 Feb 2023 21:12:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229925AbjB1CL6 (ORCPT ); Mon, 27 Feb 2023 21:11:58 -0500 Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com [64.147.123.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3EC32943B for ; Mon, 27 Feb 2023 18:11:55 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 06A0A32004E7; Mon, 27 Feb 2023 21:11:54 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 27 Feb 2023 21:11:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1677550314; x= 1677636714; bh=pIQXNkttTrICd4hXmrTsC/gZHMU5+O3q8QxCTHataQc=; b=l aB7onMnp99YptB6kadodDKkc6VBWQRzLSW/9Vde0vuUyVilstgn8nHNRGR2cb40R ZTMTzyD0eSIrT+DZ3JU6gpTyb0ZdJ3ngh8lw4bSQikwP7KKLjy671RwERCRx7cll xHP1JvSJYLMd6Ynont8shh5FEXfDDA24xduKDa5ydeA3LghWdbPcF2G+ZBxyDTIO i7iGyhkJuFetU2yv93ke4rYHN66fA8qp7ASKAjLJ1mkPGtZ8JOBQVxAffyJ5jWRj 83oCE/SR1JlGCWc0c3uWzmW6nVM6S4B1PrBnaTqwMTLhlZCP2ywpOZE4DhZCNRjB ZnHm9VYh1EsLja0Cp+qPg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type: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=fm1; t=1677550314; x= 1677636714; bh=pIQXNkttTrICd4hXmrTsC/gZHMU5+O3q8QxCTHataQc=; b=i leBxMu45u4p2edJDLcoADZHz+GZ+XrbYB7OmiGJ47PqxOxSOj2k45N80hjn17UMV dAq9GVNU694ROltPozoi0SmS7j9m+nt2dYrvpwgzYER3Ui/ACs8sVff/N5PHWaJO GBohsaOBuHfwhPVDc3BCeUDGcI8wFBqBHo0w1qDuNL5Sm/O/2lq6EanlChY7JONQ 4LFxAXfgUhPnQp0IvnAewI4phR59oXAHp9Euqf3c8WJT9uZ6UeZgs4fBruY52zVX /pCqzt1epzkhxBnRKWjmtwFkQEJaXaen80siuMOCk3+6w5KD7VMRR0rx1NXQbRCK f0Uq9rMnqoCNIUVdYzItQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeluddggedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepgghinhgtvghnthcuffgrghhonhhnvggruhcuoehvsehv uggrrdhioheqnecuggftrfgrthhtvghrnhepgfekgfejjefftdeutdffgeeuleeuvdekve eugfeviedvjeehfeejhfefuefhheetnecuffhomhgrihhnpehophgvnhhgrhhouhhprdho rhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvh esvhgurgdrihho X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 27 Feb 2023 21:11:54 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, thomas@t-8ch.de, Vincent Dagonneau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v7 2/4] tools/nolibc: add integer types and integer limit macros Date: Mon, 27 Feb 2023 21:11:34 -0500 Message-Id: <20230228021136.13472-3-v@vda.io> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230228021136.13472-1-v@vda.io> References: <20230228021136.13472-1-v@vda.io> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. We rely on the compiler-defined __LONG_MAX__ to get the right limits for size_t, intptr_t, uintptr_t and ptrdiff_t. This compiler constant seem to have been defined at least since GCC 4.1.2 and clang 3.0.0 on x86_64. It is also defined on ARM (32&64), mips and RISC-V. Note that the maximum size of size_t is implementation-defined (>65535), in this case I chose to go with unsigned long on all platforms since unsigned long =3D=3D unsigned int on all the platforms we care about. Note that the kernel uses either unsigned int or unsigned long in linux/include/uapi/asm-generic/posix_types.h. These should be equivalent for the plaforms we are targeting. Also note that the 'fast*' flavor of the types have been chosen to be always 1 byte for '*fast8*' and always long (a.k.a. intptr_t/uintptr_t) for the other variants. I have never seen the 'fast*' types in use in the wild but that seems to be what glibc does. Signed-off-by: Vincent Dagonneau Signed-off-by: Willy Tarreau Reviewed-by: Thomas Wei=C3=9Fschuh --- tools/include/nolibc/stdint.h | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tools/include/nolibc/stdint.h b/tools/include/nolibc/stdint.h index 4ba264031df9..c1ce4f5e0603 100644 --- a/tools/include/nolibc/stdint.h +++ b/tools/include/nolibc/stdint.h @@ -21,4 +21,79 @@ 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 int8_t int_fast8_t; +typedef uint8_t uint_fast8_t; +typedef ssize_t int_fast16_t; +typedef size_t uint_fast16_t; +typedef ssize_t int_fast32_t; +typedef size_t uint_fast32_t; +typedef ssize_t int_fast64_t; +typedef size_t uint_fast64_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 ((size_t)(__LONG_MAX__) * 2 + 1) +#define INTPTR_MIN (-__LONG_MAX__ - 1) +#define INTPTR_MAX __LONG_MAX__ +#define PTRDIFF_MIN INTPTR_MIN +#define PTRDIFF_MAX INTPTR_MAX +#define UINTPTR_MAX SIZE_MAX + +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST16_MIN INTPTR_MIN +#define INT_FAST32_MIN INTPTR_MIN +#define INT_FAST64_MIN INTPTR_MIN + +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MAX INTPTR_MAX +#define INT_FAST32_MAX INTPTR_MAX +#define INT_FAST64_MAX INTPTR_MAX + +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX SIZE_MAX +#define UINT_FAST32_MAX SIZE_MAX +#define UINT_FAST64_MAX SIZE_MAX + #endif /* _NOLIBC_STDINT_H */ --=20 2.39.2 From nobody Wed Sep 10 03:09:08 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 84ADAC64ED6 for ; Tue, 28 Feb 2023 02:12:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229938AbjB1CMI (ORCPT ); Mon, 27 Feb 2023 21:12:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229677AbjB1CME (ORCPT ); Mon, 27 Feb 2023 21:12:04 -0500 Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com [64.147.123.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 617E628D3A for ; Mon, 27 Feb 2023 18:11:58 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 741C63200938; Mon, 27 Feb 2023 21:11:57 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 27 Feb 2023 21:11:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1677550317; x= 1677636717; bh=iJA+tbnJpHOZodErxoprnz7vNzQ+DFpW5yiTQIbvqic=; b=w hMkyI34yDIvvb8vrnea0YnN48VxxDswiTUiVE7SI0Nc0qnnnDHuZD+VVSc+lnEn/ B9agUCgk8E6ZoOGM0y4icNwexwOf0NrAU9Ug6bCHrsK4lhlgB+pr8Gh5DQ59gNiu CM0Qexefi2ltm8gtu8MXqEmkvBldd3nFjU5FM2JeI6jOrpCQdA70gqjUWDQFhCUg 0N6v7Ge5Q02sR5eOBGWXjlJgh7ofKgmnDe9co9VH3yH1MXRfpy9GG5OPCifWUBoE 7fPF67bsjlWwDpL+cU1BSSXwFKrCoSNGY4xnuf4bGRDTrmTC92LKvHS8QnxJNtaD BQ2I2qGl9rieXoOA+G/oQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type: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=fm1; t=1677550317; x= 1677636717; bh=iJA+tbnJpHOZodErxoprnz7vNzQ+DFpW5yiTQIbvqic=; b=S /N7qbLp2tqCV6IYDBXnWJpJS8StzzxS84bE2SShiTEPH4r2O7zhGbcGfL4nJ9DpR 58IJeXf4LBqSNF6Zoom4amaFWqfD1dVpE46t0+VGkfZ97kaRIvp1OLxhlmus/R25 0M1Z0JPpUQAn5/IZjH9Nbv8tYFtrqNsAR8dUCCJHjtP52HuXCguXguF9RpxVW+Q0 7EA4XUZ3GLR10GsvbhqbvhDGD40WWLzmqGVlgAYIcYBvDs9BwkmO7wW9GAYZLLXr ENqHVJW7A9P1l0d6n+nexzsNFBm5pJdZAWJkV4hcBSmBocOnGAowAMJxeDx4/URF Xg3APL3/N9TQTPUfmPFDg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeluddggedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepgghinhgtvghnthcuffgrghhonhhnvggruhcuoehvsehv uggrrdhioheqnecuggftrfgrthhtvghrnhepheehleelhedvteegtdeiteejleeigfelvd eigfetueegjeevteevudeivdekhfeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepvhesvhgurgdrihho X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 27 Feb 2023 21:11:56 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, thomas@t-8ch.de, Vincent Dagonneau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v7 3/4] tools/nolibc: enlarge column width of tests Date: Mon, 27 Feb 2023 21:11:35 -0500 Message-Id: <20230228021136.13472-4-v@vda.io> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230228021136.13472-1-v@vda.io> References: <20230228021136.13472-1-v@vda.io> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit enlarges the column width from 40 to 64 characters to make room for longer tests Signed-off-by: Vincent Dagonneau Signed-off-by: Willy Tarreau Reviewed-by: Thomas Wei=C3=9Fschuh --- 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 c4a0c915139c..882140508d56 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.2 From nobody Wed Sep 10 03:09:08 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 29B31C7EE23 for ; Tue, 28 Feb 2023 02:12:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229496AbjB1CMT (ORCPT ); Mon, 27 Feb 2023 21:12:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229481AbjB1CMO (ORCPT ); Mon, 27 Feb 2023 21:12:14 -0500 Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com [64.147.123.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2095727D45 for ; Mon, 27 Feb 2023 18:12:01 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id E0F78320093B; Mon, 27 Feb 2023 21:11:59 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 27 Feb 2023 21:12:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vda.io; h=cc:cc :content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1677550319; x= 1677636719; bh=GYtUxciaU9sV9a1QJKNZ2Oh7vUNWRfaTFFvoncsT4OA=; b=m GzgvHp1t1Fya/yu8BCp8AV3uGB5IgNurWlAbkNHBTK7NBoYnCW+v+t5roUGDsvKj fiDfH/1raM1kWfxc52SgX+uLIVwwLFq/2ti8y0XpQmVpbbN2HgKr88GgJ1fISXVI BfyBLHDCHB2TOeeoWRWKo0xvmA3qoVe6JXLKVX2UT7oGvm/bjES/W1XvOso3Klvo +llXQ0uABC/7pghf5XPU1PzPoy1hYMq2ySq0uc5fUK07aDHn7VVNytksWeSRMFm2 dxHB6gTy8dWwb9ukicCBfFyr3HyaZn9en8FJ/q5hOS16o+CPnBkWq9ioVWDGfhLG gPflHQlfPe2RUcPQkrQAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type: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=fm1; t=1677550319; x= 1677636719; bh=GYtUxciaU9sV9a1QJKNZ2Oh7vUNWRfaTFFvoncsT4OA=; b=A LBJkQEZx9H3o45Wz7eJOIsvAsWyfF4tMsn2CMExVeJxI1tkzXcSIcKnLezpdWjuq mdbxoLNei320sa7N1WXdV+LkkzHoEfTl9CHSGNDC0V+k/Z5N46GUNofocLegkslt 2vVKANlI2dtk4iHjdvu/raDLwwxm9lLU6+X9HGv5UMRoSPn+cggtQHYrfvJFVqOX 5OqUZOElrr83Oct7C2TCFPA875pSLbhHhAdLsu1+u1ld4lbNeLb8X+ZrjjRqxwh+ nJT1Xw4/QC/LTNKr2/qECjVNpZW93vcwgsbyh+/1x702+4A6bKYGfCOOBMYg6x8f Ou4s/O7K3OTHbSKpo3j9Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeluddggedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepgghinhgtvghnthcuffgrghhonhhnvggruhcuoehvsehv uggrrdhioheqnecuggftrfgrthhtvghrnhepheehleelhedvteegtdeiteejleeigfelvd eigfetueegjeevteevudeivdekhfeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepvhesvhgurgdrihho X-ME-Proxy: Feedback-ID: ic7094478:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 27 Feb 2023 21:11:58 -0500 (EST) From: Vincent Dagonneau To: linux-kernel@vger.kernel.org Cc: w@1wt.eu, thomas@t-8ch.de, Vincent Dagonneau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v7 4/4] tools/nolibc: add tests for the integer limits in stdint.h Date: Mon, 27 Feb 2023 21:11:36 -0500 Message-Id: <20230228021136.13472-5-v@vda.io> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230228021136.13472-1-v@vda.io> References: <20230228021136.13472-1-v@vda.io> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit adds tests for the limits added in a previous commit. The limits are defined in decimal in stdint.h and as hexadecimal in the tests (e.g. 0x7f =3D 127 or 0x80 =3D -128). Hopefully it catches some of the most egregious mistakes. As we rely on the compiler to provide __SIZEOF_LONG__, we also test whether it is defined. Signed-off-by: Vincent Dagonneau Signed-off-by: Willy Tarreau Reviewed-by: Thomas Wei=C3=9Fschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 882140508d56..772f88bda0f1 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -602,6 +602,59 @@ int run_stdlib(int min, int max) CASE_TEST(memcmp_e0_20); EXPECT_GT(1, memcmp("aaa\xe0", "aaa\x20",= 4), 0); break; CASE_TEST(memcmp_80_e0); EXPECT_LT(1, memcmp("aaa\x80", "aaa\xe0",= 4), 0); break; CASE_TEST(memcmp_e0_80); EXPECT_GT(1, memcmp("aaa\xe0", "aaa\x80",= 4), 0); break; + 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, (uint= 8_t) 0xff); break; + CASE_TEST(limit_int16_max); EXPECT_EQ(1, INT16_MAX, (int1= 6_t) 0x7fff); break; + CASE_TEST(limit_int16_min); EXPECT_EQ(1, INT16_MIN, (int1= 6_t) 0x8000); break; + CASE_TEST(limit_uint16_max); EXPECT_EQ(1, UINT16_MAX, (uint= 16_t) 0xffff); break; + CASE_TEST(limit_int32_max); EXPECT_EQ(1, INT32_MAX, (int3= 2_t) 0x7fffffff); break; + CASE_TEST(limit_int32_min); EXPECT_EQ(1, INT32_MIN, (int3= 2_t) 0x80000000); break; + CASE_TEST(limit_uint32_max); EXPECT_EQ(1, UINT32_MAX, (uint= 32_t) 0xffffffff); break; + CASE_TEST(limit_int64_max); EXPECT_EQ(1, INT64_MAX, (int6= 4_t) 0x7fffffffffffffff); break; + CASE_TEST(limit_int64_min); EXPECT_EQ(1, INT64_MIN, (int6= 4_t) 0x8000000000000000); break; + CASE_TEST(limit_uint64_max); EXPECT_EQ(1, UINT64_MAX, (uint= 64_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_min); EXPECT_EQ(1, INT_LEAST64_MIN, (int_= least64_t) 0x8000000000000000LL); break; + CASE_TEST(limit_int_least64_max); EXPECT_EQ(1, INT_LEAST64_MAX, (int_= least64_t) 0x7fffffffffffffffLL); break; + CASE_TEST(limit_uint_least64_max); EXPECT_EQ(1, UINT_LEAST64_MAX, (uint= _least64_t) 0xffffffffffffffffULL); break; + CASE_TEST(limit_int_fast8_max); EXPECT_EQ(1, INT_FAST8_MAX, (int_= fast8_t) 0x7f); break; + CASE_TEST(limit_int_fast8_min); EXPECT_EQ(1, INT_FAST8_MIN, (int_= fast8_t) 0x80); break; + CASE_TEST(limit_uint_fast8_max); EXPECT_EQ(1, UINT_FAST8_MAX, (uint= _fast8_t) 0xff); break; + CASE_TEST(limit_int_fast16_min); EXPECT_EQ(1, INT_FAST16_MIN, (int_= fast16_t) INTPTR_MIN); break; + CASE_TEST(limit_int_fast16_max); EXPECT_EQ(1, INT_FAST16_MAX, (int_= fast16_t) INTPTR_MAX); break; + CASE_TEST(limit_uint_fast16_max); EXPECT_EQ(1, UINT_FAST16_MAX, (uint= _fast16_t) UINTPTR_MAX); break; + CASE_TEST(limit_int_fast32_min); EXPECT_EQ(1, INT_FAST32_MIN, (int_= fast32_t) INTPTR_MIN); break; + CASE_TEST(limit_int_fast32_max); EXPECT_EQ(1, INT_FAST32_MAX, (int_= fast32_t) INTPTR_MAX); break; + CASE_TEST(limit_uint_fast32_max); EXPECT_EQ(1, UINT_FAST32_MAX, (uint= _fast32_t) UINTPTR_MAX); break; + CASE_TEST(limit_int_fast64_min); EXPECT_EQ(1, INT_FAST64_MIN, (int_= fast64_t) INTPTR_MIN); break; + CASE_TEST(limit_int_fast64_max); EXPECT_EQ(1, INT_FAST64_MAX, (int_= fast64_t) INTPTR_MAX); break; + CASE_TEST(limit_uint_fast64_max); EXPECT_EQ(1, UINT_FAST64_MAX, (uint= _fast64_t) UINTPTR_MAX); break; +#if __SIZEOF_LONG__ =3D=3D 8 + CASE_TEST(limit_intptr_min); EXPECT_EQ(1, INTPTR_MIN, (intp= tr_t) 0x8000000000000000LL); break; + CASE_TEST(limit_intptr_max); EXPECT_EQ(1, INTPTR_MAX, (intp= tr_t) 0x7fffffffffffffffLL); break; + CASE_TEST(limit_uintptr_max); EXPECT_EQ(1, UINTPTR_MAX, (uint= ptr_t) 0xffffffffffffffffULL); break; + CASE_TEST(limit_ptrdiff_min); EXPECT_EQ(1, PTRDIFF_MIN, (ptrd= iff_t) 0x8000000000000000LL); break; + CASE_TEST(limit_ptrdiff_max); EXPECT_EQ(1, PTRDIFF_MAX, (ptrd= iff_t) 0x7fffffffffffffffLL); break; + CASE_TEST(limit_size_max); EXPECT_EQ(1, SIZE_MAX, (size= _t) 0xffffffffffffffffULL); break; +#elif __SIZEOF_LONG__ =3D=3D 4 + CASE_TEST(limit_intptr_min); EXPECT_EQ(1, INTPTR_MIN, (intp= tr_t) 0x80000000); break; + CASE_TEST(limit_intptr_max); EXPECT_EQ(1, INTPTR_MAX, (intp= tr_t) 0x7fffffff); break; + CASE_TEST(limit_uintptr_max); EXPECT_EQ(1, UINTPTR_MAX, (uint= ptr_t) 0xffffffffU); break; + CASE_TEST(limit_ptrdiff_min); EXPECT_EQ(1, PTRDIFF_MIN, (ptrd= iff_t) 0x80000000); break; + CASE_TEST(limit_ptrdiff_max); EXPECT_EQ(1, PTRDIFF_MAX, (ptrd= iff_t) 0x7fffffff); break; + CASE_TEST(limit_size_max); EXPECT_EQ(1, SIZE_MAX, (size= _t) 0xffffffffU); break; +#else +# warning "__SIZEOF_LONG__ is undefined" +#endif /* __SIZEOF_LONG__ */ case __LINE__: return ret; /* must be last */ /* note: do not set any defaults so as to permit holes above */ --=20 2.39.2