From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by sourceware.org (Postfix) with ESMTPS id C9A1E3858D28 for ; Tue, 8 Feb 2022 21:25:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C9A1E3858D28 Received: by mail-pj1-x1035.google.com with SMTP id d9-20020a17090a498900b001b8bb1d00e7so255036pjh.3 for ; Tue, 08 Feb 2022 13:25:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=O4lHGYDq0VHku4kf8SVG8uar+EWHj+Aw/HQxG8TfEiE=; b=MrRLCRJxSWzMWHR8DfGzoy6GkVAFEnlszocINEHwer20fg0RnDXgAG0FsvCyMS3/2x fCO4Ex8vCHnxNDid2CtSshmT3CBqKuAAhuM3SN1wszoQFqsddtlcJo+HyqneDyAIKpE3 DBhYnt/2OOnjxSb282Ib2pVK0k41Euv7J90in9nog/25a8s5z7o8JHFQMCi3x4Xdmh7f jujURKptBCjrtCMk8be2sQkRVqjK8KhXRfLcaYcD9pdg2ISc8an6QBXxuauc153FXhDx EwL2Sh94ZzGuI00AQZHSCpCU77hhQhTvU1u3GxDp46Qqxt/q0dWIj0Los7SH3uv+mYI2 U9rw== X-Gm-Message-State: AOAM531O97af5PW4ASPph1aVr4motjoF7ETV9C8nxbb1hC5Ws3KWlvsJ FwP3Uyg3EP2qZQM3uwD7VJFPbKEzQ4DERjwsV3OlBVDs X-Google-Smtp-Source: ABdhPJxX2OV9UMi2aCxMcwaFcCRwMC2AaYXQb8bjU8KqKPv5GIC6uXIqi1zjmJy2aiNFA3pxaAD17zKhz/2vyAEN6hM= X-Received: by 2002:a17:903:11cf:: with SMTP id q15mr6605609plh.22.1644355552766; Tue, 08 Feb 2022 13:25:52 -0800 (PST) MIME-Version: 1.0 References: <20220207201624.601598-1-goldstein.w.n@gmail.com> <20220207214136.3443442-1-goldstein.w.n@gmail.com> <87bkzhcvcz.fsf@linux.ibm.com> In-Reply-To: <87bkzhcvcz.fsf@linux.ibm.com> From: Noah Goldstein Date: Tue, 8 Feb 2022 15:25:41 -0600 Message-ID: Subject: Re: [PATCH v2] String: Ensure 'MIN_PAGE_SIZE' is multiple of 'getpagesize' To: Matheus Castanho Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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-List-Received-Date: Tue, 08 Feb 2022 21:25:56 -0000 On Tue, Feb 8, 2022 at 7:59 AM Matheus Castanho wrote: > > > string/test-strcmp and wcsmbs/test-wcscmp are passing with this new > patch, but string/test-strncmp and wcsmbs/test-wcsncmp are failing to > compile. With the fix below all tests pass. > > Tested on powerpc, powerpc64 and powerpc64le. > > Noah Goldstein via Libc-alpha writes: > > > When 'TEST_LEN' was defined as (4096 * 3) the allocation size Would > > not be a multiple of system page size if system page size > 4096. > > --- > > string/test-strcmp.c | 14 +++++++------- > > string/test-strncmp.c | 18 +++++++++--------- > > 2 files changed, 16 insertions(+), 16 deletions(-) > > > > diff --git a/string/test-strcmp.c b/string/test-strcmp.c > > index eacbdc8857..0abce769d0 100644 > > --- a/string/test-strcmp.c > > +++ b/string/test-strcmp.c > > @@ -16,7 +16,7 @@ > > License along with the GNU C Library; if not, see > > . */ > > > > -#define TEST_LEN (4096 * 3) > > +#define TEST_LEN (getpagesize () * 3) > > #define MIN_PAGE_SIZE (TEST_LEN + 2 * getpagesize ()) > > > > #define TEST_MAIN > > @@ -393,7 +393,7 @@ int > > test_main (void) > > { > > size_t i, j; > > - > > + const size_t test_len = MIN(TEST_LEN, 3 * 4096); > > test_init (); > > check(); > > check2 (); > > @@ -435,7 +435,7 @@ test_main (void) > > > > for (j = 0; j < 160; ++j) > > { > > - for (i = 0; i < TEST_LEN;) > > + for (i = 0; i < test_len;) > > { > > do_test (getpagesize () - j - 1, 0, i, 127, 0); > > do_test (getpagesize () - j - 1, 0, i, 127, 1); > > @@ -461,17 +461,17 @@ test_main (void) > > { > > i += 7; > > } > > - else if (i + 161 < TEST_LEN) > > + else if (i + 161 < test_len) > > { > > i += 31; > > i *= 17; > > i /= 16; > > - if (i + 161 > TEST_LEN) > > + if (i + 161 > test_len) > > { > > - i = TEST_LEN - 160; > > + i = test_len - 160; > > } > > } > > - else if (i + 32 < TEST_LEN) > > + else if (i + 32 < test_len) > > { > > i += 7; > > } > > diff --git a/string/test-strncmp.c b/string/test-strncmp.c > > index 1a3cee1792..1966bde3fe 100644 > > --- a/string/test-strncmp.c > > +++ b/string/test-strncmp.c > > @@ -16,7 +16,7 @@ > > License along with the GNU C Library; if not, see > > . */ > > > > -#define TEST_LEN (4096 * 3) > > +#define TEST_LEN (getpagesize () * 3) > > #define MIN_PAGE_SIZE (TEST_LEN + 2 * getpagesize ()) > > > > #define TEST_MAIN > > @@ -430,7 +430,7 @@ check_overflow (void) > > const size_t of_masks[] > > = { ULONG_MAX, LONG_MIN, ULONG_MAX - (ULONG_MAX >> 2), > > ((size_t)LONG_MAX) >> 1 }; > > - > > + const size_t test_len = MIN(test_len, 3 * 4096); > > Should be MIN(TEST_LEN, 3 * 4096) > > > for (of_idx = 0; of_idx < sizeof (of_masks) / sizeof (of_masks[0]); ++of_idx) > > { > > of_mask = of_masks[of_idx]; > > @@ -484,7 +484,7 @@ check_overflow (void) > > of_mask - j * 2, 0, 127, -1); > > } > > > > - for (i = 1; i < TEST_LEN; i += i) > > + for (i = 1; i < test_len; i += i) > > { > > do_test_n (j, 0, i - 1, of_mask, 0, 127, 0); > > do_test_n (j, 0, i - 1, of_mask, 0, 127, 1); > > @@ -540,7 +540,7 @@ int > > test_main (void) > > { > > size_t i, j; > > - > > + const size_t test_len = MIN(test_len, 3 * 4096); > > Should be MIN(TEST_LEN, 3 * 4096) Fixed in V3. Sorry about that. > > > test_init (); > > > > check1 (); > > @@ -608,7 +608,7 @@ test_main (void) > > > > for (j = 0; j < 160; ++j) > > { > > - for (i = 0; i < TEST_LEN;) > > + for (i = 0; i < test_len;) > > { > > do_test_n (getpagesize () - j - 1, 0, i, i + 1, 0, 127, 0); > > do_test_n (getpagesize () - j - 1, 0, i, i + 1, 0, 127, 1); > > @@ -677,17 +677,17 @@ test_main (void) > > { > > i += 7; > > } > > - else if (i + 161 < TEST_LEN) > > + else if (i + 161 < test_len) > > { > > i += 31; > > i *= 17; > > i /= 16; > > - if (i + 161 > TEST_LEN) > > + if (i + 161 > test_len) > > { > > - i = TEST_LEN - 160; > > + i = test_len - 160; > > } > > } > > - else if (i + 32 < TEST_LEN) > > + else if (i + 32 < test_len) > > { > > i += 7; > > } > > > -- > Matheus Castanho