* sysdeps/posix/readv.c: Include <errno.h>, use __set_errno macro.
authorRoland McGrath <roland@gnu.org>
Sun, 24 Nov 2002 23:56:47 +0000 (23:56 +0000)
committerRoland McGrath <roland@gnu.org>
Sun, 24 Nov 2002 23:56:47 +0000 (23:56 +0000)
* sysdeps/posix/writev.c: Likewise.
From Momchil Velikov <velco@fadata.bg>.

* elf/dl-error.c [! _LIBC_REENTRANT]: Use a static variable instead of
calling *GL(dl_error_catch_tsd) for a thread-local location.
* elf/rtld.c (startup_error_tsd): Conditionalize on [_LIBC_REENTRANT].
(dl_main): Same for GL(dl_error_catch_tsd) initialization.
* elf/dl-tsd.c: Conditionalize contents on [_LIBC_REENTRANT].

* libio/iofflush.c: Add libc_hidden_def.
* libio/iofwrite.c: Likewise.
* sysdeps/generic/sigtimedwait.c: Likewise.
* sysdeps/generic/sigwaitinfo.c: Likewise.
* sysdeps/posix/sigwait.c: Likewise.
Reported by Momchil Velikov <velco@fadata.bg>.

* inet/inet_lnaof.c (inet_lnaof): Change return type to in_addr_t
to match <arpa/inet.h> declaration.
* inet/inet_netof.c (inet_netof): Likewise.
* inet/inet_mkadr.c (inet_makeaddr): Likewise for argument types.
Reported by Momchil Velikov <velco@fadata.bg>.

14 files changed:
ChangeLog
elf/dl-error.c
elf/dl-tsd.c
elf/rtld.c
inet/inet_lnaof.c
inet/inet_mkadr.c
inet/inet_netof.c
libio/iofflush.c
libio/iofwrite.c
sysdeps/generic/sigtimedwait.c
sysdeps/generic/sigwaitinfo.c
sysdeps/posix/readv.c
sysdeps/posix/sigwait.c
sysdeps/posix/writev.c

index 3f8009c381f56faa0522e8ec5261317f49b73a62..9895ffbdab22f376d4090cd441884c21b58ba426 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
 2002-11-24  Roland McGrath  <roland@redhat.com>
 
+       * sysdeps/posix/readv.c: Include <errno.h>, use __set_errno macro.
+       * sysdeps/posix/writev.c: Likewise.
+       From Momchil Velikov <velco@fadata.bg>.
+
+       * elf/dl-error.c [! _LIBC_REENTRANT]: Use a static variable instead of
+       calling *GL(dl_error_catch_tsd) for a thread-local location.
+       * elf/rtld.c (startup_error_tsd): Conditionalize on [_LIBC_REENTRANT].
+       (dl_main): Same for GL(dl_error_catch_tsd) initialization.
+       * elf/dl-tsd.c: Conditionalize contents on [_LIBC_REENTRANT].
+
+       * libio/iofflush.c: Add libc_hidden_def.
+       * libio/iofwrite.c: Likewise.
+       * sysdeps/generic/sigtimedwait.c: Likewise.
+       * sysdeps/generic/sigwaitinfo.c: Likewise.
+       * sysdeps/posix/sigwait.c: Likewise.
+       Reported by Momchil Velikov <velco@fadata.bg>.
+
+       * inet/inet_lnaof.c (inet_lnaof): Change return type to in_addr_t
+       to match <arpa/inet.h> declaration.
+       * inet/inet_netof.c (inet_netof): Likewise.
+       * inet/inet_mkadr.c (inet_makeaddr): Likewise for argument types.
+       Reported by Momchil Velikov <velco@fadata.bg>.
+
        * configure.in: Skip AUTOCONF check under --without-cvs.
        * configure: Regenerated.
 
index e8f2f3e208d704aaccfa2a2ec8bb294da430153a..df91088843e8c63157a6d9f9f704c795de95efa0 100644 (file)
@@ -57,6 +57,12 @@ INTVARDEF(_dl_out_of_memory)
    global variable.  */
 static receiver_fct receiver;
 
+#ifdef _LIBC_REENTRANT
+# define CATCH_HOOK    (*(struct catch **) (*GL(dl_error_catch_tsd)) ())
+#else
+static struct catch *catch_hook;
+# define CATCH_HOOK    catch_hook
+#endif
 
 void
 internal_function
