From patchwork Fri Oct 8 00:46:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fangrui Song X-Patchwork-Id: 45981 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 024C53857C48 for ; Fri, 8 Oct 2021 00:47:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 024C53857C48 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633654032; bh=Y0oNUJgdFWByTw07BrRqktOJluehvEyRAx+KIj9prZ8=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=eXh32BwcVwVD9xZCNt2EFe/VXjsiQB/KG9EYp/hG+vsjQ1VHyRgN72ziJLXOgEzUC j+he26l4OnbyoQa/Ml6O93AEwBsExP/908x5hOpKsLIOnQML0Jd141pZtFuKEtsvXc CJqMeDe89a5imcLrJGJ9F8HxMbo9Crb0w48Mn05Y= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by sourceware.org (Postfix) with ESMTPS id 16123385840E for ; Fri, 8 Oct 2021 00:46:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 16123385840E Received: by mail-yb1-xb4a.google.com with SMTP id v70-20020a256149000000b005ba4d61ea0fso6375469ybb.22 for ; Thu, 07 Oct 2021 17:46:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=Y0oNUJgdFWByTw07BrRqktOJluehvEyRAx+KIj9prZ8=; b=3J6E1/qloqOrkJ0nhakkkcQjZ6Oszz1O8QUQQtN4r4NPwcdYSpRrRliEDn1CjNC5Wq y28Woox/e4MKjc2i7cdP50NoSKMM973Hy/mRw28JlMeS0BdAyd2odZ3gmYOHa0cRlb9D CI6Y29vYc07aK/RYSgv4tEpp77xzO0jSkRgCta+L6PECwuLmbOGtZPE6Je8sKgO6lP3p 0ldarHNZ8ZNMLiP/SK8XVy7xz2PNUwiEx54kyGCxELyw/9wOa6oMI5qFHW2BseInwRDb 2sfmB5IL72Z5wuiN6rN0WuE7541kefaOzKU8HD3LKSHm5I8P9BR5e1UdGFrAUuTAENRg 95MQ== X-Gm-Message-State: AOAM532bFWigeiEiZn2cS4/G223GbcxfY0+9Lsa/flH7LEvhg3NxSguz ViqgvmqVxV3izvY2W4rBVe8tX8IBUYC1WkemuazL2+ifx4cakr24AnVECSJjhoSyrxTOAtTN1SI b+prz4QHEkp/AvrsnT16pwPNmoxh1bN9TQGVcIu9nsF6rSka0MyqubteI3azqMcnAn/IZ X-Google-Smtp-Source: ABdhPJxjYlmjn6pvhCfSeUifm0eSlYmUofCwHe+JbZ06CAlD3oL7btdVmNX1E/JRXlg41Oaj3dFU0Ica8thk X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:a0d2:1841:5954:1f2e]) (user=maskray job=sendgmr) by 2002:a25:5545:: with SMTP id j66mr215624ybb.288.1633654009511; Thu, 07 Oct 2021 17:46:49 -0700 (PDT) Date: Thu, 7 Oct 2021 17:46:43 -0700 Message-Id: <20211008004643.532196-1-maskray@google.com> Mime-Version: 1.0 Subject: [PATCH v2] linux: Fix a non-constant expression in _Static_assert To: libc-alpha@sourceware.org, Adhemerval Zanella X-Spam-Status: No, score=-19.6 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Fangrui Song via Libc-alpha From: Fangrui Song Reply-To: Fangrui Song Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" According to C11 6.6p6, `const int` as an operand may not make up a constant expression. GCC -O0 errors: ../sysdeps/unix/sysv/linux/opendir.c:107:19: error: static_assert expression is not an integral constant expression _Static_assert (allocation_size >= sizeof (struct dirent64), -O2 -Wpedantic has a similar warning. See https://gcc.gnu.org/PR102502 for GCC's inconsistency. Use enum which is guaranteed to be a constant expression. This also makes the file compilable with Clang. Fixes: 4b962c9e859de23b461d61f860dbd3f21311e83a ("linux: Simplify opendir buffer allocation") --- Changes from v1: * Clarify commit message * Reference https://gcc.gnu.org/PR102502 --- sysdeps/unix/sysv/linux/opendir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/opendir.c b/sysdeps/unix/sysv/linux/opendir.c index 48f254d169..88640f44ee 100644 --- a/sysdeps/unix/sysv/linux/opendir.c +++ b/sysdeps/unix/sysv/linux/opendir.c @@ -103,7 +103,7 @@ __alloc_dir (int fd, bool close_fd, int flags, file system provides a bogus value. */ enum { max_buffer_size = 1048576 }; - const size_t allocation_size = 32768; + enum { allocation_size = 32768 }; _Static_assert (allocation_size >= sizeof (struct dirent64), "allocation_size < sizeof (struct dirent64)");