Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 19 Aug 2000 16:58:09 +0000 (16:58 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 19 Aug 2000 16:58:09 +0000 (16:58 +0000)
* malloc/mtrace.pl (usage): Inform about --help.

2000-08-19  Wolfram Gloger  <wg@malloc.de>

* malloc/malloc.c (new_heap): try harder to get an aligned chunk of
size HEAP_MAX_SIZE.

2000-08-19  Andreas Jaeger  <aj@suse.de>

* shlib-versions: Remove libnss_db, libdb and libdb1.

2000-08-19  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/unix/sysv/linux/alpha/readdir.c: Move...
* sysdeps/unix/sysv/linux/ia64/readdir.c: ...here and
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: ...here.
* sysdeps/unix/sysv/linux/alpha/readdir_r.c: Move...
* sysdeps/unix/sysv/linux/ia64/readdir_r.c: ...here and
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: ...here.
* sysdeps/unix/sysv/linux/alpha/readdir64.c: Remove.
* sysdeps/unix/sysv/linux/alpha/readdir64_r.c: Remove.
* sysdeps/unix/sysv/linux/alpha/getdents64.c: Remove.
* sysdeps/unix/sysv/linux/alpha/getdents.c: Only use for non-LFS
getdents.
* sysdeps/unix/sysv/linux/readdir64.c: Remove versioning.
* sysdeps/unix/sysv/linux/readdir64_r.c: Likewise.

2000-08-18  Jakub Jelinek  <jakub@redhat.com>

* include/glob.h (__glob64): Add prototype.
* sysdeps/generic/glob.c: If GLOB_ONLY_P is defined, only
define glob and glob_in_dir.
* sysdeps/unix/sysv/linux/i386/Versions: Add glob64@@GLIBC_2.2.
* sysdeps/unix/sysv/linux/arm/Versions: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Versions: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise.
* sysdeps/unix/sysv/linux/i386/glob64.c: New file.
* sysdeps/unix/sysv/linux/arm/glob64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/glob64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: New file.

2000-08-18  Jakub Jelinek  <jakub@redhat.com>

* malloc/Makefile (memusage): libmemusage.so is installed in slibdir.

2000-08-17  Andreas Jaeger  <aj@suse.de>

* math/test-fenv.c (fe_single_test): New function.
(fe_env_tests): Use fe_single_test.
(feenable_test): New tests for feenable/fedisable and
fegetexcpetions.
(feexcp_mask_test): New function.
(feexcp_nomask_test): New function.

2000-08-19  Richard Henderson  <rth@cygnus.com>

* sysdeps/alpha/fpu/fenv_libc.h: New file.
* sysdeps/alpha/fpu/fclrexcpt.c: Use it.
* sysdeps/alpha/fpu/fegetenv.c: Likewise.
* sysdeps/alpha/fpu/fesetround.c: Likewise.
* sysdeps/alpha/fpu/fegetround.c: Likewise.
* sysdeps/alpha/fpu/fgetexcptflg.c: Likewise.
* sysdeps/alpha/fpu/fraiseexcpt.c: Likewise.
* sysdeps/alpha/fpu/ftestexcept.c: Likewise.
* sysdeps/alpha/fpu/fedisblxcpt.c: Likewise.  Use the smaller mask.
* sysdeps/alpha/fpu/feenablxcpt.c: Likewise.
* sysdeps/alpha/fpu/fegetexcept.c: Likewise.
* sysdeps/alpha/fpu/feholdexcpt.c: Retain the SWCR_MAP bits.
* sysdeps/alpha/fpu/fesetenv.c: Likewise.
* sysdeps/alpha/fpu/feupdateenv.c: Likewise.
* sysdeps/alpha/fpu/fsetexcptflg.c: Likewise.
* sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): New.
(FE_MAP_DMZ, FE_MAP_UMZ, FE_NONIEEE_ENV): New.

2000-08-19  Andreas Jaeger  <aj@suse.de>

43 files changed:
ChangeLog
include/glob.h
malloc/Makefile
malloc/malloc.c
malloc/mtrace.pl
math/test-fenv.c
shlib-versions
sysdeps/alpha/fpu/bits/fenv.h
sysdeps/alpha/fpu/fclrexcpt.c
sysdeps/alpha/fpu/fedisblxcpt.c
sysdeps/alpha/fpu/feenablxcpt.c
sysdeps/alpha/fpu/fegetenv.c
sysdeps/alpha/fpu/fegetexcept.c
sysdeps/alpha/fpu/fegetround.c
sysdeps/alpha/fpu/feholdexcpt.c
sysdeps/alpha/fpu/fesetenv.c
sysdeps/alpha/fpu/fesetround.c
sysdeps/alpha/fpu/feupdateenv.c
sysdeps/alpha/fpu/fgetexcptflg.c
sysdeps/alpha/fpu/fraiseexcpt.c
sysdeps/alpha/fpu/fsetexcptflg.c
sysdeps/alpha/fpu/ftestexcept.c
sysdeps/generic/glob.c
sysdeps/unix/sysv/linux/alpha/getdents.c
sysdeps/unix/sysv/linux/alpha/getdents64.c [deleted file]
sysdeps/unix/sysv/linux/alpha/readdir.c [deleted file]
sysdeps/unix/sysv/linux/alpha/readdir64.c [deleted file]
sysdeps/unix/sysv/linux/alpha/readdir64_r.c [deleted file]
sysdeps/unix/sysv/linux/alpha/readdir_r.c [deleted file]
sysdeps/unix/sysv/linux/arm/Versions
sysdeps/unix/sysv/linux/arm/glob64.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/Versions
sysdeps/unix/sysv/linux/i386/glob64.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/ia64/readdir.c
sysdeps/unix/sysv/linux/ia64/readdir_r.c
sysdeps/unix/sysv/linux/powerpc/Versions
sysdeps/unix/sysv/linux/powerpc/glob64.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/readdir64.c
sysdeps/unix/sysv/linux/readdir64_r.c
sysdeps/unix/sysv/linux/sparc/sparc32/Versions
sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c
sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c

