mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Update.
1999-07-09 Cristian Gafton <gafton@redhat.com> * nscd/nscd_gethst_r.c (nscd_gethst_r): Make sure resultbuf->h_addr_list addresses are correctly aligned. * sysdeps/i386/bits/string.h (__memcpy_c): Help some stupid old compilers. (__memset_cc): Likewise.
This commit is contained in:
parent
a828c2f533
commit
c2fa5b5a4f
@ -1,5 +1,14 @@
|
||||
1999-07-09 Cristian Gafton <gafton@redhat.com>
|
||||
|
||||
* nscd/nscd_gethst_r.c (nscd_gethst_r): Make sure
|
||||
resultbuf->h_addr_list addresses are correctly aligned.
|
||||
|
||||
1999-07-09 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/i386/bits/string.h (__memcpy_c): Help some stupid old
|
||||
compilers.
|
||||
(__memset_cc): Likewise.
|
||||
|
||||
* sysdeps/generic/libc-start.c: For SUID binaries check whether
|
||||
the standard file descriptors are open.
|
||||
Reported by Chris Evans <chris@ferret.lmh.ox.ac.uk>.
|
||||
|
@ -60,6 +60,7 @@ libpthread {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1 GLIBC_2.0
|
||||
GLIBC_2.1.1 GLIBC_2.1
|
||||
GLIBC_2.1.2 GLIBC_2.1.1
|
||||
}
|
||||
libresolv {
|
||||
GLIBC_2.0
|
||||
|
@ -20,4 +20,8 @@ libc {
|
||||
# p*
|
||||
putgrent;
|
||||
}
|
||||
GLIBC_2.1.2 {
|
||||
# g*
|
||||
getgrent_r; getgrgid_r; getgrnam_r;
|
||||
}
|
||||
}
|
||||
|
@ -54,4 +54,12 @@ libc {
|
||||
# i*
|
||||
if_freenameindex; if_indextoname; if_nameindex; if_nametoindex;
|
||||
}
|
||||
GLIBC_2.1.2 {
|
||||
# g*
|
||||
getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
|
||||
gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
|
||||
getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
|
||||
getprotoent_r; getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
|
||||
getservbyname_r;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,17 @@
|
||||
1999-07-09 Cristian Gafton <gafton@redhat.com>
|
||||
|
||||
* Makefile (libpthread-routines): Add oldsemaphore routine.
|
||||
* Versions: Add sem_destroy; sem_getvalue; sem_init; sem_post;
|
||||
sem_trywait; sem_wait; to GLIBC_2.1.
|
||||
* oldsemaphore.c: New file.
|
||||
* semaphore.c: Add default_symbol_versions for the changed functions.
|
||||
(__new_sem_init): Rename from sem_init.
|
||||
(__new_sem_post): Rename from sem_post.
|
||||
(__new_sem_wait): Rename from sem_wait.
|
||||
(__new_sem_trywait): Rename from sem_trywait.
|
||||
(__new_sem_getvalue): Rename from sem_getvalue.
|
||||
(__new_sem_destroy): Rename from sem_destroy.
|
||||
|
||||
1999-06-23 Robey Pointer <robey@netscape.com>
|
||||
|
||||
* internals.h: Added p_nextlock entry to separate queueing for a
|
||||
|
@ -34,7 +34,8 @@ extra-libs-others := $(extra-libs)
|
||||
|
||||
libpthread-routines := attr cancel condvar join manager mutex ptfork \
|
||||
ptlongjmp pthread signals specific errno lockfile \
|
||||
semaphore spinlock wrapsyscall rwlock pt-machine
|
||||
semaphore spinlock wrapsyscall rwlock pt-machine \
|
||||
oldsemaphore
|
||||
|
||||
vpath %.c Examples
|
||||
tests = ex1 ex2 ex3 ex4 ex5 ex6
|
||||
|
@ -97,6 +97,8 @@ libpthread {
|
||||
|
||||
pthread_mutexattr_gettype; pthread_mutexattr_settype;
|
||||
|
||||
sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
|
||||
|
||||
# helper functions
|
||||
__libc_current_sigrtmin; __libc_current_sigrtmax;
|
||||
__libc_allocate_rtsig;
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "restart.h"
|
||||
#include "queue.h"
|
||||
|
||||
int sem_init(sem_t *sem, int pshared, unsigned int value)
|
||||
int __new_sem_init(sem_t *sem, int pshared, unsigned int value)
|
||||
{
|
||||
if (value > SEM_VALUE_MAX) {
|
||||
errno = EINVAL;
|
||||
@ -38,7 +38,7 @@ int sem_init(sem_t *sem, int pshared, unsigned int value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sem_wait(sem_t * sem)
|
||||
int __new_sem_wait(sem_t * sem)
|
||||
{
|
||||
volatile pthread_descr self = thread_self();
|
||||
|
||||
@ -65,7 +65,7 @@ int sem_wait(sem_t * sem)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sem_trywait(sem_t * sem)
|
||||
int __new_sem_trywait(sem_t * sem)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@ -81,7 +81,7 @@ int sem_trywait(sem_t * sem)
|
||||
return retval;
|
||||
}
|
||||
|
||||
int sem_post(sem_t * sem)
|
||||
int __new_sem_post(sem_t * sem)
|
||||
{
|
||||
pthread_descr self = thread_self();
|
||||
pthread_descr th;
|
||||
@ -120,13 +120,13 @@ int sem_post(sem_t * sem)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sem_getvalue(sem_t * sem, int * sval)
|
||||
int __new_sem_getvalue(sem_t * sem, int * sval)
|
||||
{
|
||||
*sval = sem->__sem_value;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sem_destroy(sem_t * sem)
|
||||
int __new_sem_destroy(sem_t * sem)
|
||||
{
|
||||
if (sem->__sem_waiting != NULL) {
|
||||
__set_errno (EBUSY);
|
||||
@ -152,3 +152,22 @@ int sem_unlink(const char *name)
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined PIC && DO_VERSIONING
|
||||
default_symbol_version (__new_sem_init, sem_init, GLIBC_2.1);
|
||||
default_symbol_version (__new_sem_wait, sem_wait, GLIBC_2.1);
|
||||
default_symbol_version (__new_sem_trywait, sem_trywait, GLIBC_2.1);
|
||||
default_symbol_version (__new_sem_post, sem_post, GLIBC_2.1);
|
||||
default_symbol_version (__new_sem_getvalue, sem_getvalue, GLIBC_2.1);
|
||||
default_symbol_version (__new_sem_destroy, sem_destroy, GLIBC_2.1);
|
||||
#else
|
||||
# ifdef weak_alias
|
||||
weak_alias (__new_sem_init, sem_init)
|
||||
weak_alias (__new_sem_wait, sem_wait)
|
||||
weak_alias (__new_sem_trywait, sem_trywait)
|
||||
weak_alias (__new_sem_post, sem_post)
|
||||
weak_alias (__new_sem_getvalue, sem_getvalue)
|
||||
weak_alias (__new_sem_destroy, sem_destroy)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
@ -214,6 +214,12 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
|
||||
+ hst_resp.h_aliases_cnt * sizeof (size_t));
|
||||
|
||||
n = 2;
|
||||
|
||||
/* These things must be aligned or ntohl will cause havoc. */
|
||||
align = ((__alignof__ (char *) - (cp - ((char *) 0)))
|
||||
& (__alignof__ (char *) - 1));
|
||||
cp += align;
|
||||
|
||||
if (type == GETHOSTBYADDR || type == GETHOSTBYNAME)
|
||||
{
|
||||
vec[2].iov_base = cp;
|
||||
|
@ -208,5 +208,32 @@ done:
|
||||
return status == NSS_STATUS_SUCCESS ? 0 : errno;
|
||||
}
|
||||
|
||||
#if defined SHARED && DO_VERSIONING
|
||||
#define OLD(name) OLD1 (name)
|
||||
#define OLD1(name) __old_##name
|
||||
|
||||
int
|
||||
OLD (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
|
||||
size_t buflen, LOOKUP_TYPE **result H_ERRNO_PARM)
|
||||
{
|
||||
int ret = INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, resbuf, buffer,
|
||||
buflen, result H_ERRNO_VAR);
|
||||
|
||||
if (ret != 0)
|
||||
ret = -1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define do_symbol_version(real, name, version) \
|
||||
symbol_version(real, name, version)
|
||||
do_symbol_version(OLD (REENTRANT_NAME), REENTRANT_NAME, GLIBC_2.0);
|
||||
|
||||
#define do_default_symbol_version(real, name, version) \
|
||||
default_symbol_version(real, name, version)
|
||||
do_default_symbol_version(INTERNAL (REENTRANT_NAME), REENTRANT_NAME,
|
||||
GLIBC_2.1.2);
|
||||
#else
|
||||
#define do_weak_alias(n1, n2) weak_alias (n1, (n2))
|
||||
do_weak_alias (INTERNAL (REENTRANT_NAME), REENTRANT_NAME)
|
||||
#endif
|
||||
|
@ -290,5 +290,33 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
|
||||
*result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
|
||||
return status == NSS_STATUS_SUCCESS ? 0 : errno;
|
||||
}
|
||||
#if defined SHARED && DO_VERSIONING
|
||||
#define OLD(name) OLD1 (name)
|
||||
#define OLD1(name) __old_##name
|
||||
|
||||
int
|
||||
OLD (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
|
||||
LOOKUP_TYPE **result H_ERRNO_PARM)
|
||||
{
|
||||
int ret = INTERNAL (REENTRANT_GETNAME) (resbuf, buffer, buflen,
|
||||
result H_ERRNO_VAR);
|
||||
|
||||
if (ret != 0)
|
||||
ret = -1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define do_symbol_version(real, name, version) \
|
||||
symbol_version(real, name, version)
|
||||
do_symbol_version(OLD (REENTRANT_GETNAME), REENTRANT_GETNAME,
|
||||
GLIBC_2.0);
|
||||
|
||||
#define do_default_symbol_version(real, name, version) \
|
||||
default_symbol_version(real, name, version)
|
||||
do_default_symbol_version(INTERNAL (REENTRANT_GETNAME),
|
||||
REENTRANT_GETNAME, GLIBC_2.1.2);
|
||||
#else
|
||||
#define do_weak_alias(n1, n2) weak_alias (n1, n2)
|
||||
do_weak_alias (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME)
|
||||
#endif
|
||||
|
@ -12,4 +12,8 @@ libc {
|
||||
# p*
|
||||
putpwent; setpwent;
|
||||
}
|
||||
GLIBC_2.1.2 {
|
||||
# g*
|
||||
getpwent_r; getpwuid_r;
|
||||
}
|
||||
}
|
||||
|
@ -24,4 +24,8 @@ libc {
|
||||
# u*
|
||||
ulckpwdf;
|
||||
}
|
||||
GLIBC_2.1.2 {
|
||||
# g*
|
||||
getspent_r; getspnam_r;
|
||||
}
|
||||
}
|
||||
|
@ -122,17 +122,18 @@ __memcpy_c (void *__dest, __const void *__src, size_t __n)
|
||||
{
|
||||
case 0:
|
||||
__COMMON_CODE ("");
|
||||
return __dest;
|
||||
break;
|
||||
case 1:
|
||||
__COMMON_CODE ("\n\tmovsb");
|
||||
return __dest;
|
||||
break;
|
||||
case 2:
|
||||
__COMMON_CODE ("\n\tmovsw");
|
||||
return __dest;
|
||||
break;
|
||||
case 3:
|
||||
__COMMON_CODE ("\n\tmovsw\n\tmovsb");
|
||||
return __dest;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return __dest;
|
||||
#undef __COMMON_CODE
|
||||
}
|
||||
|
||||
@ -214,17 +215,18 @@ __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
|
||||
{
|
||||
case 0:
|
||||
__COMMON_CODE ("");
|
||||
return __s;
|
||||
break;
|
||||
case 1:
|
||||
__COMMON_CODE ("\n\tstosb");
|
||||
return __s;
|
||||
break;
|
||||
case 2:
|
||||
__COMMON_CODE ("\n\tstosw");
|
||||
return __s;
|
||||
break;
|
||||
case 3:
|
||||
__COMMON_CODE ("\n\tstosw\n\tstosb");
|
||||
return __s;
|
||||
break;
|
||||
}
|
||||
return __s;
|
||||
#undef __COMMON_CODE
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user