summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Versions.def3
-rw-r--r--elf/Versions2
-rw-r--r--scripts/versions.awk5
-rw-r--r--string/tester.c51
5 files changed, 62 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bf76aab4d..222b69ee44 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
* sysdeps/generic/strcasecmp.c (__strcasecmp): Little performance
patch.
* sysdeps/generic/strncase.c: Likewise.
+ * string/tester.c: Add tests for strcasecmp and strncasecmp.
2001-12-05 Geoff Keating <geoffk@redhat.com>
@@ -373,6 +374,7 @@
2001-10-02 Jakub Jelinek <jakub@redhat.com>
H.J. Lu <hjl@gnu.org>
+ * Versions.def (libc): Add GCC_3.0.
* configure.in (libc_cv_gcc_static_libgcc): Set to -static-libgcc
if gcc supports this flag.
(EXPORT_UNWIND_FIND_FDE): Define unless target configure disables it.
@@ -388,7 +390,7 @@
* elf/Versions (__register_frame_info, __deregister_frame_info): Add
for GLIBC_2.0.
(__register_frame_info_bases, __register_frame_info_table_bases,
- __deregister_frame_info_bases, _Unwind_Find_FDE): Add for GLIBC_2.2.5.
+ __deregister_frame_info_bases, _Unwind_Find_FDE): Add for GCC_3.0.
* elf/Makefile (routines): Add unwind-dw2-fde.
(shared-only-routines): Add unwind-dw2-fde.
* sysdeps/alpha/gccframe.h: New file.
diff --git a/Versions.def b/Versions.def
index 830a610e0b..a5829cf98c 100644
--- a/Versions.def
+++ b/Versions.def
@@ -17,6 +17,9 @@ libc {
%ifdef USE_IN_LIBIO
HURD_CTHREADS_0.3
%endif
+%ifdef EXPORT_UNWIND_FIND_FDE
+ GCC_3.0
+%endif
}
libcrypt {
GLIBC_2.0
diff --git a/elf/Versions b/elf/Versions
index a0e691c0ac..0c3480450f 100644
--- a/elf/Versions
+++ b/elf/Versions
@@ -21,7 +21,7 @@ libc {
dl_iterate_phdr;
}
%ifdef EXPORT_UNWIND_FIND_FDE
- GLIBC_2.2.5 {
+ GCC_3.0 {
__register_frame_info_bases; __deregister_frame_info_bases;
__register_frame_info_table_bases; _Unwind_Find_FDE;
}
diff --git a/scripts/versions.awk b/scripts/versions.awk
index 64ac2d981b..1c03fd3c59 100644
--- a/scripts/versions.awk
+++ b/scripts/versions.awk
@@ -61,7 +61,10 @@ BEGIN {
# current library. This is the only place where we print something to
# the intermediate file.
/^ / {
- printf("%s %s %s\n", actlib, actver, $0) | sort;
+ sortver=actver
+ # Ensure GLIBC_ versions come always first
+ sub(/^GLIBC_/," GLIBC_",sortver)
+ printf("%s %s %s\n", actlib, sortver, $0) | sort;
}
diff --git a/string/tester.c b/string/tester.c
index 39ae0d837e..eb630a1ff3 100644
--- a/string/tester.c
+++ b/string/tester.c
@@ -1302,6 +1302,52 @@ test_strerror (void)
check(strerror(ENOENT) != 0, 3);
}
+static void
+test_strcasecmp (void)
+{
+ it = "strcasecmp";
+ /* Note that the locale is "C". */
+ check(strcasecmp("a", "a") == 0, 1);
+ check(strcasecmp("a", "A") == 0, 2);
+ check(strcasecmp("A", "a") == 0, 3);
+ check(strcasecmp("a", "b") < 0, 4);
+ check(strcasecmp("c", "b") > 0, 5);
+ check(strcasecmp("abc", "AbC") == 0, 6);
+ check(strcasecmp("0123456789", "0123456789") == 0, 7);
+ check(strcasecmp("", "0123456789") < 0, 8);
+ check(strcasecmp("AbC", "") > 0, 9);
+ check(strcasecmp("AbC", "A") > 0, 10);
+ check(strcasecmp("AbC", "Ab") > 0, 11);
+ check(strcasecmp("AbC", "ab") > 0, 12);
+}
+
+static void
+test_strncasecmp (void)
+{
+ it = "strncasecmp";
+ /* Note that the locale is "C". */
+ check(strncasecmp("a", "a", 5) == 0, 1);
+ check(strncasecmp("a", "A", 5) == 0, 2);
+ check(strncasecmp("A", "a", 5) == 0, 3);
+ check(strncasecmp("a", "b", 5) < 0, 4);
+ check(strncasecmp("c", "b", 5) > 0, 5);
+ check(strncasecmp("abc", "AbC", 5) == 0, 6);
+ check(strncasecmp("0123456789", "0123456789", 10) == 0, 7);
+ check(strncasecmp("", "0123456789", 10) < 0, 8);
+ check(strncasecmp("AbC", "", 5) > 0, 9);
+ check(strncasecmp("AbC", "A", 5) > 0, 10);
+ check(strncasecmp("AbC", "Ab", 5) > 0, 11);
+ check(strncasecmp("AbC", "ab", 5) > 0, 12);
+ check(strncasecmp("0123456789", "AbC", 0) == 0, 13);
+ check(strncasecmp("AbC", "abc", 1) == 0, 14);
+ check(strncasecmp("AbC", "abc", 2) == 0, 15);
+ check(strncasecmp("AbC", "abc", 3) == 0, 16);
+ check(strncasecmp("AbC", "abcd", 3) == 0, 17);
+ check(strncasecmp("AbC", "abcd", 4) < 0, 18);
+ check(strncasecmp("ADC", "abcd", 1) == 0, 19);
+ check(strncasecmp("ADC", "abcd", 2) > 0, 20);
+}
+
int
main (void)
{
@@ -1412,6 +1458,11 @@ main (void)
/* strerror - VERY system-dependent. */
test_strerror ();
+ /* strcasecmp. Without locale dependencies. */
+ test_strcasecmp ();
+
+ /* strncasecmp. Without locale dependencies. */
+ test_strncasecmp ();
if (errors == 0)
{