index ca1f822..40b76c5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,81 @@
 2000-08-19  Andreas Jaeger  <aj@suse.de>
 
+       * malloc/mtrace.pl (usage): Inform about --help.
+
+2000-08-19  Wolfram Gloger  <wg@malloc.de>
+
+       * malloc/malloc.c (new_heap): try harder to get an aligned chunk of
+       size HEAP_MAX_SIZE.
+
+2000-08-19  Andreas Jaeger  <aj@suse.de>
+
+       * shlib-versions: Remove libnss_db, libdb and libdb1.
+
+2000-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/alpha/readdir.c: Move...
+       * sysdeps/unix/sysv/linux/ia64/readdir.c: ...here and
+       * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: ...here.
+       * sysdeps/unix/sysv/linux/alpha/readdir_r.c: Move...
+       * sysdeps/unix/sysv/linux/ia64/readdir_r.c: ...here and
+       * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: ...here.
+       * sysdeps/unix/sysv/linux/alpha/readdir64.c: Remove.
+       * sysdeps/unix/sysv/linux/alpha/readdir64_r.c: Remove.
+       * sysdeps/unix/sysv/linux/alpha/getdents64.c: Remove.
+       * sysdeps/unix/sysv/linux/alpha/getdents.c: Only use for non-LFS
+       getdents.
+       * sysdeps/unix/sysv/linux/readdir64.c: Remove versioning.
+       * sysdeps/unix/sysv/linux/readdir64_r.c: Likewise.
+
+2000-08-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * include/glob.h (__glob64): Add prototype.
+       * sysdeps/generic/glob.c: If GLOB_ONLY_P is defined, only
+       define glob and glob_in_dir.
+       * sysdeps/unix/sysv/linux/i386/Versions: Add glob64@@GLIBC_2.2.
+       * sysdeps/unix/sysv/linux/arm/Versions: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/Versions: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise.
+       * sysdeps/unix/sysv/linux/i386/glob64.c: New file.
+       * sysdeps/unix/sysv/linux/arm/glob64.c: New file.
+       * sysdeps/unix/sysv/linux/powerpc/glob64.c: New file.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: New file.
+
+2000-08-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * malloc/Makefile (memusage): libmemusage.so is installed in slibdir.
+
+2000-08-17  Andreas Jaeger  <aj@suse.de>
+
+       * math/test-fenv.c (fe_single_test): New function.
+       (fe_env_tests): Use fe_single_test.
+       (feenable_test): New tests for feenable/fedisable and
+       fegetexcpetions.
+       (feexcp_mask_test): New function.
+       (feexcp_nomask_test): New function.
+
+2000-08-19  Richard Henderson  <rth@cygnus.com>
+
+       * sysdeps/alpha/fpu/fenv_libc.h: New file.
+       * sysdeps/alpha/fpu/fclrexcpt.c: Use it.
+       * sysdeps/alpha/fpu/fegetenv.c: Likewise.
+       * sysdeps/alpha/fpu/fesetround.c: Likewise.
+       * sysdeps/alpha/fpu/fegetround.c: Likewise.
+       * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise.
+       * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise.
+       * sysdeps/alpha/fpu/ftestexcept.c: Likewise.
+       * sysdeps/alpha/fpu/fedisblxcpt.c: Likewise.  Use the smaller mask.
+       * sysdeps/alpha/fpu/feenablxcpt.c: Likewise.
+       * sysdeps/alpha/fpu/fegetexcept.c: Likewise.
+       * sysdeps/alpha/fpu/feholdexcpt.c: Retain the SWCR_MAP bits.
+       * sysdeps/alpha/fpu/fesetenv.c: Likewise.
+       * sysdeps/alpha/fpu/feupdateenv.c: Likewise.
+       * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise.
+       * sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): New.
+       (FE_MAP_DMZ, FE_MAP_UMZ, FE_NONIEEE_ENV): New.
+
+2000-08-19  Andreas Jaeger  <aj@suse.de>
+
        * elf/constload1.c: Include <stdio.h> for puts prototype.
 
 2000-08-19  Ulrich Drepper  <drepper@redhat.com>
index fce7618..d248cf6 100644 (file)
@@ -3,5 +3,8 @@
 
 /* Now define the internal interfaces.  */
 extern int __glob_pattern_p (__const char *__pattern, int __quote);
+extern int __glob64 (__const char *__pattern, int __flags,
+                    int (*__errfunc) (__const char *, int),
+                    glob64_t *__pglob);
 
 #endif
index 7cec63d..07acdcf 100644 (file)
@@ -109,7 +109,7 @@ $(objpfx)mtrace: mtrace.pl
 $(objpfx)memusage: memusage.sh
        rm -f $@.new
        sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \
