From patchwork Fri Mar 13 17:03:33 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Sherrill X-Patchwork-Id: 59802 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 61F884B3588C for ; Fri, 13 Mar 2026 17:04:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 61F884B3588C X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com [209.85.128.169]) by sourceware.org (Postfix) with ESMTPS id 26A5C4B7A1F7 for ; Fri, 13 Mar 2026 17:04:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26A5C4B7A1F7 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rtems.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 26A5C4B7A1F7 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.128.169 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773421452; cv=none; b=EbyWO0ewcQ6GaiqhkrQDt+Zm2PwkBW178wvvq+eZeDoIrYvNfhm4tjsDlC0ZzUWn02I3zZZ2sJm//kF7BKkS+I8lvGwcyN0fnYSRxWdluv4AlJ7MKbWkefRmbprQAXV39UloZPj63Kr3OdX53ilu6pmUej5HBX+MNuhQaGBxSlI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773421452; c=relaxed/simple; bh=3hX0YqtBZvdWw/fW9DwBssp7Mgj32AGt3BJEN3IubxA=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=qyxsc8JLXkwVorl5fLwubo/ZD7bXQGwyGW17i2o3CiOZSOvxPGs+2j5iDOWPn+To0YqoJRR3q1t7nASMorKiH4oaC6ElBsWOeCqh1olfGyY/8kr9Vkhn/K34iBwhZL60nyt91jAGO5JsKClL8nDnfo/brN2C/8cabKWXPBpqyLc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 26A5C4B7A1F7 Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-79853c0f5b9so21063567b3.0 for ; Fri, 13 Mar 2026 10:04:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773421451; x=1774026251; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=c7jNy8apqo2RC0eQBWJyxJXAx67zCLng75U935d9KBM=; b=aDqU4ZKixe8/CwC5OGoSfUImWw4DwMZZtSEe9xBhCuEIced20Xi8ZUqkE/sQ2eJiLp 7AshY5WyIjH836kudq8dkx1tXmTC6g9bvykhl4cx3tb8VAuGF6d4S1y4+4GM2T+4M7VQ WLnt+6AHAO3zReyQcUBOe7aL+23d/UaLQGU4iI3yD84K7AQGlPF6lqSMazeqkFv1VaZJ lN05SvbXIg//KHvUgvh4moepFIPU8ecpTcOeaMKho5FhmR/cLNIoA1qstUQwESVv2OzB e9vdG4u7wcSf6KQOcAJMwgbHmnUl39Afo7DB7Z48m6poKdW8a3QSipjLAq0pqyc9gW4b OhyA== X-Gm-Message-State: AOJu0YxViGjG73Qee83UpJgaHXueO1+JWYbOnWlzsj/7ak7i0FFJQQdL /GbMGJwrZ/ErRAG0PAjXT9axpf/mTETBF8P2MA39BTohE5i0Ni+9NliylrL7Cw== X-Gm-Gg: ATEYQzwVDNk3pS7Wpibx8JmLSrIeqYKL1+X2rCGJRVJ2iE46cn1NAT9kfSU4E9zTB17 y4dd6QsHAOrE/Tpub4JGmoaTULv7F01FNHhBAyPRuf3Hc34yCpguySbr44TONFbi/9CjqmVtDd5 WgtV/N9lB3qsDS4U7mkxI8IaxyuwfzI2G2ebCUpgnVH537WGxI/hpbKlZ2M9kun4RlBpwo/t3qI 73XsxbfjgTbZVfNWVCLl1xDAyJg/4DcHR5O6l4oilwtpFQbBDH+/W6Q6I11KP5EKML4AW8AfCmw 26/6ooBJTI8R2g6UNePsEwr/mvKs6d5xZ7AGtLCHbC65PTT9Z2F+PjbCgRiT4CKsRJXKHbxf+CN iliwLZApzlaaZ95cikhAzjwHrAiEQplqONj1GiwUuV9hKt7xRKTOoQTOlXL9nzrqS3s1rvfPEcL 2HSSAMTyO+gvUboGYsH2R4AMSBmdfvjS3uTUL8n77OnbK8UymEUQz9NzBgQKqSrQ== X-Received: by 2002:a05:690c:dc6:b0:798:6042:12b9 with SMTP id 00721157ae682-79a1c0fa9e5mr45840957b3.19.1773421450720; Fri, 13 Mar 2026 10:04:10 -0700 (PDT) Received: from gitlab.oarcorp.com (d27-96-189-151.evv.wideopenwest.com. [96.27.151.189]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79917f3d09fsm48536807b3.50.2026.03.13.10.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 10:04:09 -0700 (PDT) From: Joel Sherrill To: newlib@sourceware.org Cc: Joel Sherrill Subject: [PATCH v0 0/2] Add C23 stdbit.h functions Date: Fri, 13 Mar 2026 12:03:33 -0500 Message-ID: <20260313170335.2240233-1-joel@rtems.org> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 X-Spam-Status: No, score=-3028.7 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org This patch series is a draft and feedback is appreciated on what is required to run "autoreconf" to get build infrastructure that does not give an error. See https://sourceware.org/pipermail/newlib/2026/022334.html for details on the make error. Once this builds, I can foresee at least one more problem. The header file stdbit.h does not have C23 guards and neither do any of the implementation files. If these function files are to be compiled by an older compiler without C23 support, they should be disabled. At this point, I see adding a C23 guard to stdbit.c and stdbit/*.c files. But the first problem is getting it to build at all. Help appreciated. Joel Sherrill (2): newlib/libc: Add C23 stdbit.h from FreeBSD Makefile.inc, stdbit/Makefile.inc: Add stdbit newlib/libc/Makefile.inc | 1 + newlib/libc/include/stdbit.h | 124 ++++++++++++++++++ newlib/libc/stdbit/Makefile.inc | 15 +++ newlib/libc/stdbit/stdc_bit_ceil.3 | 81 ++++++++++++ newlib/libc/stdbit/stdc_bit_ceil.c | 71 ++++++++++ newlib/libc/stdbit/stdc_bit_floor.3 | 83 ++++++++++++ newlib/libc/stdbit/stdc_bit_floor.c | 53 ++++++++ newlib/libc/stdbit/stdc_bit_width.3 | 104 +++++++++++++++ newlib/libc/stdbit/stdc_bit_width.c | 53 ++++++++ newlib/libc/stdbit/stdc_count_ones.3 | 85 ++++++++++++ newlib/libc/stdbit/stdc_count_ones.c | 38 ++++++ newlib/libc/stdbit/stdc_count_zeros.3 | 84 ++++++++++++ newlib/libc/stdbit/stdc_count_zeros.c | 38 ++++++ newlib/libc/stdbit/stdc_first_leading_one.3 | 93 +++++++++++++ newlib/libc/stdbit/stdc_first_leading_one.c | 57 ++++++++ newlib/libc/stdbit/stdc_first_leading_zero.3 | 92 +++++++++++++ newlib/libc/stdbit/stdc_first_leading_zero.c | 57 ++++++++ newlib/libc/stdbit/stdc_first_trailing_one.3 | 110 ++++++++++++++++ newlib/libc/stdbit/stdc_first_trailing_one.c | 52 ++++++++ newlib/libc/stdbit/stdc_first_trailing_zero.3 | 93 +++++++++++++ newlib/libc/stdbit/stdc_first_trailing_zero.c | 53 ++++++++ newlib/libc/stdbit/stdc_has_single_bit.3 | 98 ++++++++++++++ newlib/libc/stdbit/stdc_has_single_bit.c | 38 ++++++ newlib/libc/stdbit/stdc_leading_ones.3 | 86 ++++++++++++ newlib/libc/stdbit/stdc_leading_ones.c | 60 +++++++++ newlib/libc/stdbit/stdc_leading_zeros.3 | 86 ++++++++++++ newlib/libc/stdbit/stdc_leading_zeros.c | 60 +++++++++ newlib/libc/stdbit/stdc_trailing_ones.3 | 86 ++++++++++++ newlib/libc/stdbit/stdc_trailing_ones.c | 56 ++++++++ newlib/libc/stdbit/stdc_trailing_zeros.3 | 87 ++++++++++++ newlib/libc/stdbit/stdc_trailing_zeros.c | 56 ++++++++ 31 files changed, 2150 insertions(+) create mode 100644 newlib/libc/include/stdbit.h create mode 100644 newlib/libc/stdbit/Makefile.inc create mode 100644 newlib/libc/stdbit/stdc_bit_ceil.3 create mode 100644 newlib/libc/stdbit/stdc_bit_ceil.c create mode 100644 newlib/libc/stdbit/stdc_bit_floor.3 create mode 100644 newlib/libc/stdbit/stdc_bit_floor.c create mode 100644 newlib/libc/stdbit/stdc_bit_width.3 create mode 100644 newlib/libc/stdbit/stdc_bit_width.c create mode 100644 newlib/libc/stdbit/stdc_count_ones.3 create mode 100644 newlib/libc/stdbit/stdc_count_ones.c create mode 100644 newlib/libc/stdbit/stdc_count_zeros.3 create mode 100644 newlib/libc/stdbit/stdc_count_zeros.c create mode 100644 newlib/libc/stdbit/stdc_first_leading_one.3 create mode 100644 newlib/libc/stdbit/stdc_first_leading_one.c create mode 100644 newlib/libc/stdbit/stdc_first_leading_zero.3 create mode 100644 newlib/libc/stdbit/stdc_first_leading_zero.c create mode 100644 newlib/libc/stdbit/stdc_first_trailing_one.3 create mode 100644 newlib/libc/stdbit/stdc_first_trailing_one.c create mode 100644 newlib/libc/stdbit/stdc_first_trailing_zero.3 create mode 100644 newlib/libc/stdbit/stdc_first_trailing_zero.c create mode 100644 newlib/libc/stdbit/stdc_has_single_bit.3 create mode 100644 newlib/libc/stdbit/stdc_has_single_bit.c create mode 100644 newlib/libc/stdbit/stdc_leading_ones.3 create mode 100644 newlib/libc/stdbit/stdc_leading_ones.c create mode 100644 newlib/libc/stdbit/stdc_leading_zeros.3 create mode 100644 newlib/libc/stdbit/stdc_leading_zeros.c create mode 100644 newlib/libc/stdbit/stdc_trailing_ones.3 create mode 100644 newlib/libc/stdbit/stdc_trailing_ones.c create mode 100644 newlib/libc/stdbit/stdc_trailing_zeros.3 create mode 100644 newlib/libc/stdbit/stdc_trailing_zeros.c