mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-05 19:35:52 +03:00
Update.
2000-09-09 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname before trying to read /proc. Patch by Matt Wilson <msw@redhat.com>. * include/sys/utsname.h: Declare __uname. * sysdeps/generic/uname.c: Make uname a weak alias of __uname. * sysdeps/mach/hurd/uname.c: Likewise. * sysdeps/unix/syscalls.list: Likewise. * iconv/gconv_dl.c (do_release_shlib): Rewrite condition for unloading a bit. 2000-09-08 Ulrich Drepper <drepper@redhat.com> * posix/getopt.c (_getopt_internal): When long_only is set always recognize conflicts just like before. 2000-09-08 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> * sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable.
This commit is contained in:
22
ChangeLog
22
ChangeLog
@@ -1,3 +1,25 @@
|
|||||||
|
2000-09-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname
|
||||||
|
before trying to read /proc.
|
||||||
|
Patch by Matt Wilson <msw@redhat.com>.
|
||||||
|
* include/sys/utsname.h: Declare __uname.
|
||||||
|
* sysdeps/generic/uname.c: Make uname a weak alias of __uname.
|
||||||
|
* sysdeps/mach/hurd/uname.c: Likewise.
|
||||||
|
* sysdeps/unix/syscalls.list: Likewise.
|
||||||
|
|
||||||
|
* iconv/gconv_dl.c (do_release_shlib): Rewrite condition for
|
||||||
|
unloading a bit.
|
||||||
|
|
||||||
|
2000-09-08 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* posix/getopt.c (_getopt_internal): When long_only is set always
|
||||||
|
recognize conflicts just like before.
|
||||||
|
|
||||||
|
2000-09-08 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||||
|
|
||||||
|
* sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable.
|
||||||
|
|
||||||
2000-09-08 Greg McGary <greg@mcgary.org>
|
2000-09-08 Greg McGary <greg@mcgary.org>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/syscalls.list (mincore): Fix arg signature.
|
* sysdeps/unix/sysv/linux/syscalls.list (mincore): Fix arg signature.
|
||||||
|
@@ -110,6 +110,7 @@ __gconv_find_shlib (const char *name)
|
|||||||
{
|
{
|
||||||
if (found->counter < -TRIES_BEFORE_UNLOAD)
|
if (found->counter < -TRIES_BEFORE_UNLOAD)
|
||||||
{
|
{
|
||||||
|
assert (found->handle == NULL);
|
||||||
found->handle = __libc_dlopen (found->name);
|
found->handle = __libc_dlopen (found->name);
|
||||||
if (found->handle != NULL)
|
if (found->handle != NULL)
|
||||||
{
|
{
|
||||||
@@ -162,16 +163,12 @@ do_release_shlib (const void *nodep, VISIT value, int level)
|
|||||||
assert (obj->counter > 0);
|
assert (obj->counter > 0);
|
||||||
--obj->counter;
|
--obj->counter;
|
||||||
}
|
}
|
||||||
else if (obj->counter <= 0)
|
else if (obj->counter <= 0 && obj->counter >= -TRIES_BEFORE_UNLOAD
|
||||||
|
&& --obj->counter < -TRIES_BEFORE_UNLOAD && obj->handle != NULL)
|
||||||
{
|
{
|
||||||
if (obj->counter >= -TRIES_BEFORE_UNLOAD)
|
/* Unload the shared object. */
|
||||||
--obj->counter;
|
__libc_dlclose (obj->handle);
|
||||||
if (obj->counter < -TRIES_BEFORE_UNLOAD && obj->handle != NULL)
|
obj->handle = NULL;
|
||||||
{
|
|
||||||
/* Unload the shared object. */
|
|
||||||
__libc_dlclose (obj->handle);
|
|
||||||
obj->handle = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1 +1,5 @@
|
|||||||
|
#ifndef _SYS_UTSNAME_H
|
||||||
#include <posix/sys/utsname.h>
|
#include <posix/sys/utsname.h>
|
||||||
|
|
||||||
|
extern int __uname (struct utsname *__name);
|
||||||
|
#endif
|
||||||
|
@@ -673,7 +673,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
|||||||
pfound = p;
|
pfound = p;
|
||||||
indfound = option_index;
|
indfound = option_index;
|
||||||
}
|
}
|
||||||
else if (pfound->has_arg != p->has_arg
|
else if (long_only
|
||||||
|
|| pfound->has_arg != p->has_arg
|
||||||
|| pfound->flag != p->flag
|
|| pfound->flag != p->flag
|
||||||
|| pfound->val != p->val)
|
|| pfound->val != p->val)
|
||||||
/* Second or later nonexact match found. */
|
/* Second or later nonexact match found. */
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 1992, 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
/* Put information about the system in NAME. */
|
/* Put information about the system in NAME. */
|
||||||
int
|
int
|
||||||
uname (name)
|
__uname (name)
|
||||||
struct utsname *name;
|
struct utsname *name;
|
||||||
{
|
{
|
||||||
int save;
|
int save;
|
||||||
@@ -61,3 +61,4 @@ uname (name)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
weak_alias (__uname, uname)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1992, 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1992,1993,1994,1996,1997,2000 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
#include <hurd/startup.h>
|
#include <hurd/startup.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
uname (struct utsname *uname)
|
__uname (struct utsname *uname)
|
||||||
{
|
{
|
||||||
error_t err;
|
error_t err;
|
||||||
|
|
||||||
@@ -43,3 +43,4 @@ uname (struct utsname *uname)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
weak_alias (__uname, uname)
|
||||||
|
@@ -58,7 +58,7 @@ sys_fstat fxstat fstat i:ip __syscall_fstat
|
|||||||
sys_mknod xmknod mknod i:sii __syscall_mknod
|
sys_mknod xmknod mknod i:sii __syscall_mknod
|
||||||
sys_stat xstat stat i:sp __syscall_stat
|
sys_stat xstat stat i:sp __syscall_stat
|
||||||
umask - umask i:i __umask umask
|
umask - umask i:i __umask umask
|
||||||
uname - uname i:p uname
|
uname - uname i:p __uname uname
|
||||||
unlink - unlink i:s __unlink unlink
|
unlink - unlink i:s __unlink unlink
|
||||||
utimes - utimes i:sp __utimes utimes
|
utimes - utimes i:sp __utimes utimes
|
||||||
write - write i:ibn __libc_write __write write
|
write - write i:ibn __libc_write __write write
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
#include "kernel-features.h"
|
#include "kernel-features.h"
|
||||||
|
|
||||||
#ifndef MIN
|
#ifndef MIN
|
||||||
@@ -61,16 +62,25 @@ dl_fatal (const char *str)
|
|||||||
sizeof (sysctl_args) / sizeof (sysctl_args[0]), \
|
sizeof (sysctl_args) / sizeof (sysctl_args[0]), \
|
||||||
buf, &reslen, NULL, 0) < 0) \
|
buf, &reslen, NULL, 0) < 0) \
|
||||||
{ \
|
{ \
|
||||||
/* This was not successful. Now try reading the /proc \
|
/* This didn't work. Next try the uname syscall */ \
|
||||||
filesystem. */ \
|
struct utsname uts; \
|
||||||
int fd = __open ("/proc/sys/kernel/osrelease", O_RDONLY); \
|
if (__uname (&uts)) \
|
||||||
if (fd == -1 \
|
{ \
|
||||||
|| (reslen = __read (fd, buf, sizeof (buf))) <= 0) \
|
/* This was not successful. Now try reading the /proc \
|
||||||
/* This also didn't work. We give up since we cannot \
|
filesystem. */ \
|
||||||
make sure the library can actually work. */ \
|
int fd = __open ("/proc/sys/kernel/osrelease", O_RDONLY); \
|
||||||
FATAL ("FATAL: cannot determine library version\n"); \
|
if (fd == -1 \
|
||||||
\
|
|| (reslen = __read (fd, buf, sizeof (buf))) <= 0) \
|
||||||
__close (fd); \
|
/* This also didn't work. We give up since we cannot \
|
||||||
|
make sure the library can actually work. */ \
|
||||||
|
FATAL ("FATAL: cannot determine library version\n"); \
|
||||||
|
__close (fd); \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
strncpy (buf, uts.release, sizeof (buf)); \
|
||||||
|
reslen = strlen (uts.release); \
|
||||||
|
} \
|
||||||
} \
|
} \
|
||||||
buf[MIN (reslen, sizeof (buf) - 1)] = '\0'; \
|
buf[MIN (reslen, sizeof (buf) - 1)] = '\0'; \
|
||||||
\
|
\
|
||||||
|
Reference in New Issue
Block a user