-           -e 's|@LIBDIR@|$(libdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \
+           -e 's|@LIBDIR@|$(slibdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \
        && rm -f $@ && mv $@.new $@ && chmod +x $@
 
 
index af20ca2..9ae5b6e 100644 (file)
@@ -2013,12 +2013,22 @@ new_heap(size) size_t size;
      mapping (on Linux, this is the case for all non-writable mappings
      anyway). */
   p1 = (char *)MMAP(0, HEAP_MAX_SIZE<<1, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE);
-  if(p1 == MAP_FAILED)
-    return 0;
-  p2 = (char *)(((unsigned long)p1 + HEAP_MAX_SIZE) & ~(HEAP_MAX_SIZE-1));
-  ul = p2 - p1;
-  munmap(p1, ul);
-  munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul);
+  if(p1 != MAP_FAILED) {
+    p2 = (char *)(((unsigned long)p1 + HEAP_MAX_SIZE) & ~(HEAP_MAX_SIZE-1));
+    ul = p2 - p1;
+    munmap(p1, ul);
+    munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul);
+  } else {
+    /* Try to take the chance that an allocation of only HEAP_MAX_SIZE
+       is already aligned. */
+    p2 = (char *)MMAP(0, HEAP_MAX_SIZE, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE);
+    if(p2 == MAP_FAILED)
+      return 0;
+    if((unsigned long)p2 & (HEAP_MAX_SIZE-1)) {
+      munmap(p2, HEAP_MAX_SIZE);
+      return 0;
+    }
+  }
   if(mprotect(p2, size, PROT_READ|PROT_WRITE) != 0) {
     munmap(p2, HEAP_MAX_SIZE);
     return 0;
index aff04d3..8be50f4 100644 (file)
@@ -69,7 +69,7 @@ if ($#ARGV == 0) {
     $binary=$ARGV[0];
     $data=$ARGV[1];
 } else {
-    die "Wrong number of arguments.";
+    die "Wrong number of arguments, run $progname --help for help.";
 }
 
 sub location {
index b87f687..03e4877 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de> and
+   Contributed by Andreas Jaeger <aj@suse.de> and
    Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -343,31 +343,273 @@ feenv_mask_test (const char *flag_name, int fe_exc)
   }
 }
 
+/* Test that program aborts with no masked interrupts */
+static void
+feexcp_nomask_test (const char *flag_name, int fe_exc)
+{
+  int status;
+  pid_t pid;
 
+  printf ("Test: after fedisable (%s) processes will abort\n");
+  printf ("      when feraiseexcept (%s) is called.\n", flag_name, flag_name);
+  pid = fork ();
+  if (pid == 0)
+    {
+#ifdef RLIMIT_CORE
+      /* Try to avoid dumping core.  */
+      struct rlimit core_limit;
+      core_limit.rlim_cur = 0;
+      core_limit.rlim_max = 0;
+      setrlimit (RLIMIT_CORE, &core_limit);
+#endif
 
+      fedisableexcept (FE_ALL_EXCEPT);
+      feenableexcept (fe_exc);
+      feraiseexcept (fe_exc);
+      exit (2);
+    }
+  else if (pid < 0)
+    {
+      if (errno != ENOSYS)
+       {
+         printf ("  Fail: Could not fork.\n");
+         ++count_errors;
+       }
+      else
+       printf ("  `fork' not implemented, test ignored.\n");
+    }
+  else {
+    if (waitpid (pid, &status, 0) != pid)
+      {
+       printf ("  Fail: waitpid call failed.\n");
+       ++count_errors;
+      }
+    else if (WIFSIGNALED (status) && WTERMSIG (status) == SIGFPE)
+      printf ("  Pass: Process received SIGFPE.\n");
+    else
+      {
+       printf ("  Fail: Process didn't receive signal and exited with status %d.\n",
+               status);
+       ++count_errors;
+      }
+  }
+}
+
+/* Test that program doesn't abort with exception.  */
 static void
