This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.14-420-g619fccc
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 23 Oct 2011 18:12:11 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.14-420-g619fccc
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 619fcccaa3ef079cafcaddd725eba309c89bef8f (commit)
from 09f699eaef87000a50ce5bbdca1121eca2e063a9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=619fcccaa3ef079cafcaddd725eba309c89bef8f
commit 619fcccaa3ef079cafcaddd725eba309c89bef8f
Author: Liubov Dmitrieva <liubov.dmitrieva@gmail.com>
Date: Sun Oct 23 14:11:50 2011 -0400
Add wcslen test cases
diff --git a/ChangeLog b/ChangeLog
index 8375361..cd0393a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-10-18 Liubov Dmitrieva <liubov.dmitrieva@gmail.com>
+
+ * wcsmbs/Makefile
+ (strop-tests): Add wcslen.
+ * wcsmbs/test-wcslen.c: New file.
+ * string/test-strlen.c: Update.
+ Add wcslen support.
+ (WIDE): New macro.
+
2011-10-23 Ulrich Drepper <drepper@gmail.com>
* po/it.po: Update from translation team.
diff --git a/string/test-strlen.c b/string/test-strlen.c
index e01befb..f12d3ba 100644
--- a/string/test-strlen.c
+++ b/string/test-strlen.c
@@ -1,7 +1,8 @@
-/* Test and measure strlen functions.
- Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Test and measure STRLEN functions.
+ Copyright (C) 1999, 2002, 2003, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+ Added wcslen support by Liubov Dmitrieva <liubov.dmitrieva@gmail.com>, 2011
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -21,31 +22,43 @@
#define TEST_MAIN
#include "test-string.h"
-typedef size_t (*proto_t) (const char *);
-size_t simple_strlen (const char *);
-size_t builtin_strlen (const char *);
+#ifndef WIDE
+# define STRLEN strlen
+# define CHAR char
+# define MAX_CHAR CHAR_MAX
+#else
+# include <wchar.h>
+# define STRLEN wcslen
+# define CHAR wchar_t
+# define MAX_CHAR WCHAR_MAX
+#endif
-IMPL (simple_strlen, 0)
-IMPL (builtin_strlen, 0)
-IMPL (strlen, 1)
+typedef size_t (*proto_t) (const CHAR *);
size_t
-simple_strlen (const char *s)
+simple_STRLEN (const CHAR *s)
{
- const char *p;
+ const CHAR *p;
for (p = s; *p; ++p);
return p - s;
}
+#ifndef WIDE
size_t
-builtin_strlen (const char *p)
+builtin_strlen (const CHAR *p)
{
return __builtin_strlen (p);
}
+IMPL (builtin_strlen, 0)
+#endif
+
+IMPL (simple_STRLEN, 0)
+IMPL (STRLEN, 1)
+
static void
-do_one_test (impl_t *impl, const char *s, size_t exp_len)
+do_one_test (impl_t *impl, const CHAR *s, size_t exp_len)
{
size_t len = CALL (impl, s);
if (len != exp_len)
@@ -76,23 +89,25 @@ do_one_test (impl_t *impl, const char *s, size_t exp_len)
}
static void
-do_test (size_t align, size_t len, int max_char)
+do_test (size_t align, size_t len)
{
size_t i;
- align &= 7;
- if (align + len >= page_size)
+ align &= 63;
+ if (align + sizeof(CHAR) * len >= page_size)
return;
+ CHAR *buf = (CHAR *) (buf1);
+
for (i = 0; i < len; ++i)
- buf1[align + i] = 1 + 7 * i % max_char;
- buf1[align + len] = 0;
+ buf[align + i] = 1 + 11111 * i % MAX_CHAR;
+ buf[align + len] = 0;
if (HP_TIMING_AVAIL)
printf ("Length %4zd, alignment %2zd:", len, align);
FOR_EACH_IMPL (impl, 0)
- do_one_test (impl, (char *) (buf1 + align), len);
+ do_one_test (impl, (CHAR *) (buf + align), len);
if (HP_TIMING_AVAIL)
putchar ('\n');
@@ -102,7 +117,7 @@ static void
do_random_tests (void)
{
size_t i, j, n, align, len;
- unsigned char *p = buf1 + page_size - 512;
+ CHAR *p = (CHAR *) (buf1 + page_size - 512 * sizeof(CHAR));
for (n = 0; n < ITERATIONS; n++)
{
@@ -127,10 +142,10 @@ do_random_tests (void)
}
FOR_EACH_IMPL (impl, 1)
- if (CALL (impl, (char *) (p + align)) != len)
+ if (CALL (impl, (CHAR *) (p + align)) != len)
{
error (0, 0, "Iteration %zd - wrong result in function %s (%zd) %zd != %zd, p %p",
- n, impl->name, align, CALL (impl, (char *) (p + align)),
+ n, impl->name, align, CALL (impl, (CHAR *) (p + align)),
len, p);
ret = 1;
}
@@ -149,28 +164,20 @@ test_main (void)
printf ("\t%s", impl->name);
putchar ('\n');
- for (i = 1; i < 8; ++i)
- do_test (0, i, 127);
-
- for (i = 1; i < 8; ++i)
- do_test (i, i, 127);
-
- for (i = 2; i <= 10; ++i)
- {
- do_test (0, 1 << i, 127);
- do_test (1, 1 << i, 127);
- }
-
- for (i = 1; i < 8; ++i)
- do_test (0, i, 255);
+ /* Checking with only 4 * N alignments for wcslen, other alignments are wrong for wchar_t type arrays*/
for (i = 1; i < 8; ++i)
- do_test (i, i, 255);
+ {
+ do_test (sizeof(CHAR) * i, i);
+ do_test (0, i);
+ }
- for (i = 2; i <= 10; ++i)
+ for (i = 2; i <= 12; ++i)
{
- do_test (0, 1 << i, 255);
- do_test (1, 1 << i, 255);
+ do_test (0, 1 << i);
+ do_test (sizeof(CHAR) * 7, 1 << i);
+ do_test (sizeof(CHAR) * i, 1 << i);
+ do_test (sizeof(CHAR) * i, (size_t)((1 << i) / 1.5));
}
do_random_tests ();
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index dbb6756..d48caf6 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
isoc99_wscanf isoc99_vwscanf isoc99_fwscanf isoc99_vfwscanf \
isoc99_swscanf isoc99_vswscanf
-strop-tests := wcscmp wmemcmp
+strop-tests := wcscmp wmemcmp wcslen
tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
wcsatcliff $(addprefix test-,$(strop-tests))
diff --git a/wcsmbs/test-wcslen.c b/wcsmbs/test-wcslen.c
new file mode 100644
index 0000000..496fa18
--- /dev/null
+++ b/wcsmbs/test-wcslen.c
@@ -0,0 +1,2 @@
+#define WIDE 1
+#include "../string/test-strlen.c"
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 9 +++++
string/test-strlen.c | 85 +++++++++++++++++++++++++++-----------------------
wcsmbs/Makefile | 2 +-
wcsmbs/test-wcslen.c | 2 +
4 files changed, 58 insertions(+), 40 deletions(-)
create mode 100644 wcsmbs/test-wcslen.c
hooks/post-receive
--
GNU C Library master sources