Skip to content

Commit

Permalink
Merge remote branch 'origin/release/2.12/master' into fedora/2.12/master
Browse files Browse the repository at this point in the history
Andreas Schwab committed Jun 1, 2010
2 parents 338fbf6 + 6f8d0c6 commit aaad868
Showing 26 changed files with 15,628 additions and 15,414 deletions.
15,373 changes: 39 additions & 15,334 deletions ChangeLog

Large diffs are not rendered by default.

15,370 changes: 15,370 additions & 0 deletions ChangeLog.17

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions INSTALL
Original file line number Diff line number Diff line change
@@ -298,16 +298,16 @@ build the GNU C library:

* GCC 3.4 or newer, GCC 4.1 recommended

The GNU C library can only be compiled with the GNU C compiler
family. For the 2.3 releases, GCC 3.2 or higher is required; GCC
3.4 is the compiler we advise to use for 2.3 versions. For the
2.4 release, GCC 3.4 or higher is required; as of this writing,
GCC 4.1 is the compiler we advise to use for current versions. On
certain machines including `powerpc64', compilers prior to GCC 4.0
have bugs that prevent them compiling the C library code in the
2.4 release. On other machines, GCC 4.1 is required to build the C
library with support for the correct `long double' type format;
these include `powerpc' (32 bit), `s390' and `s390x'.
For the 2.4 release or later, GCC 3.4 or higher is required; as of
this writing, GCC 4.4 is the compiler we advise to use for current
versions. On certain machines including `powerpc64', compilers
prior to GCC 4.0 have bugs that prevent them compiling the C
library code in the 2.4 release. On other machines, GCC 4.1 is
required to build the C library with support for the correct `long
double' type format; these include `powerpc' (32 bit), `s390' and
`s390x'. For other architectures special compiler-provided
headers are needed (like `cpuid.h' on x86) which only come with
later compiler versions.

You can use whatever compiler you like to compile programs that
use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in
2 changes: 1 addition & 1 deletion NEWS
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ Version 2.12
11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538
11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571

* New interfaces: pthread_getname_np, pthread_setname_np

12 changes: 7 additions & 5 deletions elf/dl-runtime.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* On-demand PLT fixup for shared objects.
Copyright (C) 1995-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (C) 1995-2009, 2010 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
@@ -144,7 +144,8 @@ _dl_fixup (
/* And now perhaps the relocation addend. */
value = elf_machine_plt_value (l, reloc, value);

if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
if (sym != NULL
&& __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();

/* Finally, fix up the plt itself. */
@@ -231,8 +232,9 @@ _dl_profile_fixup (
? LOOKUP_VALUE_ADDRESS (result)
+ defsym->st_value : 0);

if (__builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
== STT_GNU_IFUNC, 0))
if (defsym != NULL
&& __builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
== STT_GNU_IFUNC, 0))
value = ((DL_FIXUP_VALUE_TYPE (*) (void))
DL_FIXUP_VALUE_ADDR (value)) ();
}
@@ -369,7 +371,7 @@ _dl_profile_fixup (
struct audit_ifaces *afct = GLRO(dl_audit);
for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
{
if (afct->ARCH_LA_PLTENTER != NULL
if (afct->ARCH_LA_PLTENTER != NULL
&& (reloc_result->enterexit
& (LA_SYMB_NOPLTENTER << (2 * (cnt + 1)))) == 0)
{
2 changes: 1 addition & 1 deletion elf/ldconfig.c
Original file line number Diff line number Diff line change
@@ -1370,7 +1370,7 @@ main (int argc, char **argv)
add_arch_dirs (config_file);
}

char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
if (opt_chroot)
{
aux_cache_file = chroot_canon (opt_chroot, aux_cache_file);
9 changes: 9 additions & 0 deletions localedata/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
2010-05-17 Andreas Schwab <schwab@redhat.com>

* locales/es_CR (LC_ADDRESS): Fix character names in lang_ab.

2010-05-04 Andreas Schwab <schwab@redhat.com>

* SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif
locale.

2010-05-03 Ulrich Drepper <drepper@redhat.com>

[BZ #11520]
2 changes: 1 addition & 1 deletion localedata/SUPPORTED
Original file line number Diff line number Diff line change
@@ -392,7 +392,7 @@ tr_TR.UTF-8/UTF-8 \
tr_TR/ISO-8859-9 \
ts_ZA/UTF-8 \
tt_RU.UTF-8/UTF-8 \
tt_RU@iqtelif.UTF-8/UTF-8 \
tt_RU.UTF-8@iqtelif/UTF-8 \
ug_CN/UTF-8 \
uk_UA.UTF-8/UTF-8 \
uk_UA/KOI8-U \
2 changes: 1 addition & 1 deletion localedata/locales/es_CR
Original file line number Diff line number Diff line change
@@ -157,7 +157,7 @@ country_post "<U0043><U0052>"
country_car "<U0043><U0052>"
country_isbn "9930,9977,9968"
lang_name "<U0045><U0073><U0070><U0061><U00F1><U006F><U006C>"
lang_ab "<0065><0073>"
lang_ab "<U0065><U0073>"
lang_term "<U0073><U0070><U0061>"
country_ab2 "<U0043><U0052>"
country_ab3 "<U0043><U0052><U0049>"
15 changes: 9 additions & 6 deletions malloc/malloc.c
Original file line number Diff line number Diff line change
@@ -4859,6 +4859,7 @@ _int_free(mstate av, mchunkptr p)
#ifdef ATOMIC_FASTBINS
mchunkptr fd;
mchunkptr old = *fb;
unsigned int old_idx = ~0u;
do
{
/* Another simple check: make sure the top of the bin is not the
@@ -4868,15 +4869,17 @@ _int_free(mstate av, mchunkptr p)
errstr = "double free or corruption (fasttop)";
goto errout;
}
if (old != NULL
&& __builtin_expect (fastbin_index(chunksize(old)) != idx, 0))
{
errstr = "invalid fastbin entry (free)";
goto errout;
}
if (old != NULL)
old_idx = fastbin_index(chunksize(old));
p->fd = fd = old;
}
while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd);

if (fd != NULL && __builtin_expect (old_idx != idx, 0))
{
errstr = "invalid fastbin entry (free)";
goto errout;
}
#else
/* Another simple check: make sure the top of the bin is not the
record we are going to add (i.e., double free). */
12 changes: 11 additions & 1 deletion nss/getent.c
Original file line number Diff line number Diff line change
@@ -31,6 +31,7 @@
#include <netdb.h>
#include <pwd.h>
#include <shadow.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -56,6 +57,7 @@ static const char args_doc[] = N_("database [key ...]");
static const struct argp_option args_options[] =
{
{ "service", 's', "CONFIG", 0, N_("Service configuration to be used") },
{ "no-idn", 'i', NULL, 0, N_("disable IDN encoding") },
{ NULL, 0, NULL, 0, NULL },
};

@@ -74,6 +76,9 @@ static struct argp argp =
args_options, parse_option, args_doc, doc, NULL, more_help
};

/* Additional getaddrinfo flags for IDN encoding. */
static int idn_flags = AI_IDN | AI_CANONIDN;

/* Print the version information. */
static void
print_version (FILE *stream, struct argp_state *state)
@@ -377,7 +382,8 @@ ahosts_keys_int (int af, int xflags, int number, char *key[])

struct addrinfo hint;
memset (&hint, '\0', sizeof (hint));
hint.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG | AI_CANONNAME | xflags;
hint.ai_flags = (AI_V4MAPPED | AI_ADDRCONFIG | AI_CANONNAME
| idn_flags | xflags);
hint.ai_family = af;

for (i = 0; i < number; ++i)
@@ -861,6 +867,10 @@ parse_option (int key, char *arg, struct argp_state *state)
}
break;

case 'i':
idn_flags = 0;
break;

default:
return ARGP_ERR_UNKNOWN;
}
2 changes: 1 addition & 1 deletion posix/regexec.c
Original file line number Diff line number Diff line change
@@ -4031,7 +4031,7 @@ find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
/* Skip the collation sequence value. */
idx += sizeof (uint32_t);
/* Skip the wide char sequence of the collating element. */
idx = idx + sizeof (uint32_t) * (extra[idx] + 1);
idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1);
/* If we found the entry, return the sequence value. */
if (found)
return *(uint32_t *) (extra + idx);
1 change: 1 addition & 0 deletions sunrpc/clnt_tcp.c
Original file line number Diff line number Diff line change
@@ -399,6 +399,7 @@ clnttcp_control (CLIENT *cl, int request, char *info)
/* This will set the xid of the NEXT call */
*(u_long *)ct->ct_mcall = htonl (*(u_long *)info - 1);
/* decrement by 1 as clnttcp_call() increments once */
break;
case CLGET_VERS:
/*
* This RELIES on the information that, in the call body,
1 change: 1 addition & 0 deletions sunrpc/clnt_udp.c
Original file line number Diff line number Diff line change
@@ -582,6 +582,7 @@ clntudp_control (CLIENT *cl, int request, char *info)
/* This will set the xid of the NEXT call */
*(u_long *)cu->cu_outbuf = htonl(*(u_long *)info - 1);
/* decrement by 1 as clntudp_call() increments once */
break;
case CLGET_VERS:
/*
* This RELIES on the information that, in the call body,
1 change: 1 addition & 0 deletions sunrpc/clnt_unix.c
Original file line number Diff line number Diff line change
@@ -376,6 +376,7 @@ clntunix_control (CLIENT *cl, int request, char *info)
/* This will set the xid of the NEXT call */
*(u_long *) ct->ct_mcall = htonl (*(u_long *)info - 1);
/* decrement by 1 as clntunix_call() increments once */
break;
case CLGET_VERS:
/*
* This RELIES on the information that, in the call body,
12 changes: 9 additions & 3 deletions sysdeps/sh/sh4/fpu/feholdexcpt.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/* Store current floating-point environment and clear exceptions.
Copyright (C) 1997, 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999, 2000, 2005, 2010
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
@@ -29,10 +30,15 @@ feholdexcept (fenv_t *envp)
_FPU_GETCW (temp);
envp->__fpscr = temp;

/* Now set all exceptions to non-stop. */
/* Clear the status flags. */
temp &= ~FE_ALL_EXCEPT;

/* Now set all exceptions to non-stop. */
temp &= ~(FE_ALL_EXCEPT << 5);

_FPU_SETCW (temp);

return 1;
/* Success. */
return 0;
}
libm_hidden_def (feholdexcept)
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/Makefile
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2
endif

ifeq ($(subdir),socket)
sysdep_routines += internal_accept4
sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg
endif

ifeq ($(subdir),misc)
17 changes: 13 additions & 4 deletions sysdeps/unix/sysv/linux/getlogin_r.c
Original file line number Diff line number Diff line change
@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize)
if (tpwd == NULL)
goto fail;

strncpy (name, pwd.pw_name, namesize - 1);
name[namesize - 1] = '\0';

int result = 0;
size_t needed = strlen (pwd.pw_name) + 1;
if (needed > namesize)
{
__set_errno (ERANGE);
result = ERANGE;
goto out;
}

memcpy (name, pwd.pw_name, needed);

out:
if (use_malloc)
free (buf);

return 0;
return result;
}


14 changes: 14 additions & 0 deletions sysdeps/unix/sysv/linux/internal_recvmmsg.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include <kernel-features.h>
#include <sys/syscall.h>
#if !defined __NR_recvmmsg && defined __NR_socketcall
# define socket recvmmsg
# ifdef __ASSUME_RECVMMSG
# define __socket recvmmsg
# else
# define __socket __internal_recvmmsg
# endif
# define NARGS 5
# define NEED_CANCELLATION
# define NO_WEAK_ALIAS
# include <socket.S>
#endif
Loading

0 comments on commit aaad868

Please sign in to comment.