-feenv_tests (void)
+feexcp_mask_test (const char *flag_name, int fe_exc)
 {
+  int status;
+  pid_t pid;
 
+  printf ("Test: after fedisable (%s) processes will not abort\n");
+  printf ("      when feraiseexcept (%s) is called.\n", flag_name, flag_name);
+  pid = fork ();
+  if (pid == 0)
+    {
+#ifdef RLIMIT_CORE
+      /* Try to avoid dumping core.  */
+      struct rlimit core_limit;
+      core_limit.rlim_cur = 0;
+      core_limit.rlim_max = 0;
+      setrlimit (RLIMIT_CORE, &core_limit);
+#endif
+      feenableexcept (FE_ALL_EXCEPT);
+      fedisableexcept (fe_exc);
+      feraiseexcept (fe_exc);
+      exit (2);
+    }
+  else if (pid < 0)
+    {
+      if (errno != ENOSYS)
+       {
+         printf ("  Fail: Could not fork.\n");
+         ++count_errors;
+       }
+      else
+       printf ("  `fork' not implemented, test ignored.\n");
+    }
+  else {
+    if (waitpid (pid, &status, 0) != pid)
+      {
+       printf ("  Fail: waitpid call failed.\n");
+       ++count_errors;
+      }
+    else if (WIFEXITED (status) && WEXITSTATUS (status) == 2)
+      printf ("  Pass: Process exited normally.\n");
+    else
+      {
+       printf ("  Fail: Process exited abnormally with status %d.\n",
+               status);
+       ++count_errors;
+      }
+  }
+}
+
+
+/* Tests for feenableexcept/fedisableexcept/fegetexcept.  */
+static void
+feenable_test (const char *flag_name, int fe_exc)
+{
+  int excepts;
+
+
+  printf ("Tests for feenableexcepts etc. with flag %s\n", flag_name);
+
+  /* First disable all exceptions.  */
+  if (fedisableexcept (FE_ALL_EXCEPT) == -1)
+    {
+      printf ("Test: fedisableexcept (FE_ALL_EXCEPT) failed\n");
+      ++count_errors;
+      /* If this fails, the other tests don't make sense.  */
+      return;
+    }
+  excepts = fegetexcept ();
+  if (excepts != 0)
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0, is %d\n",
+             flag_name, excepts);
+      ++count_errors;
+    }
+
+  excepts = feenableexcept (fe_exc);
+  if (excepts == -1)
+    {
+      printf ("Test: feenableexcept (%s) failed\n", flag_name);
+      ++count_errors;
+      return;
+    }
+  if (excepts != 0)
+    {
+      printf ("Test: feenableexcept (%s) failed, return should be 0, is %x\n",
+             flag_name, excepts);
+      ++count_errors;
+    }
+
+  excepts = fegetexcept ();
+  if (excepts != fe_exc)
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0x%x, is 0x%x\n",
+             flag_name, fe_exc, excepts);
+      ++count_errors;
+    }
+
+  /* And now disable the exception again.  */
+  excepts = fedisableexcept (fe_exc);
+  if (excepts == -1)
+    {
+      printf ("Test: fedisableexcept (%s) failed\n", flag_name);
+      ++count_errors;
+      return;
+    }
+  if (excepts != fe_exc)
+    {
+      printf ("Test: fedisableexcept (%s) failed, return should be 0x%x, is 0x%x\n",
+             flag_name, fe_exc, excepts);
+      ++count_errors;
+    }
+
+  excepts = fegetexcept ();
+  if (excepts != 0)
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0, is 0x%x\n",
+             flag_name, excepts);
+      ++count_errors;
+    }
+
+  /* Now the other way round: Enable all exceptions and disable just this one.  */
+  if (feenableexcept (FE_ALL_EXCEPT) == -1)
+    {
+      printf ("Test: feenableexcept (FE_ALL_EXCEPT) failed\n");
+      ++count_errors;
+      /* If this fails, the other tests don't make sense.  */
+      return;
+    }
+
+  excepts = fegetexcept ();
+  if (excepts != FE_ALL_EXCEPT)
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0x%x, is 0x%x\n",
+             flag_name, FE_ALL_EXCEPT, excepts);
+      ++count_errors;
+    }
+
+  excepts = fedisableexcept (fe_exc);
+  if (excepts == -1)
+    {
+      printf ("Test: fedisableexcept (%s) failed\n", flag_name);
+      ++count_errors;
+      return;
+    }
+  if (excepts != FE_ALL_EXCEPT)
+    {
+      printf ("Test: fedisableexcept (%s) failed, return should be 0, is 0x%x\n",
+             flag_name, excepts);
+      ++count_errors;
+    }
+
+  excepts = fegetexcept ();
+  if (excepts != (FE_ALL_EXCEPT & ~fe_exc))
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0x%x, is 0x%x\n",
+             flag_name, (FE_ALL_EXCEPT & ~fe_exc), excepts);
+      ++count_errors;
+    }
+
+  /* And now enable the exception again.  */
+  excepts = feenableexcept (fe_exc);
+  if (excepts == -1)
+    {
+      printf ("Test: feenableexcept (%s) failed\n", flag_name);
+      ++count_errors;
+      return;
+    }
+  if (excepts != (FE_ALL_EXCEPT & ~fe_exc))
+    {
+      printf ("Test: feenableexcept (%s) failed, return should be 0, is 0x%x\n",
+             flag_name, excepts);
+      ++count_errors;
+    }
+
+  excepts = fegetexcept ();
+  if (excepts != FE_ALL_EXCEPT)
+    {
+      printf ("Test: fegetexcept (%s) failed, return should be 0x%x, is 0x%x\n",
+             flag_name, FE_ALL_EXCEPT, excepts);
+      ++count_errors;
+    }
+  feexcp_nomask_test (flag_name, fe_exc);
+  feexcp_mask_test (flag_name, fe_exc);
+  
+}
+
+
+static void
+fe_single_test (const char *flag_name, int fe_exc)
+{
+  feenv_nomask_test (flag_name, fe_exc);
+  feenv_mask_test (flag_name, fe_exc);
+  feenable_test (flag_name, fe_exc);
+}
+
+
+static void
+feenv_tests (void)
+{
 #ifdef FE_DIVBYZERO
-  feenv_nomask_test ("FE_DIVBYZERO", FE_DIVBYZERO);
-  feenv_mask_test ("FE_DIVBYZERO", FE_DIVBYZERO);
+  fe_single_test ("FE_DIVBYZERO", FE_DIVBYZERO);
 #endif
 #ifdef FE_INVALID
-  feenv_nomask_test ("FE_INVALID", FE_INVALID);
-  feenv_mask_test ("FE_INVALID", FE_INVALID);
+  fe_single_test ("FE_INVALID", FE_INVALID);
 #endif
 #ifdef FE_INEXACT
-  feenv_nomask_test ("FE_INEXACT", FE_INEXACT);
-  feenv_mask_test ("FE_INEXACT", FE_INEXACT);
+  fe_single_test ("FE_INEXACT", FE_INEXACT);
 #endif
 #ifdef FE_UNDERFLOW
-  feenv_nomask_test ("FE_UNDERFLOW", FE_UNDERFLOW);
-  feenv_mask_test ("FE_UNDERFLOW", FE_UNDERFLOW);
+  fe_single_test ("FE_UNDERFLOW", FE_UNDERFLOW);
 #endif
 #ifdef FE_OVERFLOW
-  feenv_nomask_test ("FE_OVERFLOW", FE_OVERFLOW);
-  feenv_mask_test ("FE_OVERFLOW", FE_OVERFLOW);
+  fe_single_test ("FE_OVERFLOW", FE_OVERFLOW);
 #endif
   fesetenv (FE_DFL_ENV);
 }
