From patchwork Fri May 29 13:53:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raphael M Zinsly X-Patchwork-Id: 39382 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 B2EA53840C14; Fri, 29 May 2020 13:53:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B2EA53840C14 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1590760428; bh=9lYYdzjg1MBJzaHMaSXmOk9xLIMGVQnZBlnoH1RfD20=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=XkhbMa5dEA2GQUNxIscQB0irsBQk9KPOL2SLV9err4WcSU9LSrO1KLKsA3BvEJqCB RcAFZPMYctdJFK268TWydd3KTLgKcBTI1OKdF5mrH4U+N+PRaea4ZkAM9eEkjmPe9z S9lM43qa4uUYajwbmIsG0UhwhOM5kRRbSh/7SS3Q= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id AC45F386EC5C for ; Fri, 29 May 2020 13:53:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AC45F386EC5C Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 04TDXRsU170725 for ; Fri, 29 May 2020 09:53:44 -0400 Received: from ppma04wdc.us.ibm.com (1a.90.2fa9.ip4.static.sl-reverse.com [169.47.144.26]) by mx0a-001b2d01.pphosted.com with ESMTP id 31as1vtbd9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 29 May 2020 09:53:44 -0400 Received: from pps.filterd (ppma04wdc.us.ibm.com [127.0.0.1]) by ppma04wdc.us.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 04TDokRh016842 for ; Fri, 29 May 2020 13:53:43 GMT Received: from b03cxnp08028.gho.boulder.ibm.com (b03cxnp08028.gho.boulder.ibm.com [9.17.130.20]) by ppma04wdc.us.ibm.com with ESMTP id 316ufa3qs9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 29 May 2020 13:53:43 +0000 Received: from b03ledav004.gho.boulder.ibm.com (b03ledav004.gho.boulder.ibm.com [9.17.130.235]) by b03cxnp08028.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 04TDrfrg18350576 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 May 2020 13:53:41 GMT Received: from b03ledav004.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C723D78066; Fri, 29 May 2020 13:53:41 +0000 (GMT) Received: from b03ledav004.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 594D178063; Fri, 29 May 2020 13:53:41 +0000 (GMT) Received: from localhost (unknown [9.163.24.220]) by b03ledav004.gho.boulder.ibm.com (Postfix) with ESMTP; Fri, 29 May 2020 13:53:41 +0000 (GMT) To: libc-alpha@sourceware.org Subject: [PATCH] string: Add page tests for test-strncasecmp and test-strncpy Date: Fri, 29 May 2020 10:53:05 -0300 Message-Id: <20200529135305.466095-1-rzinsly@linux.ibm.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216, 18.0.687 definitions=2020-05-29_07:2020-05-28, 2020-05-29 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 cotscore=-2147483648 lowpriorityscore=0 suspectscore=1 mlxscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=826 adultscore=0 impostorscore=0 phishscore=0 spamscore=0 bulkscore=0 clxscore=1011 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005290107 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Raphael Moreira Zinsly via Libc-alpha From: Raphael M Zinsly Reply-To: Raphael Moreira Zinsly Cc: Raphael Moreira Zinsly Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Adds tests to check if strings placed at page bondaries are handled correctly by strncasecmp and strncpy similar to tests for strncmp and strnlen. This should catch regressions in the optmized functions. --- string/test-strncasecmp.c | 39 +++++++++++++++++++++++++++++++++++++++ string/test-strncpy.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/string/test-strncasecmp.c b/string/test-strncasecmp.c index 6a9c27beae..0399f37117 100644 --- a/string/test-strncasecmp.c +++ b/string/test-strncasecmp.c @@ -137,6 +137,44 @@ do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, do_one_test (impl, s1, s2, n, exp_result); } +static void +do_page_tests (void) +{ + size_t i, offset1, offset2; + char *s1, *s2, *s3; + int exp_result; + + s1 = (char *) buf1; + for (i = 0; i < page_size - 1; i++) + s1[i] = 23; + s1[i] = 0; + + s3 = strdup (s1); + offset2 = 2636; + + for (i = 0; i < 64; ++i) + { + offset1 = 3988 + i; + + if (offset1 >= page_size + || offset2 >= page_size) + return; + + s1 = (char *) buf1; + s2 = s3; + s1 += offset1; + s2 += offset2; + + exp_result= *s1; + + FOR_EACH_IMPL (impl, 0) + { + check_result (impl, s1, s2, page_size, -exp_result); + check_result (impl, s2, s1, page_size, exp_result); + } + } +} + static void do_random_tests (void) { @@ -334,6 +372,7 @@ test_locale (const char *locale) } do_random_tests (); + do_page_tests (); } int diff --git a/string/test-strncpy.c b/string/test-strncpy.c index c978753ad8..30c69dd34b 100644 --- a/string/test-strncpy.c +++ b/string/test-strncpy.c @@ -155,6 +155,42 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char) do_one_test (impl, s2, s1, len, n); } +static void +do_page_tests (void) +{ + size_t i, len, start_offset, offset; + CHAR *s1, *s2; + /* Calculate the null character offset. */ + size_t last_offset = (page_size / sizeof (CHAR)) - 1; + + s2 = (CHAR *) buf1; + s1 = (CHAR *) buf2; + MEMSET (s1, '\1', last_offset); + s1[last_offset] = '\0'; + + /* Place short strings ending at page boundary. */ + offset = last_offset; + for (i = 0; i < 128; i++) + { + offset--; + len = last_offset - offset; + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, (CHAR *) (s1 + offset), len, len); + } + + /* Place long strings ending at page boundary. */ + start_offset = (last_offset + 1) / 2; + for (i = 0; i < 64; ++i) + { + offset = start_offset + i; + if (offset >= (last_offset + 1)) + break; + len = last_offset - offset; + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, (CHAR *) (s1 + offset), page_size, len); + } +} + static void do_random_tests (void) { @@ -317,6 +353,7 @@ test_main (void) } do_random_tests (); + do_page_tests (); return ret; }