This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]