index 3518610..33bfdee 100644 (file)
@@ -85,7 +85,6 @@ mips.*-.*-linux.*     libresolv=2             GLIBC_2.0 GLIBC_2.2
 # names given in /etc/nsswitch.conf.
 mips.*-.*-linux.*      libnss_files=2          GLIBC_2.0 GLIBC_2.2
 mips.*-.*-linux.*      libnss_dns=2            GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*      libnss_db=2             GLIBC_2.0 GLIBC_2.2
 mips.*-.*-linux.*      libnss_compat=2         GLIBC_2.0 GLIBC_2.2
 mips.*-.*-linux.*      libnss_nis=2            GLIBC_2.0 GLIBC_2.2
 mips.*-.*-linux.*      libnss_nisplus=2        GLIBC_2.0 GLIBC_2.2
@@ -93,7 +92,6 @@ mips.*-.*-linux.*     libnss_ldap=2           GLIBC_2.0 GLIBC_2.2
 mips.*-.*-linux.*      libnss_hesiod=2         GLIBC_2.0 GLIBC_2.2
 .*-.*-.*               libnss_files=2
 .*-.*-.*               libnss_dns=2
-.*-.*-.*               libnss_db=2
 .*-.*-.*               libnss_compat=2
 .*-.*-.*               libnss_nis=2
 .*-.*-.*               libnss_nisplus=2
@@ -105,13 +103,6 @@ alpha.*-.*-linux.* libnsl=1.1
 mips.*-.*-linux.*      libnsl=1                GLIBC_2.0 GLIBC_2.2
 .*-.*-.*               libnsl=1
 
-# We use libdb.so.3 for the interface in version 2.x of the Berkeley DB code.
-.*-.*-.*               libdb=3
-# This is the Berkeley DB 1.85.  We use the version numbers from glibc 2.0.*
-# for all times.
-alpha-.*-linux.*        libdb1=2.1
-.*-.*-.*                libdb1=2
-
 # This defines the shared library version numbers we will install.
 alpha.*-.*-linux.*     libcrypt=1.1
 .*-.*-.*               libcrypt=1
