* 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>.
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.
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
if (! errstring)
errstring = N_("DYNAMIC LINKER BUG!!!");
- lcatch = *((*GL(dl_error_catch_tsd)) ());
+ lcatch = CATCH_HOOK;
if (objname == NULL)
objname = "";
if (lcatch != NULL)
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)
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;
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
return &data;
}
-#endif
+# endif /* SHARED */
+
+#endif /* _LIBC_REENTRANT */
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))
static void *data;
return &data;
}
+#endif
static const char *library_path; /* The library search path. */
static const char *preloadlist; /* The list preloaded objects. */
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);
* internet address; handles class a/b/c network
* number formats.
*/
-u_int32_t
+in_addr_t
inet_lnaof(in)
struct in_addr in;
{
*/
struct in_addr
inet_makeaddr(net, host)
- u_int32_t net, host;
+ in_addr_t net, host;
{
u_int32_t addr;
* 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;
{
#ifndef _IO_MTSAFE_IO
weak_alias (_IO_fflush, fflush_unlocked)
+libc_hidden_weak (fflush_unlocked)
#endif
#endif
libc_hidden_weak (fwrite)
# ifndef _IO_MTSAFE_IO
weak_alias (_IO_fwrite, fwrite_unlocked)
+libc_hidden_weak (fwrite_unlocked)
# endif
#endif
/* 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
__set_errno (ENOSYS);
return -1;
}
+libc_hidden_def (__sigtimedwait)
weak_alias (__sigtimedwait, sigtimedwait)
stub_warning (sigtimedwait)
__set_errno (ENOSYS);
return -1;
}
+libc_hidden_def (__sigwaitinfo)
weak_alias (__sigwaitinfo, sigwaitinfo)
stub_warning (sigwaitinfo)
#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.
/* 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;
*sig = was_sig;
return was_sig == -1 ? -1 : 0;
}
+libc_hidden_def (__sigwait)
weak_alias (__sigwait, sigwait)
#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.
/* 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;