@@ -68,7 +74,7 @@ _dl_signal_error (int errcode, const char *objname, const char *occation,
   if (! errstring)
     errstring = N_("DYNAMIC LINKER BUG!!!");
 
-  lcatch = *((*GL(dl_error_catch_tsd)) ());
+  lcatch = CATCH_HOOK;
   if (objname == NULL)
     objname = "";
   if (lcatch != NULL)
@@ -147,7 +153,7 @@ _dl_catch_error (const char **objname, const char **errstring,
      inefficient.  So we initialize `c' by hand.  */
   c.errstring = NULL;
 
-  void **catchp = (*GL(dl_error_catch_tsd)) ();
+  struct catch **const catchp = &CATCH_HOOK;
   old = *catchp;
   errcode = setjmp (c.env);
   if (__builtin_expect (errcode, 0) == 0)
@@ -173,7 +179,7 @@ void
 internal_function
 _dl_receive_error (receiver_fct fct, void (*operate) (void *), void *args)
 {
-  void **catchp = (*GL(dl_error_catch_tsd)) ();
+  struct catch **const catchp = &CATCH_HOOK;
   struct catch *old_catch;
   receiver_fct old_receiver;
 
index aa290a79611ba39248aabb5141711eb2bb1f5340..c60cd1a7606187996ecf7e1c768da4a0dacc5ff7 100644 (file)
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <ldsodefs.h>
-#include <tls.h>
+#ifdef _LIBC_REENTRANT
 
-#ifndef SHARED
+# include <ldsodefs.h>
+# include <tls.h>
+
+# ifndef SHARED
 
 /* _dl_error_catch_tsd points to this for the single-threaded case.
    It's reset by the thread library for multithreaded programs
 static void ** __attribute__ ((const))
 startup_error_tsd (void)
 {
-#if USE___THREAD
+#  if USE___THREAD
   static __thread void *data;
-#else
+#  else
   static void *data;
-#endif
+#  endif
   return &data;
 }
 void **(*_dl_error_catch_tsd) (void) __attribute__ ((const))
      = &startup_error_tsd;
 
-#elif USE___THREAD
+# elif USE___THREAD
 
 /* libpthread sets _dl_error_catch_tsd to point to this function.
    We define it here instead of in libpthread so that it doesn't
@@ -51,4 +53,6 @@ __libc_dl_error_tsd (void)
   return &data;
 }
 
-#endif
+# endif        /* SHARED */
+
+#endif /* _LIBC_REENTRANT */
index 3a64ca74f7763c32cba5695168d649cfee00ec1f..350cc700b5519ea004332f7717567f5f2b738aec 100644 (file)
@@ -560,6 +560,7 @@ match_version (const char *string, struct link_map *map)
   return 0;
 }
 
+#ifdef _LIBC_REENTRANT
 /* _dl_error_catch_tsd points to this for the single-threaded case.
    It's reset by the thread library for multithreaded programs.  */
 static void ** __attribute__ ((const))
@@ -568,6 +569,7 @@ startup_error_tsd (void)
   static void *data;
   return &data;
 }
+#endif
 
 static const char *library_path;       /* The library search path.  */
 static const char *preloadlist;                /* The list preloaded objects.  */
@@ -598,8 +600,10 @@ dl_main (const ElfW(Phdr) *phdr,
   void *tcbp;
 #endif
 
+#ifdef _LIBC_REENTRANT
   /* Explicit initialization since the reloc would just be more work.  */
   GL(dl_error_catch_tsd) = &startup_error_tsd;
+#endif
 
   /* Process the environment variable which control the behaviour.  */
   process_envvars (&mode);
index 7e934642fd7dca6b5a648981cdfee1f31cf27980..0e115a4420920225333c712b4361a7646f8694af 100644 (file)
@@ -40,7 +40,7 @@ static char sccsid[] = "@(#)inet_lnaof.c      8.1 (Berkeley) 6/4/93";
  * internet address; handles class a/b/c network
  * number formats.
  */
-u_int32_t
+in_addr_t
 inet_lnaof(in)
        struct in_addr in;
 {
index 10f7318074f678adde975e6a431f35791020123e..12c9590fb1e638ac2dda17d869fb265609a6c29a 100644 (file)
@@ -41,7 +41,7 @@ static char sccsid[] = "@(#)inet_makeaddr.c   8.1 (Berkeley) 6/4/93";
  */
 struct in_addr
 inet_makeaddr(net, host)
-       u_int32_t net, host;
+       in_addr_t net, host;
 {
        u_int32_t addr;
 
index aa99e5c486fa41cba910f384de80cf577a7bea1e..e49177a0f4b79bbf11c11f0d03d6d0b7b5097b34 100644 (file)
@@ -39,7 +39,7 @@ static char sccsid[] = "@(#)inet_netof.c      8.1 (Berkeley) 6/4/93";
  * Return the network number from an internet
  * address; handles class a/b/c network #'s.
  */
-u_int32_t
+in_addr_t
 inet_netof(in)
        struct in_addr in;
 {
index 6f12e9b79a14c3835ac1e8fa9f0c9074d62d89ac..d1a76ccd4e44e5cfbe9863fdb68dec670459706d 100644 (file)
@@ -53,5 +53,6 @@ weak_alias (_IO_fflush, fflush)
 
 #ifndef _IO_MTSAFE_IO
 weak_alias (_IO_fflush, fflush_unlocked)
+libc_hidden_weak (fflush_unlocked)
 #endif
 #endif
index 47c166cf22d2d46ffeb65b2b4d08c9978b891fcb..67ed6a1f1252b2c59eb75f6ffe8e04abce77294d 100644 (file)
@@ -58,5 +58,6 @@ weak_alias (_IO_fwrite, fwrite)
 libc_hidden_weak (fwrite)
 # ifndef _IO_MTSAFE_IO
 weak_alias (_IO_fwrite, fwrite_unlocked)
+libc_hidden_weak (fwrite_unlocked)
 # endif
 #endif
index eaf05beae4d6e68a639ce977234df35690cd8029..7b114a3133ebb610cd5f13b9e246b1d9ba2e03fd 100644 (file)
@@ -1,5 +1,5 @@
 /* Implementation of sigtimedwait function from POSIX.1b.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2002 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
@@ -27,6 +27,7 @@ __sigtimedwait (const sigset_t *set, siginfo_t *info,
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__sigtimedwait)
 weak_alias (__sigtimedwait, sigtimedwait)
 
 stub_warning (sigtimedwait)
index ad24efe29b68c5c4b4291bded5e4f725427dfd6e..e0659b024300083392160c25ae16d5796ae2c40c 100644 (file)
@@ -26,6 +26,7 @@ __sigwaitinfo (const sigset_t *set, siginfo_t *info)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__sigwaitinfo)
 weak_alias (__sigwaitinfo, sigwaitinfo)
 
 stub_warning (sigwaitinfo)
index bde57b44fa2106bdc622c9e02fa315e8f81bba2a..f0e78e66629971c628d67ccc71bf03856d3715b2 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdbool.h>
 #include <sys/param.h>
 #include <sys/uio.h>
+#include <errno.h>
 
 /* Read data from file descriptor FD, and put the result in the
    buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
@@ -46,7 +47,7 @@ __libc_readv (int fd, const struct iovec *vector, int count)
       /* Check for ssize_t overflow.  */
       if (SSIZE_MAX - bytes < vector[i].iov_len)
        {
-         errno = EINVAL;
+         __set_errno (EINVAL);
          return -1;
        }
       bytes += vector[i].iov_len;
index 1c549708980c533781fe5cee84188bc364b83161..f2be3225c4170bdb3f805d931f36a2eb585c813e 100644 (file)
@@ -80,6 +80,7 @@ __sigwait (const sigset_t *set, int *sig)
   *sig = was_sig;
   return was_sig == -1 ? -1 : 0;
 }
+libc_hidden_def (__sigwait)
 weak_alias (__sigwait, sigwait)
 
 
index ae5ef1efb4bb01f9518f65658e68e9ca13f9e71e..a347cc2eac87a4f5e84aec54350cd5327a8fafe8 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdbool.h>
 #include <sys/param.h>
 #include <sys/uio.h>
+#include <errno.h>
 
 /* Write data pointed by the buffers described by VECTOR, which
    is a vector of COUNT `struct iovec's, to file descriptor FD.
@@ -46,7 +47,7 @@ __libc_writev (int fd, const struct iovec *vector, int count)
       /* Check for ssize_t overflow.  */
       if (SSIZE_MAX - bytes < vector[i].iov_len)
        {
-         errno = EINVAL;
+         __set_errno (EINVAL);
          return -1;
        }
       bytes += vector[i].iov_len;