From patchwork Tue Apr 11 19:05:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Simmons-Talbott X-Patchwork-Id: 1767824 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=qzIddp0X; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PwwKX1c7sz1yZZ for ; Wed, 12 Apr 2023 05:05:52 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 250AD385735C for ; Tue, 11 Apr 2023 19:05:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 250AD385735C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1681239950; bh=jgilcCbCl+XdzV5Ey4xrRVJ3KgN0O+5U6u0PYjsdDdM=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=qzIddp0XUG8znMUNmsXDBNHiEbZ0Le8+iC56r/U7gj2y/KxnXwakpu/4rCZ7Mhdra xkwH3QZYDen/EvGetrTJej8sebzjOO5TJbvZysNieoSEaQ3YeW+h7xWM1hz4yGobdS FrBsrtBel6YUegZtNDs0UQGjys8yC3Q/7P1akdGk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 767913858D32 for ; Tue, 11 Apr 2023 19:05:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 767913858D32 Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-257-wNNpHhUOP3uh_SsHewpmrQ-1; Tue, 11 Apr 2023 15:05:32 -0400 X-MC-Unique: wNNpHhUOP3uh_SsHewpmrQ-1 Received: by mail-qt1-f197.google.com with SMTP id y5-20020a05622a004500b003e3979be6abso6979525qtw.12 for ; Tue, 11 Apr 2023 12:05:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681239932; x=1683831932; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jgilcCbCl+XdzV5Ey4xrRVJ3KgN0O+5U6u0PYjsdDdM=; b=GJojmm/fgIze46ngqAIOhCzp1atym2h+KhRNKdJrJ8m93K96Qa1sNaCaeYzzi5x03B bMfSO5z4z6gguR1cXrswEwyCmdPXejP+6Z97WhfIL5qKBYoK3PYCiZ7JN1PwlbznfFio iC4mx+ENTgnHKovuKrjjkBXPtJelzkELjdmBaoMlXtHxi0pdO+0l55Z1uebc/4oKvXVn epg6oAyRiROMr+LgK7mjyhOzd0vue77VZUBwhlDYJH3HRfsFjpLwgzTT8YO/7IfMU634 eWaSAowBt6lYi15gu5owAPD/pYpxRUkcyI5tK4feUQiIkdQ18Uh3Tj1LrtgJ1oKDyxUG IMzQ== X-Gm-Message-State: AAQBX9d6KsJR0UucGRybMqGOfw7mQ4++MOUjww2PYwG/eyy6tyPyoIJf dKMz8loPU/bb6KhP0bjTkX7drOFHJfWhhj3sFwQOBTph0c6nAYmwxdcOkb5j3E07PBSRb7aDUjC ILSmoYyDMIKdOhs1aHh7YmldJ+RoDgmO/SZx5LuW1K328Kh+pD17WfZ36HDvoEY0E4FSkJhxeaG WpiXB5 X-Received: by 2002:a05:622a:1b8c:b0:3bf:c665:20fe with SMTP id bp12-20020a05622a1b8c00b003bfc66520femr23143891qtb.22.1681239931912; Tue, 11 Apr 2023 12:05:31 -0700 (PDT) X-Google-Smtp-Source: AKy350b0Y3SKpKPKdAZhiAaMMGbl93p7Cfipgr0hOJsjlTnOvjUMZADxDVB7CsP3x7REecLNW7MRVA== X-Received: by 2002:a05:622a:1b8c:b0:3bf:c665:20fe with SMTP id bp12-20020a05622a1b8c00b003bfc66520femr23143850qtb.22.1681239931565; Tue, 11 Apr 2023 12:05:31 -0700 (PDT) Received: from oak.redhat.com (c-71-206-142-238.hsd1.va.comcast.net. [71.206.142.238]) by smtp.gmail.com with ESMTPSA id x1-20020ac85381000000b003e014845d9esm3760434qtp.74.2023.04.11.12.05.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 12:05:31 -0700 (PDT) To: libc-alpha@sourceware.org Cc: Joe Simmons-Talbott , Adhemerval Zanella Subject: [PATCH v5 1/4] string: Allow use of test-string.h for non-ifunc implementations. Date: Tue, 11 Apr 2023 15:05:23 -0400 Message-Id: <20230411190526.2469122-2-josimmon@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230411190526.2469122-1-josimmon@redhat.com> References: <20230329150500.2886135-1-josimmon@redhat.com> <20230411190526.2469122-1-josimmon@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Joe Simmons-Talbott via Libc-alpha From: Joe Simmons-Talbott Reply-To: Joe Simmons-Talbott Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org Sender: "Libc-alpha" Mark two variables as unused to silence warning when using test-string.h for non-ifunc implementations. Reviewed-by: Adhemerval Zanella --- string/test-string.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/string/test-string.h b/string/test-string.h index 41de973479..8bcb8afd0a 100644 --- a/string/test-string.h +++ b/string/test-string.h @@ -130,8 +130,8 @@ cmdline_process_function (int c) /* Increase size of FUNC_LIST if assert is triggered at run-time. */ static struct libc_ifunc_impl func_list[32]; static int func_count; -static int impl_count = -1; -static impl_t *impl_array; +static int impl_count __attribute__ ((unused)) = -1; +static impl_t *impl_array __attribute__ ((unused)); # define FOR_EACH_IMPL(impl, notall) \ impl_t *impl; \ From patchwork Tue Apr 11 19:05:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Simmons-Talbott X-Patchwork-Id: 1767825 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=EsuK5ZnI; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PwwKc15W5z1yZY for ; Wed, 12 Apr 2023 05:05:56 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 18D82385701D for ; Tue, 11 Apr 2023 19:05:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 18D82385701D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1681239954; bh=LMjiyTJRv+KKEOA17rYkDhOMjBPX+FdeWP000Noswec=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=EsuK5ZnICdUd3fP6C8715TJtO1CF2GLUvnSnn5KkaAYUqEmbwpDX0ryWnK0pLBZEs cmvlyoNPkH3rI5NdUXiTjU56KLpdSmp9uW6u/chJtRQZu9SXfolWAtB/T0fOIcxyRJ zUNMA5fbiuVZKRKTeChW239UppisIWHiAtYYbclk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id DBD583858D33 for ; Tue, 11 Apr 2023 19:05:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DBD583858D33 Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-646-qc90vk_7P-iQaJF5s1GdiA-1; Tue, 11 Apr 2023 15:05:33 -0400 X-MC-Unique: qc90vk_7P-iQaJF5s1GdiA-1 Received: by mail-qv1-f70.google.com with SMTP id e4-20020a0cd644000000b005eaf0a051d4so3715475qvj.12 for ; Tue, 11 Apr 2023 12:05:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681239933; x=1683831933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LMjiyTJRv+KKEOA17rYkDhOMjBPX+FdeWP000Noswec=; b=NOH83CYuRjCABhKWBgi0lZO2uZdYI+uggKhmED/XtLf3McVK9wyLhYxPkVT+Net0dU kl1hoEXfqxAmM1MU7lV1HVwcUWlvxvLlQ8ZQoXxUresFEnNNCVhiWEIJ61mcC+a7D/ro UJmsAlBorbNCKk8tqP80F4WL0IrzJTcb2G0fMBMVOIJ6S2cE0lezHEGd9bLJWxa6MUFJ 0aNMqj01vhkEcTZ7qfhlTfk399c43BEMBNBvIqDYnZz7hZSkkb7aC9VTNomrXooedesp +HLn+evh3hSjShpffCO/HqRFRLOhAVe4Za0P8DeTkFwjkoLfn9imF8xdXJkiQIHpZ8uk JgTg== X-Gm-Message-State: AAQBX9eZdyodvBa4BPHx2OfuPfK8RBaRLLnEI7Obu8HBEPqXg1Hr1BoU pb9+zdSsSLnsvILShufbKOpB9YZ07oAznZxu96LHT36QN+yW9WuGCVvvN7B4IjcID2EaKaB4ovO s3Trtf/2Iy5+ZGoLBbUdyFJ3G9nhxjV9h4Gxe+WN456WUx8PR9Q6dWghEnbHcU0kcDnFtjU/ibh fGo9pV X-Received: by 2002:ac8:5993:0:b0:3e6:938a:2aef with SMTP id e19-20020ac85993000000b003e6938a2aefmr22422262qte.9.1681239932807; Tue, 11 Apr 2023 12:05:32 -0700 (PDT) X-Google-Smtp-Source: AKy350YHpxc669g9dJCibS9fzNhQPB2dtc3aB/oHg6UhIfFGphnKmVkTVrMwBqK8OymNBh4Icp3rWw== X-Received: by 2002:ac8:5993:0:b0:3e6:938a:2aef with SMTP id e19-20020ac85993000000b003e6938a2aefmr22422226qte.9.1681239932459; Tue, 11 Apr 2023 12:05:32 -0700 (PDT) Received: from oak.redhat.com (c-71-206-142-238.hsd1.va.comcast.net. [71.206.142.238]) by smtp.gmail.com with ESMTPSA id x1-20020ac85381000000b003e014845d9esm3760434qtp.74.2023.04.11.12.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 12:05:32 -0700 (PDT) To: libc-alpha@sourceware.org Cc: Joe Simmons-Talbott , Adhemerval Zanella Subject: [PATCH v5 2/4] string: Add tests for strdup (BZ #30266) Date: Tue, 11 Apr 2023 15:05:24 -0400 Message-Id: <20230411190526.2469122-3-josimmon@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230411190526.2469122-1-josimmon@redhat.com> References: <20230329150500.2886135-1-josimmon@redhat.com> <20230411190526.2469122-1-josimmon@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Joe Simmons-Talbott via Libc-alpha From: Joe Simmons-Talbott Reply-To: Joe Simmons-Talbott Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org Sender: "Libc-alpha" Copy strcpy tests for strdup. Covers some basic testcases with random strings. Add a zero-length string testcase. Reviewed-by: Adhemerval Zanella --- string/Makefile | 1 + string/test-strdup.c | 203 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 string/test-strdup.c diff --git a/string/Makefile b/string/Makefile index c84b49aaa5..472e318aea 100644 --- a/string/Makefile +++ b/string/Makefile @@ -157,6 +157,7 @@ tests := \ test-strcmp \ test-strcpy \ test-strcspn \ + test-strdup \ test-strlen \ test-strncasecmp \ test-strncat \ diff --git a/string/test-strdup.c b/string/test-strdup.c new file mode 100644 index 0000000000..8a1a267782 --- /dev/null +++ b/string/test-strdup.c @@ -0,0 +1,203 @@ +/* Test and measure strdup functions. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +#ifdef WIDE +# include +# define CHAR wchar_t +# define UCHAR wchar_t +# define sfmt "ls" +# define BIG_CHAR WCHAR_MAX +# define SMALL_CHAR 1273 +# define STRCMP wcscmp +# define MEMCMP wmemcmp +# define MEMSET wmemset +# define TCS TEST_COMPARE_STRING_WIDE +#else +# define CHAR char +# define UCHAR unsigned char +# define sfmt "s" +# define BIG_CHAR CHAR_MAX +# define SMALL_CHAR 127 +# define STRCMP strcmp +# define MEMCMP memcmp +# define MEMSET memset +# define TCS TEST_COMPARE_STRING +#endif + +#ifndef STRDUP_RESULT +# define STRDUP_RESULT(dst, len) dst +# define TEST_MAIN +# ifndef WIDE +# define TEST_NAME "strdup" +# else +# define TEST_NAME "wcsdup" +# endif +# include "test-string.h" +# ifndef WIDE +# define STRDUP strdup +# else +# define STRDUP wcsdup +# endif +#endif + +typedef CHAR *(*proto_t) (const CHAR *); + +static void +do_zero_len_test (void) +{ + CHAR src[1] = { '\0' }; + CHAR *dst = STRDUP (src); + + TCS (dst, src); + free (dst); +} + +static void +do_one_test (const CHAR *src, + size_t len __attribute__((unused))) +{ + CHAR *dst = STRDUP (src); + + if (STRCMP (dst, src) != 0) + { + error (0, 0, + "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"", + TEST_NAME, dst, src); + ret = 1; + free (dst); + return; + } + free (dst); +} + +static void +do_test (size_t align1, size_t align2, size_t len, int max_char) +{ + size_t i; + CHAR *s1; +/* For wcsdup: align1 and align2 here mean alignment not in bytes, + but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) + len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ + align1 &= 7; + if ((align1 + len) * sizeof (CHAR) >= page_size) + return; + + align2 &= 7; + if ((align2 + len) * sizeof (CHAR) >= page_size) + return; + + s1 = (CHAR *) (buf1) + align1; + + for (i = 0; i < len; i++) + s1[i] = 32 + 23 * i % (max_char - 32); + s1[len] = 0; + + do_one_test (s1, len); +} + +static void +do_random_tests (void) +{ + size_t i, j, n, align1, align2, len; + UCHAR *p1 = (UCHAR *) (buf1 + page_size) - 512; + UCHAR *res; + + for (n = 0; n < ITERATIONS; n++) + { + /* align1 and align2 are expressed as wchar_t and not in bytes for wide + char test, and thus it will be equal to align times wchar_t size. + + For non wide version we need to check all alignments from 0 to 63 + since some assembly implementations have separate prolog for alignments + more 48. */ + + align1 = random () & (63 / sizeof (CHAR)); + if (random () & 1) + align2 = random () & (63 / sizeof (CHAR)); + else + align2 = align1 + (random () & 24); + len = random () & 511; + j = align1; + if (align2 > j) + j = align2; + if (len + j >= 511) + len = 510 - j - (random () & 7); + j = len + align1 + 64; + if (j > 512) + j = 512; + for (i = 0; i < j; i++) + { + if (i == len + align1) + p1[i] = 0; + else + { + p1[i] = random () & BIG_CHAR; + if (i >= align1 && i < len + align1 && !p1[i]) + p1[i] = (random () & SMALL_CHAR) + 3; + } + } + + res = (UCHAR *) STRDUP((CHAR *) p1 + align1); + TCS ((CHAR *) res, (CHAR *) (p1 + align1)); + free (res); + } +} + + +int +test_main (void) +{ + size_t i; + + test_init (); + + printf ("%23s", ""); + printf ("\t%s", TEST_NAME); + putchar ('\n'); + + for (i = 0; i < 16; ++i) + { + do_test (0, 0, i, SMALL_CHAR); + do_test (0, 0, i, BIG_CHAR); + do_test (0, i, i, SMALL_CHAR); + do_test (i, 0, i, BIG_CHAR); + } + + for (i = 1; i < 8; ++i) + { + do_test (0, 0, 8 << i, SMALL_CHAR); + do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR); + } + + for (i = 1; i < 8; ++i) + { + do_test (i, 2 * i, 8 << i, SMALL_CHAR); + do_test (2 * i, i, 8 << i, BIG_CHAR); + do_test (i, i, 8 << i, SMALL_CHAR); + do_test (i, i, 8 << i, BIG_CHAR); + } + + do_zero_len_test (); + do_random_tests (); + + return ret; +} + +#include From patchwork Tue Apr 11 19:05:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Simmons-Talbott X-Patchwork-Id: 1767831 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=c9rX1XN4; dkim-atps=neutral Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PwwM81y2tz1yZY for ; Wed, 12 Apr 2023 05:07:16 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3F8563857734 for ; Tue, 11 Apr 2023 19:07:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F8563857734 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1681240034; bh=i+7AtU6MlTOfk5OVmF0s+o3wc2xXUt9EddryY1faokE=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=c9rX1XN4LlsOF48drO/EomytUf+DnCbtZyWvX9KlKzqn/3G+DHDoD3+OLV31LA7Bg twq+QYdoHvswRwH7U8G53hNgxBYQAdy53Ep4GvkZfEspoNzUk8EQQJ4R604Kv+RwyQ 6EEXRmfXxlNjtoAkP+qJylMdUFUpK32gLOiGbBPk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id A52BB3858C2D for ; Tue, 11 Apr 2023 19:05:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A52BB3858C2D Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-523-pqKn82ryNnqeTGWK9zeihw-1; Tue, 11 Apr 2023 15:05:35 -0400 X-MC-Unique: pqKn82ryNnqeTGWK9zeihw-1 Received: by mail-qk1-f200.google.com with SMTP id d184-20020a37b4c1000000b007467c5d3abeso4861942qkf.19 for ; Tue, 11 Apr 2023 12:05:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681239935; x=1683831935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=i+7AtU6MlTOfk5OVmF0s+o3wc2xXUt9EddryY1faokE=; b=B069NRfhK9POOSOGvkEEZM1vpl8prDZ4Pn+oobrruPCzYC8vvA9KAfuyqSRJzcNkad cDix6Ygy1G81HDpKuPGQ7jelUTyeoy7wqX2lI0F8y6ALT/VSfsfpztxNxktn5scaHDEo ARy5Q9X6AaK6ABXA4VoLGG5oRMaNjDTK5240AEa6bT1nem1viq33RjCty/4yzF42JAp7 em7vjZzJlprlgzi9ebM2vJTHR2sNh+EstupwJ2eUCiAfGdiVtdGxESVCEnhZvnIRaHVU otskDY2cOkxOsUQlcdD7LRTwZAt81zx36EN/F3PPH7kNHThhpCz1n3kHBZMZNXAhFAAN fX2Q== X-Gm-Message-State: AAQBX9fl36Nhlzt2oHitpc/g1lk/wbEXsKxarPXM7Cc1WsaVIjlI4cKl Q4uxmBDUunq+Pk5B4Z5Fes+s5OyroMCDccyjeL5BqT2b2x3P948xdNYV8qGFgTMIx8+NmbtOht4 lU7Ywv2FbGgt66APuulPBDMpqHlmvJGZG4v8PdQ+ov5uEM87E6PHxzZIdqu6WleIjNWUUexDcQd Ukf6cv X-Received: by 2002:ac8:7c49:0:b0:3e3:882d:4b46 with SMTP id o9-20020ac87c49000000b003e3882d4b46mr22221458qtv.54.1681239934890; Tue, 11 Apr 2023 12:05:34 -0700 (PDT) X-Google-Smtp-Source: AKy350av0wVsW9gnv73gxn8Y6jcbEl2SufLdds+vZxNDolsLkdDRtINXJYa7rlBfjz84Ql8xNFlDEg== X-Received: by 2002:ac8:7c49:0:b0:3e3:882d:4b46 with SMTP id o9-20020ac87c49000000b003e3882d4b46mr22221400qtv.54.1681239934282; Tue, 11 Apr 2023 12:05:34 -0700 (PDT) Received: from oak.redhat.com (c-71-206-142-238.hsd1.va.comcast.net. [71.206.142.238]) by smtp.gmail.com with ESMTPSA id x1-20020ac85381000000b003e014845d9esm3760434qtp.74.2023.04.11.12.05.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 12:05:33 -0700 (PDT) To: libc-alpha@sourceware.org Cc: Joe Simmons-Talbott Subject: [PATCH v5 3/4] string: Add tests for strndup (BZ #30266) Date: Tue, 11 Apr 2023 15:05:25 -0400 Message-Id: <20230411190526.2469122-4-josimmon@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230411190526.2469122-1-josimmon@redhat.com> References: <20230329150500.2886135-1-josimmon@redhat.com> <20230411190526.2469122-1-josimmon@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Joe Simmons-Talbott via Libc-alpha From: Joe Simmons-Talbott Reply-To: Joe Simmons-Talbott Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org Sender: "Libc-alpha" Copy strncpy tests for strndup. Covers some basic testcases with random strings. Remove tests that set the destination's bytes and checked the resulting buffer's bytes. Remove wide character test support since wcsndup() doesn't exist. --- string/Makefile | 1 + string/test-strndup.c | 200 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100644 string/test-strndup.c diff --git a/string/Makefile b/string/Makefile index 472e318aea..2eef6f1dfc 100644 --- a/string/Makefile +++ b/string/Makefile @@ -163,6 +163,7 @@ tests := \ test-strncat \ test-strncmp \ test-strncpy \ + test-strndup \ test-strnlen \ test-strpbrk \ test-strrchr \ diff --git a/string/test-strndup.c b/string/test-strndup.c new file mode 100644 index 0000000000..841145dc92 --- /dev/null +++ b/string/test-strndup.c @@ -0,0 +1,200 @@ +/* Test strndup functions. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +#define TEST_MAIN +#include "test-string.h" + +static void +do_one_test (const char *src, size_t len, size_t n) +{ + char *dst = strndup(src, n); + size_t s = (len > n ? n: len) * sizeof (char); + + TEST_COMPARE_BLOB(dst, s, src, s); +} + +static void +do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char) +{ + size_t i; + char *s1; + + align1 &= 7; + if ((align1 + len) * sizeof (char) >= page_size) + return; + + align2 &= 7; + if ((align2 + len) * sizeof (char) >= page_size) + return; + + s1 = (char *) (buf1) + align1; + + for (i = 0; i < len; ++i) + s1[i] = 32 + 23 * i % (max_char - 32); + s1[len] = 0; + for (i = len + 1; (i + align1) * sizeof (char) < page_size && i < len + 64; + ++i) + s1[i] = 32 + 32 * i % (max_char - 32); + + do_one_test (s1, len, n); +} + +static void +do_page_tests (void) +{ + char *s1; + const size_t maxoffset = 64; + + /* Put s1 at the maxoffset from the edge of buf1's last page. */ + s1 = (char *) buf1 + BUF1PAGES * page_size / sizeof (char) - maxoffset; + /* s2 needs room to put a string with size of maxoffset + 1 at s2 + + (maxoffset - 1). */ + + memset (s1, 'a', maxoffset - 1); + s1[maxoffset - 1] = '\0'; + + /* Both strings are bounded to a page with read/write access and the next + page is protected with PROT_NONE (meaning that any access outside of the + page regions will trigger an invalid memory access). + + The loop copies the string s1 for all possible offsets up to maxoffset + for both inputs with a size larger than s1 (so memory access outside the + expected memory regions might trigger invalid access). */ + + for (size_t off1 = 0; off1 < maxoffset; off1++) + for (size_t off2 = 0; off2 < maxoffset; off2++) + do_one_test (s1 + off1, maxoffset - off1 - 1, + maxoffset + (maxoffset - off2)); +} + +static void +do_random_tests (void) +{ + size_t i, j, n, align1, align2, len, size, mode; + unsigned char *p1 = (unsigned char *) (buf1 + page_size) - 512; + unsigned char *res; + + for (n = 0; n < ITERATIONS; n++) + { + mode = random (); + if (mode & 1) + { + size = random () & 255; + align1 = 512 - size - (random () & 15); + if (mode & 2) + align2 = align1 - (random () & 24); + else + align2 = align1 - (random () & 31); + if (mode & 4) + { + j = align1; + align1 = align2; + align2 = j; + } + if (mode & 8) + len = size - (random () & 31); + else + len = 512; + if (len >= 512) + len = random () & 511; + } + else + { + align1 = random () & 31; + if (mode & 2) + align2 = random () & 31; + else + align2 = align1 + (random () & 24); + len = random () & 511; + j = align1; + if (align2 > j) + j = align2; + if (mode & 4) + { + size = random () & 511; + if (size + j > 512) + size = 512 - j - (random () & 31); + } + else + size = 512 - j; + if ((mode & 8) && len + j >= 512) + len = 512 - j - (random () & 7); + } + j = len + align1 + 64; + if (j > 512) + j = 512; + for (i = 0; i < j; i++) + { + if (i == len + align1) + p1[i] = 0; + else + { + p1[i] = random () & CHAR_MAX; + if (i >= align1 && i < len + align1 && !p1[i]) + p1[i] = (random () & 127) + 3; + } + } + + res = (unsigned char *) strndup ((char *) (p1 + align1), size); + j = len + 1; + if (size < j) + j = size; + TEST_COMPARE_BLOB (res, j, (char *) (p1 + align1), j); + free (res); + } +} + +int +test_main (void) +{ + size_t i; + + test_init (); + + printf ("%28s", ""); + printf ("\t%s", "strndup"); + putchar ('\n'); + + for (i = 1; i < 8; ++i) + { + do_test (i, i, 16, 16, 127); + do_test (i, i, 16, 16, CHAR_MAX); + do_test (i, 2 * i, 16, 16, 127); + do_test (2 * i, i, 16, 16, CHAR_MAX); + do_test (8 - i, 2 * i, 1 << i, 2 << i, 127); + do_test (2 * i, 8 - i, 2 << i, 1 << i, 127); + do_test (8 - i, 2 * i, 1 << i, 2 << i, CHAR_MAX); + do_test (2 * i, 8 - i, 2 << i, 1 << i, CHAR_MAX); + } + + for (i = 1; i < 8; ++i) + { + do_test (0, 0, 4 << i, 8 << i, 127); + do_test (0, 0, 16 << i, 8 << i, 127); + do_test (8 - i, 2 * i, 4 << i, 8 << i, 127); + do_test (8 - i, 2 * i, 16 << i, 8 << i, 127); + } + + do_random_tests (); + do_page_tests (); + return ret; +} + +#include From patchwork Tue Apr 11 19:05:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Simmons-Talbott X-Patchwork-Id: 1767829 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=PnelfoGG; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PwwLL0Sv6z1yZY for ; Wed, 12 Apr 2023 05:06:34 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C180B385734D for ; Tue, 11 Apr 2023 19:06:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C180B385734D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1681239991; bh=AQ4NZjTAE8DOgnsaF8K020UMv4GOLVput+w6u5OC+bA=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=PnelfoGGFdxyVRlrGZ2HTbHgd1SehCGDW0OZq1U51uJqdzNoFbuSsDwBDKRnPWEAd g9YI+eawsBjMjLWQw5iy5tpr6N8KZsLA0jWzNZRYM5QDfhEB50YHc5FfYyS6eMAOzd NPG/7YyaG9Z/1euZqyTcKD2P1WnL8F1fwlsQq98s= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 4D73E3858C78 for ; Tue, 11 Apr 2023 19:05:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4D73E3858C78 Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-464-JQb4XPqvPM-Zf2oqqqwt4Q-1; Tue, 11 Apr 2023 15:05:36 -0400 X-MC-Unique: JQb4XPqvPM-Zf2oqqqwt4Q-1 Received: by mail-qv1-f69.google.com with SMTP id a9-20020a0ccdc9000000b005df3eac4c0bso986331qvn.1 for ; Tue, 11 Apr 2023 12:05:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681239935; x=1683831935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AQ4NZjTAE8DOgnsaF8K020UMv4GOLVput+w6u5OC+bA=; b=zP85+GHZcC7vDd41gDP6RPiveMgIV/4hPJ1hDPAiiF/oMUnKp4bnnFisCcVDtEllJ2 sQXKDsHyMM0Txelju7FDOzz8ZP8bsqlJ69jCmLMfZRXScSPRgWWm8UEg9+ffM+vJ/Pbp 120ERWW2k25Eq/q2iKQ0u+8WqIfFQdnKmZdRJYtbnd6pR295Rs8okIJKJKdPkyTtX9zI dwUz+UAiISWRh21TBV8w/QwqCncH1Uc9BBr5VEgVlsKFSJojZnTw+OjL3aEC/S9q5Gn1 2RYV3BXqxAo1LeG587omTnOu2J4/f50/dqJs97OkiuXbRqvseoagBIyC3va60mKHAgXl 64Sw== X-Gm-Message-State: AAQBX9fOOvD1FSItZbedYUOg9ypleN922S2boKfyUECkfJWQFsakyKnI eK52waZDGHIVhLb9qnFXb0ycUWjz9JiMvyjAVq46fH354Hk3k6euIQldeW7fQ5Sr5Vu6q3sKtqL /JlV8Wy/RckyWLge3HS+WCOBl0x2JB3R18WFQi+qostNltYUtoasVRZ+nbmsorKO03yzCXccnMz YoRpJe X-Received: by 2002:a05:622a:1343:b0:3b9:a372:e456 with SMTP id w3-20020a05622a134300b003b9a372e456mr22877544qtk.57.1681239935274; Tue, 11 Apr 2023 12:05:35 -0700 (PDT) X-Google-Smtp-Source: AKy350ZhrPJFpFjiLvvcTjJmYwwlpzJMheDO3hwmEa9b9On81VNQ1+GQMo7+QBZCGRBqalN2/8lbuA== X-Received: by 2002:a05:622a:1343:b0:3b9:a372:e456 with SMTP id w3-20020a05622a134300b003b9a372e456mr22877512qtk.57.1681239934966; Tue, 11 Apr 2023 12:05:34 -0700 (PDT) Received: from oak.redhat.com (c-71-206-142-238.hsd1.va.comcast.net. [71.206.142.238]) by smtp.gmail.com with ESMTPSA id x1-20020ac85381000000b003e014845d9esm3760434qtp.74.2023.04.11.12.05.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 12:05:34 -0700 (PDT) To: libc-alpha@sourceware.org Cc: Joe Simmons-Talbott , Adhemerval Zanella Subject: [PATCH v5 4/4] wcsmbs: Add wcsdup() tests. (BZ #30266) Date: Tue, 11 Apr 2023 15:05:26 -0400 Message-Id: <20230411190526.2469122-5-josimmon@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230411190526.2469122-1-josimmon@redhat.com> References: <20230329150500.2886135-1-josimmon@redhat.com> <20230411190526.2469122-1-josimmon@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Joe Simmons-Talbott via Libc-alpha From: Joe Simmons-Talbott Reply-To: Joe Simmons-Talbott Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org Sender: "Libc-alpha" Enable wide character testcases for wcsdup(). Reviewed-by: Adhemerval Zanella --- wcsmbs/Makefile | 2 +- wcsmbs/test-wcsdup.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 wcsmbs/test-wcsdup.c diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index b12a3b0750..bd39335b0e 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -49,7 +49,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \ strop-tests := wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \ wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \ - wcscspn wmemchr wmemset + wcscspn wmemchr wmemset wcsdup tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \ tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \ tst-c16c32-1 wcsatcliff tst-wcstol-locale tst-wcstod-nan-locale \ diff --git a/wcsmbs/test-wcsdup.c b/wcsmbs/test-wcsdup.c new file mode 100644 index 0000000000..e39e063d0b --- /dev/null +++ b/wcsmbs/test-wcsdup.c @@ -0,0 +1,2 @@ +#define WIDE 1 +#include "../string/test-strdup.c"