index 82b85de..b6d9b98 100644 (file)
 
 enum
   {
+#ifdef __USE_GNU
+    FE_DENORMAL =      1UL << 22,
+#define FE_DENORMAL    FE_DENORMAL
+#endif
+
     FE_INEXACT =       1UL << 21,
 #define FE_INEXACT     FE_INEXACT
 
@@ -51,12 +56,10 @@ enum
     FE_INVALID =       1UL << 17,
 #define FE_INVALID     FE_INVALID
 
-    FE_ALL_EXCEPT =
-       (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
+    FE_ALL_EXCEPT =    0x3f << 17
 #define FE_ALL_EXCEPT  FE_ALL_EXCEPT
   };
 
-
 /* Alpha chips support all four defined rouding modes.
 
    Note that code must be compiled to use dynamic rounding (/d) instructions
@@ -81,6 +84,19 @@ enum
 #define FE_UPWARD      FE_UPWARD
   };
 
+#ifdef __USE_GNU
+/* On later hardware, and later kernels for earlier hardware, we can forcibly
+   underflow denormal inputs and outputs.  This can speed up certain programs
+   significantly, usually without affecting accuracy.  */
+enum
+  {
+    FE_MAP_DMZ =       1UL << 12,      /* Map denorm inputs to zero */
+#define FE_MAP_DMZ     FE_MAP_DMZ
+
+    FE_MAP_UMZ =       1UL << 13,      /* Map underflowed outputs to zero */
+#define FE_MAP_UMZ     FE_MAP_UMZ
+  };
+#endif
 
 /* Type representing exception flags.  */
 typedef unsigned long int fexcept_t;
@@ -96,6 +112,10 @@ typedef unsigned long int fenv_t;
 #ifdef __USE_GNU
 /* Floating-point environment where none of the exceptions are masked.  */
 # define FE_NOMASK_ENV ((fenv_t *) 0x880000000000003eUL)
+
+/* Floating-point environment with (processor-dependent) non-IEEE floating
+   point.  In this case, mapping denormals to zero.  */
+# define FE_NONIEEE_ENV ((fenv_t *) 0x8800000000003000UL)
 #endif
 
 /* The system calls to talk to the kernel's FP code.  */
index 006f506..71ff748 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __feclearexcept (int excepts)
@@ -29,7 +29,7 @@ __feclearexcept (int excepts)
   swcr = __ieee_get_fp_control ();
 
   /* Clear the relevant bits.  */
-  swcr &= ~((unsigned long int) excepts & FE_ALL_EXCEPT);
+  swcr &= ~((unsigned long int) excepts & SWCR_STATUS_MASK);
 
   /* Put the new state in effect.  */
   __ieee_set_fp_control (swcr);
index ab0630c..7359e14 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 fedisableexcept (int excepts)
@@ -27,8 +27,8 @@ fedisableexcept (int excepts)
 
   new_exc = __ieee_get_fp_control ();
 
-  old_exc = (new_exc << 16) & FE_ALL_EXCEPT;
-  new_exc &= ~((excepts & FE_ALL_EXCEPT) >> 16);
+  old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
+  new_exc &= ~((excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK);
 
   __ieee_set_fp_control (new_exc);
 
index d2b0f2e..b36e846 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 feenableexcept (int excepts)
@@ -27,8 +27,8 @@ feenableexcept (int excepts)
 
   new_exc = __ieee_get_fp_control ();
 
-  old_exc = (new_exc << 16) & FE_ALL_EXCEPT;
-  new_exc |= (excepts & FE_ALL_EXCEPT) >> 16;
+  old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
+  new_exc |= (excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK;
 
   __ieee_set_fp_control (new_exc);
 
index 51ce1c2..d6b3f70 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __fegetenv (fenv_t *envp)
@@ -31,10 +31,8 @@ __fegetenv (fenv_t *envp)
   swcr = __ieee_get_fp_control ();
   __asm__ __volatile__ ("mf_fpcr %0" : "=f" (fpcr));
 
-  /* Merge the two bits of information.  The magic number at the end is
-     the exception enable mask.  */
-
-  *envp = (fpcr & (3UL << 58)) | (swcr & (FE_ALL_EXCEPT | 0x3e));
+  /* Merge the two bits of information.  */
+  *envp = ((fpcr & FPCR_ROUND_MASK) | (swcr & SWCR_ALL_MASK));
 
   /* Success.  */
   return 0;
index e4d5e78..c0de38f 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 fegetexcept (void)
@@ -27,5 +27,5 @@ fegetexcept (void)
 
   exc = __ieee_get_fp_control ();
 
-  return (exc << 16) & FE_ALL_EXCEPT;
+  return (exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
 }
index 623e2ce..f64fee7 100644 (file)
@@ -1,5 +1,5 @@
 /* Return current rounding direction.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>, 1997
 
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 fegetround (void)
@@ -27,5 +27,5 @@ fegetround (void)
 
   __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
 
-  return (fpcr >> 58) & 3;
+  return (fpcr >> FPCR_ROUND_SHIFT) & 3;
 }
index a179366..d683a37 100644 (file)
@@ -1,5 +1,5 @@
 /* Store current floating-point environment and clear exceptions.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>, 1997
 
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 feholdexcept (fenv_t *envp)
@@ -27,7 +27,7 @@ feholdexcept (fenv_t *envp)
   fegetenv(envp);
 
   /* Clear all exception status bits and exception enable bits.  */
-  __ieee_set_fp_control(0);
+  __ieee_set_fp_control(*envp & SWCR_MAP_MASK);
 
   return 0;
 }
index 58bc13a..5bf3b5e 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __fesetenv (const fenv_t *envp)
@@ -37,11 +37,11 @@ __fesetenv (const fenv_t *envp)
   /* Reset the rounding mode with the hardware fpcr.  Note that the following
      system call is an implied trap barrier for our modification.  */
   __asm__ __volatile__ ("excb; mf_fpcr %0" : "=f" (fpcr));
-  fpcr = (fpcr & ~(3UL << 58)) | (env & (3UL << 58));
+  fpcr = (fpcr & ~FPCR_ROUND_MASK) | (env & FPCR_ROUND_MASK);
   __asm__ __volatile__ ("mt_fpcr %0" : : "f" (fpcr));
 
   /* Reset the exception status and mask with the kernel's FP code.  */
-  __ieee_set_fp_control (env & (FE_ALL_EXCEPT | 0x3e));
+  __ieee_set_fp_control (env & SWCR_ALL_MASK);
 
   /* Success.  */
   return 0;
index f0aaaa2..42a8b62 100644 (file)
@@ -1,5 +1,5 @@
 /* Set current rounding direction.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>, 1997
 
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 fesetround (int round)
@@ -32,7 +32,8 @@ fesetround (int round)
   __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
 
   /* Set the relevant bits.  */
-  fpcr = (fpcr & ~(3UL << 58)) | ((unsigned long)round << 58);
+  fpcr = ((fpcr & ~FPCR_ROUND_MASK)
+         | ((unsigned long)round << FPCR_ROUND_SHIFT));
 
   /* Put the new state in effect.  */
   __asm__ __volatile__("mt_fpcr %0; excb" : : "f"(fpcr));
index 61226c6..b9f1c5b 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __feupdateenv (const fenv_t *envp)
@@ -34,7 +34,7 @@ __feupdateenv (const fenv_t *envp)
   /* Raise the saved exception.  Incidently for us the implementation
      defined format of the values in objects of type fexcept_t is the
      same as the ones specified using the FE_* constants.  */
-  feraiseexcept ((int) tmp & FE_ALL_EXCEPT);
+  feraiseexcept (tmp & SWCR_STATUS_MASK);
 
   /* Success.  */
   return 0;
index bd47535..bae1556 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __fegetexceptflag (fexcept_t *flagp, int excepts)
@@ -29,7 +29,7 @@ __fegetexceptflag (fexcept_t *flagp, int excepts)
   tmp = __ieee_get_fp_control();
 
   /* Return that portion that corresponds to the requested exceptions. */
-  *flagp = tmp & excepts & FE_ALL_EXCEPT;
+  *flagp = tmp & excepts & SWCR_STATUS_MASK;
 
   /* Success.  */
   return 0;
index b0eab00..1f72eba 100644 (file)
@@ -18,8 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
-#include <math.h>
+#include <fenv_libc.h>
 
 int
 __feraiseexcept (int excepts)
@@ -30,7 +29,7 @@ __feraiseexcept (int excepts)
   tmp = __ieee_get_fp_control ();
 
   /* Set all the bits that were called for.  */
-  tmp |= (excepts & FE_ALL_EXCEPT);
+  tmp |= (excepts & SWCR_STATUS_MASK);
 
   /* And store it back.  */
   __ieee_set_fp_control (tmp);
index eb74def..57531a4 100644 (file)
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 __fesetexceptflag (const fexcept_t *flagp, int excepts)
@@ -29,7 +29,7 @@ __fesetexceptflag (const fexcept_t *flagp, int excepts)
   tmp = __ieee_get_fp_control ();
 
   /* Set all the bits that were called for.  */
-  tmp = (tmp & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT);
+  tmp = (tmp & ~SWCR_STATUS_MASK) | (*flagp & excepts & SWCR_STATUS_MASK);
 
   /* And store it back.  */
   __ieee_set_fp_control (tmp);
index 9ee9dc9..9c006de 100644 (file)
@@ -1,5 +1,5 @@
 /* Test exception in current environment.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>, 1997.
 
@@ -18,7 +18,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <fenv.h>
+#include <fenv_libc.h>
 
 int
 fetestexcept (int excepts)
@@ -28,5 +28,5 @@ fetestexcept (int excepts)
   /* Get current exceptions.  */
   tmp = __ieee_get_fp_control();
 
-  return tmp & excepts & FE_ALL_EXCEPT;
+  return tmp & excepts & SWCR_STATUS_MASK;
 }
index 2de0133..f0d2ace 100644 (file)
@@ -57,6 +57,7 @@
 #endif
 
 #ifndef ELIDE_CODE
+#if !defined _LIBC || !defined GLOB_ONLY_P
 
 #if defined STDC_HEADERS || defined __GNU_LIBRARY__
 # include <stddef.h>
@@ -299,10 +300,15 @@ static
 inline
 #endif
 const char *next_brace_sub __P ((const char *begin));
+
+#endif /* GLOB_ONLY_P */
+
 static int glob_in_dir __P ((const char *pattern, const char *directory,
                             int flags,
                             int (*errfunc) (const char *, int),
                             glob_t *pglob));
+
+#if !defined _LIBC || !defined GLOB_ONLY_P
 static int prefix_array __P ((const char *prefix, char **array, size_t n));
 static int collated_compare __P ((const __ptr_t, const __ptr_t));
 
@@ -352,6 +358,8 @@ next_brace_sub (begin)
   return cp;
 }
 
