From nobody Sun Nov 30 19:22:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dKH3Q6phBz6Jgss for ; Sun, 30 Nov 2025 19:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dKH3Q4lhFz3gQ2 for ; Sun, 30 Nov 2025 19:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764530530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8TRAP3IbjW8VB6aUCbK85/Yz/88HG+vDtpsL8tNruDM=; b=PUP3vKl69loeYmrUkqcCL8u/cLqH/qLXwh9VxvihlmwqhplpM+4I8jGZpYviK36NsMHJf7 x+JuXQ6EV+92+2TmnT6rbO4ELsDhB0sYWNb+2GT6ncWgnkOyWv/J99c5gI5fGF4Yf0IMRG PtD7dsDAzbt95Jed0QEjsdXK+zYQF52+KW9741SDgEAmlhNAQ2Hm+vzWyZU65KHoCP+I4C Eie39opEYwx/Kj7W4ULfnbrbXihBIpm8b+lVz5La7xKPOJ5dSVpNuR9axpk6UTpWc1xnVa X401X/edmcv5eso/MxBVCO0DAtZO/npbeWkJsQMgEpm/v0K3kwvwDJAxuX5DPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764530530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8TRAP3IbjW8VB6aUCbK85/Yz/88HG+vDtpsL8tNruDM=; b=Aitki4odFUgwiBvWYtnbe8v7WSUHXT57H/6G0jLDMehqutuROYyvLfUusrCTbem/PxsWKG OUucSeDRR2m2rdHhXG8hrZ2KNawbq5Otw53+dP6A7q2oNSDniqRgZ1d3j1yAMbTt2oRG0P v4z/8ne8xOw79FyPUghUIScWtF1V5NnnMP1egScLiJwBsTPTClKIpXHF6CjwxVoQByh9+U ZzET1YXgD/kqiU5cJDvWauHRAAcTNGrwK5OE+Ecz+PNUbHm0NnhNMy7wwfx5lDXI4rshhn IDbwg+PvderY6oWzenx/xxvFoyGntx2Yg6srIcY5KEvxV1eg7ULshpphvN9Xpg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764530530; a=rsa-sha256; cv=none; b=jvN1ZEbdbZPQGHAjuegJfGrSgy/8JzuxMiuQZFaT7aJrIWF2EwA8hyw4Ig+XzrWu8sAZrF sXU6oHnmzBgujnNSho5DNu8B3zT7xbChFlEWcozP6yGdwa3mxTN+K8vSmh6w9MdrbeREmX eASEtzQ7ol14A30UvOgrbUYfvImu+xCVvLPv8n3OhG346gthq0v7py51CaododOLNrjwfW H5JcZNvL2EP4dPNIBvtLdV54lXaCefOAQZ0cGFsQ3qciXBy0gLMZz8B50dG3u8TRy7197Q ANtgz37YT9m9OenNds5kQsNhkhWc5F6Re8coRVIsdXqazsKUZVLbehIETTfsAg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dKH3Q4JdJznbd for ; Sun, 30 Nov 2025 19:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26202 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 30 Nov 2025 19:22:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Clausecker Subject: git: 4a1c7529c96f - main - libc/tests: add test for *_MAX, *_MIN, and *_WIDTH List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4a1c7529c96ff54657ef701fa89b92230ee6bac2 Auto-Submitted: auto-generated Date: Sun, 30 Nov 2025 19:22:10 +0000 Message-Id: <692c9962.26202.741eff79@gitrepo.freebsd.org> The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=4a1c7529c96ff54657ef701fa89b92230ee6bac2 commit 4a1c7529c96ff54657ef701fa89b92230ee6bac2 Author: Robert Clausecker AuthorDate: 2025-11-19 19:26:11 +0000 Commit: Robert Clausecker CommitDate: 2025-11-30 19:21:51 +0000 libc/tests: add test for *_MAX, *_MIN, and *_WIDTH This file checks the correctness of the various _MAX, _MIN, and _WIDTH macros defined for the libc types. It assumes that none of the types have padding bits. Approved by: markj (mentor) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D53831 --- lib/libc/tests/gen/Makefile | 1 + lib/libc/tests/gen/limits_test.c | 101 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/lib/libc/tests/gen/Makefile b/lib/libc/tests/gen/Makefile index 8c2151105209..054b1b426b3d 100644 --- a/lib/libc/tests/gen/Makefile +++ b/lib/libc/tests/gen/Makefile @@ -19,6 +19,7 @@ ATF_TESTS_C+= glob2_test .if ${COMPILER_FEATURES:Mblocks} ATF_TESTS_C+= glob_blocks_test .endif +ATF_TESTS_C+= limits_test ATF_TESTS_C+= makecontext_test ATF_TESTS_C+= opendir_test ATF_TESTS_C+= popen_test diff --git a/lib/libc/tests/gen/limits_test.c b/lib/libc/tests/gen/limits_test.c new file mode 100644 index 000000000000..b4e8bf3178f1 --- /dev/null +++ b/lib/libc/tests/gen/limits_test.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2025 Robert Clausecker + * + * SPDX-License-Identifier: FreeBSD-2-Clause + */ + +#include +#include +#include +#include +#include + +#include + +/* if this file builds, the unit tests have passed */ +#define CHECK_STYPE(type, TYPE) \ + static_assert(sizeof(type) * CHAR_BIT == TYPE ## _WIDTH, \ + __XSTRING(TYPE) "_WIDTH wrongly defined"); \ + static_assert((1ULL << (TYPE ## _WIDTH - 1)) - 1 == TYPE ## _MAX, \ + __XSTRING(TYPE) "_MAX wrongly defined"); \ + static_assert(TYPE ## _MIN == -TYPE ## _MAX - 1, \ + __XSTRING(TYPE) "_MIN wrongly defined") +#define CHECK_UTYPE(type, TYPE) \ + static_assert(sizeof(type) * CHAR_BIT == TYPE ## _WIDTH, \ + __XSTRING(TYPE) "_WIDTH wrongly defined"); \ + static_assert((type)~0ULL == TYPE ## _MAX, \ + __XSTRING(TYPE) "_MAX wrongly defined"); + +/* primitive types */ +#ifdef __CHAR_UNSIGNED__ +CHECK_UTYPE(char, CHAR); +#else +CHECK_STYPE(char, CHAR); +#endif + +CHECK_STYPE(signed char, SCHAR); +CHECK_STYPE(short, SHRT); +CHECK_STYPE(int, INT); +CHECK_STYPE(long, LONG); +CHECK_STYPE(long long, LLONG); + +CHECK_UTYPE(unsigned char, UCHAR); +CHECK_UTYPE(unsigned short, USHRT); +CHECK_UTYPE(unsigned int, UINT); +CHECK_UTYPE(unsigned long, ULONG); +CHECK_UTYPE(unsigned long long, ULLONG); + +/* fixed-width types */ +CHECK_STYPE(int8_t, INT8); +CHECK_STYPE(int16_t, INT16); +CHECK_STYPE(int32_t, INT32); +CHECK_STYPE(int64_t, INT64); + +CHECK_UTYPE(uint8_t, UINT8); +CHECK_UTYPE(uint16_t, UINT16); +CHECK_UTYPE(uint32_t, UINT32); +CHECK_UTYPE(uint64_t, UINT64); + +CHECK_STYPE(int_least8_t, INT_LEAST8); +CHECK_STYPE(int_least16_t, INT_LEAST16); +CHECK_STYPE(int_least32_t, INT_LEAST32); +CHECK_STYPE(int_least64_t, INT_LEAST64); + +CHECK_UTYPE(uint_least8_t, UINT_LEAST8); +CHECK_UTYPE(uint_least16_t, UINT_LEAST16); +CHECK_UTYPE(uint_least32_t, UINT_LEAST32); +CHECK_UTYPE(uint_least64_t, UINT_LEAST64); + +CHECK_STYPE(int_fast8_t, INT_FAST8); +CHECK_STYPE(int_fast16_t, INT_FAST16); +CHECK_STYPE(int_fast32_t, INT_FAST32); +CHECK_STYPE(int_fast64_t, INT_FAST64); + +CHECK_UTYPE(uint_fast8_t, UINT_FAST8); +CHECK_UTYPE(uint_fast16_t, UINT_FAST16); +CHECK_UTYPE(uint_fast32_t, UINT_FAST32); +CHECK_UTYPE(uint_fast64_t, UINT_FAST64); + +/* other types */ +#if WCHAR_MIN == 0 +CHECK_UTYPE(wchar_t, WCHAR); +#else +CHECK_STYPE(wchar_t, WCHAR); +#endif +CHECK_STYPE(intmax_t, INTMAX); +CHECK_STYPE(intptr_t, INTPTR); +CHECK_STYPE(ptrdiff_t, PTRDIFF); +CHECK_STYPE(wint_t, WINT); +CHECK_STYPE(sig_atomic_t, SIG_ATOMIC); + +CHECK_UTYPE(uintmax_t, UINTMAX); +CHECK_UTYPE(uintptr_t, UINTPTR); +CHECK_UTYPE(size_t, SIZE); + +/* dummy */ +ATF_TP_ADD_TCS(tp) +{ + (void)tp; + + return (atf_no_error()); +}