mirror of git://sourceware.org/git/glibc.git
Merge branch 'master' of ssh://sourceware.org/git/glibc
Conflicts: ChangeLog
This commit is contained in:
commit
d9db0846f2
13
ChangeLog
13
ChangeLog
|
@ -2,6 +2,19 @@
|
||||||
|
|
||||||
* po/ja.po: Update from translation team.
|
* po/ja.po: Update from translation team.
|
||||||
|
|
||||||
|
2011-10-08 Roland McGrath <roland@hack.frob.com>
|
||||||
|
|
||||||
|
* locale/programs/locarchive.c (prepare_address_space): New function.
|
||||||
|
(create_archive, enlarge_archive, open_archive): Use it.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/x86_64/time.c: Move #include <dl-vdso.h>
|
||||||
|
inside [SHARED], where it is used.
|
||||||
|
|
||||||
|
* nscd/nscd_proto.h: Declare __nscd_setnetgrent.
|
||||||
|
|
||||||
|
* nss/getent.c (netgroup_keys): Remove unused variable.
|
||||||
|
* sysdeps/ieee754/flt-32/s_isinf_nsf.c: Likewise.
|
||||||
|
|
||||||
2011-10-08 Ulrich Drepper <drepper@gmail.com>
|
2011-10-08 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
* include/math.h: Declare __isinf_ns, __isinf_nsf, __isinf_nsl.
|
* include/math.h: Declare __isinf_ns, __isinf_nsf, __isinf_nsl.
|
||||||
|
|
|
@ -74,6 +74,29 @@ static const char *locnames[] =
|
||||||
/* Size of the reserved address space area. */
|
/* Size of the reserved address space area. */
|
||||||
#define RESERVE_MMAP_SIZE 512 * 1024 * 1024
|
#define RESERVE_MMAP_SIZE 512 * 1024 * 1024
|
||||||
|
|
||||||
|
/* To prepare for enlargements of the mmaped area reserve some address
|
||||||
|
space. On some machines, being a file mapping rather than an anonymous
|
||||||
|
mapping affects the address selection. So do this mapping from the
|
||||||
|
actual file, even though it's only a dummy to reserve address space. */
|
||||||
|
static void *
|
||||||
|
prepare_address_space (int fd, size_t total, size_t *reserved, int *xflags)
|
||||||
|
{
|
||||||
|
if (total < RESERVE_MMAP_SIZE)
|
||||||
|
{
|
||||||
|
void *p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_SHARED, fd, 0);
|
||||||
|
if (p != MAP_FAILED)
|
||||||
|
{
|
||||||
|
*reserved = RESERVE_MMAP_SIZE;
|
||||||
|
*xflags = MAP_FIXED;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*reserved = total;
|
||||||
|
*xflags = 0;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
create_archive (const char *archivefname, struct locarhandle *ah)
|
create_archive (const char *archivefname, struct locarhandle *ah)
|
||||||
|
@ -81,7 +104,6 @@ create_archive (const char *archivefname, struct locarhandle *ah)
|
||||||
int fd;
|
int fd;
|
||||||
char fname[strlen (archivefname) + sizeof (".XXXXXX")];
|
char fname[strlen (archivefname) + sizeof (".XXXXXX")];
|
||||||
struct locarhead head;
|
struct locarhead head;
|
||||||
void *p;
|
|
||||||
size_t total;
|
size_t total;
|
||||||
|
|
||||||
strcpy (stpcpy (fname, archivefname), ".XXXXXX");
|
strcpy (stpcpy (fname, archivefname), ".XXXXXX");
|
||||||
|
@ -129,19 +151,9 @@ create_archive (const char *archivefname, struct locarhandle *ah)
|
||||||
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
|
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* To prepare for enlargements of the mmaped area reserve some
|
size_t reserved;
|
||||||
address space. */
|
int xflags;
|
||||||
size_t reserved = RESERVE_MMAP_SIZE;
|
void *p = prepare_address_space (fd, total, &reserved, &xflags);
|
||||||
int xflags = 0;
|
|
||||||
if (total < reserved
|
|
||||||
&& ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
|
||||||
-1, 0)) != MAP_FAILED))
|
|
||||||
xflags = MAP_FIXED;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p = NULL;
|
|
||||||
reserved = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Map the header and all the administration data structures. */
|
/* Map the header and all the administration data structures. */
|
||||||
p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
|
p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
|
||||||
|
@ -297,7 +309,6 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
|
||||||
int fd;
|
int fd;
|
||||||
struct locarhead newhead;
|
struct locarhead newhead;
|
||||||
size_t total;
|
size_t total;
|
||||||
void *p;
|
|
||||||
unsigned int cnt, loccnt;
|
unsigned int cnt, loccnt;
|
||||||
struct namehashent *oldnamehashtab;
|
struct namehashent *oldnamehashtab;
|
||||||
struct locarhandle new_ah;
|
struct locarhandle new_ah;
|
||||||
|
@ -390,19 +401,9 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
|
||||||
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
|
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* To prepare for enlargements of the mmaped area reserve some
|
size_t reserved;
|
||||||
address space. */
|
int xflags;
|
||||||
size_t reserved = RESERVE_MMAP_SIZE;
|
void *p = prepare_address_space (fd, total, &reserved, &xflags);
|
||||||
int xflags = 0;
|
|
||||||
if (total < reserved
|
|
||||||
&& ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
|
||||||
-1, 0)) != MAP_FAILED))
|
|
||||||
xflags = MAP_FIXED;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p = NULL;
|
|
||||||
reserved = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Map the header and all the administration data structures. */
|
/* Map the header and all the administration data structures. */
|
||||||
p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
|
p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
|
||||||
|
@ -605,20 +606,9 @@ open_archive (struct locarhandle *ah, bool readonly)
|
||||||
ah->fd = fd;
|
ah->fd = fd;
|
||||||
ah->mmaped = st.st_size;
|
ah->mmaped = st.st_size;
|
||||||
|
|
||||||
/* To prepare for enlargements of the mmaped area reserve some
|
size_t reserved;
|
||||||
address space. */
|
int xflags;
|
||||||
size_t reserved = RESERVE_MMAP_SIZE;
|
void *p = prepare_address_space (fd, st.st_size, &reserved, &xflags);
|
||||||
int xflags = 0;
|
|
||||||
void *p;
|
|
||||||
if (st.st_size < reserved
|
|
||||||
&& ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
|
||||||
-1, 0)) != MAP_FAILED))
|
|
||||||
xflags = MAP_FIXED;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p = NULL;
|
|
||||||
reserved = st.st_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Map the entire file. We might need to compare the category data
|
/* Map the entire file. We might need to compare the category data
|
||||||
in the file with the newly added data. */
|
in the file with the newly added data. */
|
||||||
|
|
|
@ -74,5 +74,7 @@ extern int __nscd_getservbyport_r (int port, const char *proto,
|
||||||
size_t buflen, struct servent **result);
|
size_t buflen, struct servent **result);
|
||||||
extern int __nscd_innetgr (const char *netgroup, const char *host,
|
extern int __nscd_innetgr (const char *netgroup, const char *host,
|
||||||
const char *user, const char *domain);
|
const char *user, const char *domain);
|
||||||
|
extern int __nscd_setnetgrent (const char *group, struct __netgrent *datap);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NSCD_PROTO_H */
|
#endif /* _NSCD_PROTO_H */
|
||||||
|
|
|
@ -472,7 +472,6 @@ static int
|
||||||
netgroup_keys (int number, char *key[])
|
netgroup_keys (int number, char *key[])
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
int i;
|
|
||||||
|
|
||||||
if (number == 0)
|
if (number == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
int
|
int
|
||||||
__isinf_nsf (float x)
|
__isinf_nsf (float x)
|
||||||
{
|
{
|
||||||
int32_t ix,t;
|
int32_t ix;
|
||||||
GET_FLOAT_WORD(ix,x);
|
GET_FLOAT_WORD(ix,x);
|
||||||
return (ix & 0x7fffffff) == 0x7f800000;
|
return (ix & 0x7fffffff) == 0x7f800000;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2001,02, 2003, 2011 Free Software Foundation, Inc.
|
/* Copyright (C) 2001,02,2003,2011 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
|
||||||
|
@ -16,13 +16,11 @@
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#ifdef SHARED
|
||||||
#include <dl-vdso.h>
|
#include <dl-vdso.h>
|
||||||
|
|
||||||
|
|
||||||
#define VSYSCALL_ADDR_vtime 0xffffffffff600400
|
#define VSYSCALL_ADDR_vtime 0xffffffffff600400
|
||||||
|
|
||||||
|
|
||||||
#ifdef SHARED
|
|
||||||
void *time_ifunc (void) __asm__ ("time");
|
void *time_ifunc (void) __asm__ ("time");
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
@ -34,7 +32,9 @@ time_ifunc (void)
|
||||||
return _dl_vdso_vsym ("time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime;
|
return _dl_vdso_vsym ("time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime;
|
||||||
}
|
}
|
||||||
__asm (".type time, %gnu_indirect_function");
|
__asm (".type time, %gnu_indirect_function");
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
# include <sysdep.h>
|
# include <sysdep.h>
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ time (time_t *t)
|
||||||
INTERNAL_SYSCALL_DECL (err);
|
INTERNAL_SYSCALL_DECL (err);
|
||||||
return INTERNAL_SYSCALL (time, err, 1, t);
|
return INTERNAL_SYSCALL (time, err, 1, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
strong_alias (time, __GI_time)
|
strong_alias (time, __GI_time)
|
||||||
|
|
Loading…
Reference in New Issue