+#endif /* !GLOB_ONLY_P */
+
 /* Do glob searching for PATTERN, placing results in PGLOB.
    The bits defined above may be set in FLAGS.
    If a directory cannot be opened or read and ERRFUNC is not nil,
@@ -1075,6 +1083,8 @@ glob (pattern, flags, errfunc, pglob)
 }
 
 
+#if !defined _LIBC || !defined GLOB_ONLY_P
+
 /* Free storage allocated in PGLOB by a previous `glob' call.  */
 void
 globfree (pglob)
@@ -1219,6 +1229,8 @@ weak_alias (__glob_pattern_p, glob_pattern_p)
 # endif
 #endif
 
+#endif /* !GLOB_ONLY_P */
+
 
 /* Like `glob', but PATTERN is a final pathname component,
    and matches are searched for in DIRECTORY.
@@ -1327,9 +1339,10 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
                {
                  const char *name;
                  size_t len;
-                 struct dirent *d = ((flags & GLOB_ALTDIRFUNC)
-                                     ? (*pglob->gl_readdir) (stream)
-                                     : readdir ((DIR *) stream));
+                 struct dirent *d =
+                   ((flags & GLOB_ALTDIRFUNC)
+                    ? (struct dirent *)((*pglob->gl_readdir) (stream))
+                    : readdir ((DIR *) stream));
                  if (d == NULL)
                    break;
                  if (! REAL_DIR_ENTRY (d))
index f127cd8..dfecfef 100644 (file)
@@ -1,5 +1,3 @@
-#define DIRENT_TYPE struct dirent64
-#define __getdents64 __no___getdents64_decl
+#define DIRENT_SET_DP_INO(dp, value) \
+  do { (dp)->d_ino = (value); (dp)->__pad = 0; } while (0)
 #include <sysdeps/unix/sysv/linux/getdents.c>
-#undef __getdents64
-weak_alias(__getdents, __getdents64);
diff --git a/sysdeps/unix/sysv/linux/alpha/getdents64.c b/sysdeps/unix/sysv/linux/alpha/getdents64.c
deleted file mode 100644 (file)
index 0df2c8f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* getdents64 is in getdents.c */
diff --git a/sysdeps/unix/sysv/linux/alpha/readdir.c b/sysdeps/unix/sysv/linux/alpha/readdir.c
deleted file mode 100644 (file)
index 300ebb2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#define readdir64 __no_readdir64_decl
-#define __readdir64 __no___readdir64_decl
-#include <sysdeps/unix/readdir.c>
-#undef __readdir64
-strong_alias (__readdir, __readdir64)
-#undef readdir64
-weak_alias (__readdir, readdir64)
diff --git a/sysdeps/unix/sysv/linux/alpha/readdir64.c b/sysdeps/unix/sysv/linux/alpha/readdir64.c
deleted file mode 100644 (file)
index 9796431..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* readdir64 is in readdir.c */
diff --git a/sysdeps/unix/sysv/linux/alpha/readdir64_r.c b/sysdeps/unix/sysv/linux/alpha/readdir64_r.c
deleted file mode 100644 (file)
index b8fe9a3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* readdir64_r is in readdir_r.c */
diff --git a/sysdeps/unix/sysv/linux/alpha/readdir_r.c b/sysdeps/unix/sysv/linux/alpha/readdir_r.c
deleted file mode 100644 (file)
index adb92db..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#define readdir64_r __no_readdir64_r_decl
-#include <sysdeps/unix/readdir_r.c>
-#undef readdir64_r
-weak_alias (__readdir_r, readdir64_r)
index 5498086..aeda9fa 100644 (file)
@@ -17,6 +17,9 @@ libc {
     # a*
     alphasort64;
 
+    # g*
+    glob64;
+
     # New rlimit interface
     getrlimit; setrlimit; getrlimit64;
 
diff --git a/sysdeps/unix/sysv/linux/arm/glob64.c b/sysdeps/unix/sysv/linux/arm/glob64.c
new file mode 100644 (file)
index 0000000..82a9a29
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/glob64.c>
index b7af24b..3015c41 100644 (file)
@@ -19,6 +19,9 @@ libc {
     # a*
     alphasort64;
 
+    # g*
+    glob64;
+
     # New rlimit interface
     getrlimit; setrlimit; getrlimit64;
 
diff --git a/sysdeps/unix/sysv/linux/i386/glob64.c b/sysdeps/unix/sysv/linux/i386/glob64.c
new file mode 100644 (file)
index 0000000..9f32742
--- /dev/null
@@ -0,0 +1,48 @@
+#include <dirent.h>
+#include <glob.h>
+#include <sys/stat.h>
+
+#define dirent dirent64
+#define __readdir(dirp) __readdir64 (dirp)
+
+#define glob_t glob64_t
+#define glob(pattern, flags, errfunc, pglob) \
+  __glob64 (pattern, flags, errfunc, pglob)
+#define globfree(pglob) globfree64 (pglob)
+
+#undef stat
+#define stat stat64
+#undef __stat
+#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf)
+
+#define NO_GLOB_PATTERN_P 1
+
+#include <sysdeps/generic/glob.c>
+
+#include "shlib-compat.h"
+
+versioned_symbol (libc, __glob64, glob64, GLIBC_2_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+int __old_glob64 (__const char *__pattern, int __flags,
+                 int (*__errfunc) (__const char *, int),
+                 glob64_t *__pglob);
+
+#undef dirent
+#define dirent __old_dirent64
+#undef __readdir
+#define __readdir(dirp) __old_readdir64 (dirp)
+#undef glob
+#define glob(pattern, flags, errfunc, pglob) \
+  __old_glob64 (pattern, flags, errfunc, pglob)
+#define glob_in_dir __old_glob_in_dir
+
+#define GLOB_ONLY_P 1
+
+#include <sysdeps/generic/glob.c>
+
+compat_symbol (libc, __old_glob64, glob64, GLIBC_2_1);
+#endif
index e64b2f8..300ebb2 100644 (file)
@@ -1 +1,7 @@
-#include <sysdeps/unix/sysv/linux/alpha/readdir.c>
+#define readdir64 __no_readdir64_decl
+#define __readdir64 __no___readdir64_decl
+#include <sysdeps/unix/readdir.c>
+#undef __readdir64
+strong_alias (__readdir, __readdir64)
+#undef readdir64
+weak_alias (__readdir, readdir64)
index fc5818f..adb92db 100644 (file)
@@ -1 +1,4 @@
-#include <sysdeps/unix/sysv/linux/alpha/readdir_r.c>
+#define readdir64_r __no_readdir64_r_decl
+#include <sysdeps/unix/readdir_r.c>
+#undef readdir64_r
+weak_alias (__readdir_r, readdir64_r)
index 1ea93d7..a2296a9 100644 (file)
@@ -9,6 +9,9 @@ libc {
     # functions used in other libraries
     __xstat64; __fxstat64; __lxstat64;
 
+    # g*
+    glob64;
+
     # New rlimit interface
     getrlimit; setrlimit; getrlimit64; setrlimit64;
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/glob64.c b/sysdeps/unix/sysv/linux/powerpc/glob64.c
new file mode 100644 (file)
index 0000000..82a9a29
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/glob64.c>
index 9341e3b..fa815e9 100644 (file)
@@ -4,11 +4,4 @@
 
 #include <sysdeps/unix/readdir.c>
 
-#include <shlib-compat.h>
-
-versioned_symbol (libc, __readdir64, readdir64, GLIBC_2_2);
-
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__readdir64, __old_readdir64)
-compat_symbol (libc, __old_readdir64, readdir64, GLIBC_2_1);
-#endif
+weak_alias(__readdir64, readdir64)
index 63a6b80..d63680b 100644 (file)
@@ -4,11 +4,4 @@
 
 #include <sysdeps/unix/readdir_r.c>
 
-#include <shlib-compat.h>
-
-versioned_symbol (libc, __readdir64_r, readdir64_r, GLIBC_2_2);
-
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__readdir64_r, __old_readdir64_r)
-compat_symbol (libc, __old_readdir64_r, readdir64_r, GLIBC_2_1);
-#endif
+weak_alias(__readdir64_r, readdir64_r)
index 2448fa2..d7a19f8 100644 (file)
@@ -9,6 +9,9 @@ libc {
     # functions used in other libraries
     __xstat64; __fxstat64; __lxstat64;
 
+    # g*
+    glob64;
+
     # r*
     readdir64; readdir64_r;
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c b/sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c
new file mode 100644 (file)
index 0000000..82a9a29
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/glob64.c>
index e64b2f8..300ebb2 100644 (file)
@@ -1 +1,7 @@
-#include <sysdeps/unix/sysv/linux/alpha/readdir.c>
+#define readdir64 __no_readdir64_decl
+#define __readdir64 __no___readdir64_decl
+#include <sysdeps/unix/readdir.c>
+#undef __readdir64
+strong_alias (__readdir, __readdir64)
+#undef readdir64
+weak_alias (__readdir, readdir64)
index fc5818f..adb92db 100644 (file)
@@ -1 +1,4 @@
-#include <sysdeps/unix/sysv/linux/alpha/readdir_r.c>
+#define readdir64_r __no_readdir64_r_decl
+#include <sysdeps/unix/readdir_r.c>
+#undef readdir64_r
+weak_alias (__readdir_r, readdir64_r)