Skip to content

Commit

Permalink
Merge remote branch 'origin/master' into fedora/master
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Schwab committed Jan 20, 2010
2 parents 1795b73 + e3b7670 commit f0dfc72
Showing 31 changed files with 921 additions and 201 deletions.
82 changes: 82 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,85 @@
2010-01-20 Andreas Schwab <schwab@redhat.com>

* sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
(CHECK_SP): Fix check for alternate stack.
* sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
(CHECK_SP): Likewise.

2010-01-19 H.J. Lu <hongjiu.lu@intel.com>

* sysdeps/i386/i686/multiarch/memmove.S: Also check
bit_Fast_Rep_String when SHARED isn't defined.

2010-01-19 Ulrich Drepper <drepper@redhat.com>

[BZ #11194]
* misc/bits/syslog.h (syslog, vsyslog): Remove unnecessary return.

2010-01-17 Samuel Thibault <samuel.thibault@ens-lyon.org>

* sysdeps/mach/hurd/bits/libc-lock.h
(__rtld_lock_recursive_t): New type.
(__rtld_lock_initialize): New macro.

2010-01-14 Ryan S. Arnold <rsa@us.ibm.com>

* sysdeps/powerpc/powerpc32/cell/memcpy.S: New file.
* sysdeps/powerpc/powerpc64/cell/memcpy.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies: New file.

2010-01-18 Andreas Schwab <schwab@redhat.com>

* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Remove duplicate
definitions of O_DSYNC and O_RSYNC.

* elf/dynamic-link.h (elf_get_dynamic_info): Use correct type when
casting d_tag.

* elf/dynamic-link.h (elf_get_dynamic_info): Ignore negative
dynamic entry types.

2010-01-16 Jakub Jelinek <jakub@redhat.com>

* sysdeps/ieee754/ldbl-128/s_ceill.c (huge): Add L suffix to the
constant.
* sysdeps/ieee754/ldbl-128/s_floorl.c (huge): Likewise.
* sysdeps/ieee754/ldbl-128/s_expm1l.c (big): Decrease to avoid
overflow.
* sysdeps/ieee754/ldbl-128/s_log1pl.c (big): Remove unused variable.

* sysdeps/ieee754/ldbl-128/s_nexttowardf.c (__nexttowardf): Use
math_opt_barrier and math_force_eval macros.

2010-01-15 Ulrich Drepper <drepper@redhat.com>

* posix/regcomp.c: Fix a few more cases of ignored return values.
* posix/regex_internal.c: Likewise.
* posix/regexec.c: Likewise.

* include/features.h: _XOPEN_SOURCE_EXTENDED is not defined to be
used without _XOPEN_SOURCE. Don't base any decisions on this macro
if _XOPEN_SOURCE is not defined as well.

2010-01-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>

* sysdeps/s390/s390-32/elf/start.S (_start): Added check for the
high gprs kernel facility.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_matches_host):
Added high gprs check for DSOs.
* elf/elf.h (EF_S390_HIGH_GPRS): Added macro definition for the
new elf header flag.

2010-01-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>

* elf/dl-sysdep.c (_dl_sysdep_start): Added the auxv parameter to
dl_main.
* elf/dl-open.c (_dl_sysdep_start): Likewise..
* sysdeps/generic/ldsodefs.h (_dl_sysdep_start): Likewise.
* elf/rtld.c (dl_main): Added new parameter auxv. Adjust the
AT_PHDR, AT_PHNUM and AT_ENTRY fields if the ld.so is directly
started.

2010-01-14 Ulrich Drepper <drepper@redhat.com>

[BZ #11027]
9 changes: 5 additions & 4 deletions elf/dl-open.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Load a shared object at runtime, relocate it, and run its initializer.
Copyright (C) 1996-2007, 2009 Free Software Foundation, Inc.
Copyright (C) 1996-2007, 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
@@ -40,7 +40,8 @@
extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
ElfW(Addr) *user_entry));
ElfW(Addr) *user_entry,
ElfW(auxv_t) *auxv));
weak_extern (BP_SYM (_dl_sysdep_start))

extern int __libc_multiple_libcs; /* Defined in init-first.c. */
@@ -346,8 +347,8 @@ dl_open_worker (void *a)
{
/* If this here is the shared object which we want to profile
make sure the profile is started. We can find out whether
this is necessary or not by observing the `_dl_profile_map'
variable. If was NULL but is not NULL afterwars we must
this is necessary or not by observing the `_dl_profile_map'
variable. If was NULL but is not NULL afterwars we must
start the profiling. */
struct link_map *old_profile_map = GL(dl_profile_map);

10 changes: 5 additions & 5 deletions elf/dl-sysdep.c
Original file line number Diff line number Diff line change
@@ -85,7 +85,7 @@ void *_dl_random attribute_relro = NULL;
ElfW(Addr)
_dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
ElfW(Addr) *user_entry))
ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv))
{
const ElfW(Phdr) *phdr = NULL;
ElfW(Word) phnum = 0;
@@ -241,7 +241,7 @@ _dl_sysdep_start (void **start_argptr,
if (__builtin_expect (INTUSE(__libc_enable_secure), 0))
__libc_check_standard_fds ();

(*dl_main) (phdr, phnum, &user_entry);
(*dl_main) (phdr, phnum, &user_entry, _dl_auxv);
return user_entry;
}

@@ -511,9 +511,9 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
/* Fill in the information. This follows the following scheme
(indeces from TEMP for four strings):
entry #0: 0, 1, 2, 3 binary: 1111
#1: 0, 1, 3 1101
#2: 0, 2, 3 1011
#3: 0, 3 1001
#1: 0, 1, 3 1101
#2: 0, 2, 3 1011
#3: 0, 3 1001
This allows the representation of all possible combinations of
capability names in the string. First generate the strings. */
result[1].str = result[0].str = cp = (char *) (result + *sz);
15 changes: 10 additions & 5 deletions elf/dynamic-link.h
Original file line number Diff line number Diff line change
@@ -103,6 +103,11 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
{
ElfW(Dyn) *dyn = l->l_ld;
ElfW(Dyn) **info;
#if __ELF_NATIVE_CLASS == 32
typedef Elf32_Word d_tag_utype;
#elif __ELF_NATIVE_CLASS == 64
typedef Elf64_Xword d_tag_utype;
#endif

#ifndef RTLD_BOOTSTRAP
if (dyn == NULL)
@@ -113,20 +118,20 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)

while (dyn->d_tag != DT_NULL)
{
if (dyn->d_tag < DT_NUM)
if ((d_tag_utype) dyn->d_tag < DT_NUM)
info[dyn->d_tag] = dyn;
else if (dyn->d_tag >= DT_LOPROC &&
dyn->d_tag < DT_LOPROC + DT_THISPROCNUM)
info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
else if ((d_tag_utype) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
info[VERSYMIDX (dyn->d_tag)] = dyn;
else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
else if ((d_tag_utype) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM] = dyn;
else if ((Elf32_Word) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM)
else if ((d_tag_utype) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM)
info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn;
else if ((Elf32_Word) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;
++dyn;
6 changes: 6 additions & 0 deletions elf/elf.h
Original file line number Diff line number Diff line change
@@ -2493,6 +2493,12 @@ typedef Elf32_Addr Elf32_Conflict;
/* Keep this the last entry. */
#define R_SH_NUM 256

/* S/390 specific definitions. */

/* Valid values for the e_flags field. */

#define EF_S390_HIGH_GPRS 0x00000001 /* High GPRs kernel facility needed. */

/* Additional s390 relocs */

#define R_390_NONE 0 /* No reloc. */
41 changes: 30 additions & 11 deletions elf/rtld.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Run time dynamic linker.
Copyright (C) 1995-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (C) 1995-2006, 2007, 2008, 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
@@ -182,7 +182,7 @@ extern struct rtld_global_ro _rtld_local_ro


static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
ElfW(Addr) *user_entry);
ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv);

/* These two variables cannot be moved into .data.rel.ro. */
static struct libname_list _dl_rtld_libname;
@@ -882,7 +882,8 @@ static int version_info attribute_relro;
static void
dl_main (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
ElfW(Addr) *user_entry)
ElfW(Addr) *user_entry,
ElfW(auxv_t) *auxv)
{
const ElfW(Phdr) *ph;
enum mode mode;
@@ -927,6 +928,8 @@ dl_main (const ElfW(Phdr) *phdr,

if (*user_entry == (ElfW(Addr)) ENTRY_POINT)
{
ElfW(auxv_t) *av;

/* Ho ho. We are not the program interpreter! We are the program
itself! This means someone ran ld.so as a command. Well, that
might be convenient to do sometimes. We support it by
@@ -1013,11 +1016,11 @@ of this helper program; chances are you did not intend to run this program.\n\
\n\
--list list all dependencies and how they are resolved\n\
--verify verify that given object really is a dynamically linked\n\
object we can handle\n\
object we can handle\n\
--library-path PATH use given PATH instead of content of the environment\n\
variable LD_LIBRARY_PATH\n\
variable LD_LIBRARY_PATH\n\
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
in LIST\n\
in LIST\n\
--audit LIST use objects named in LIST as auditors\n");

++_dl_skip_args;
@@ -1082,6 +1085,22 @@ of this helper program; chances are you did not intend to run this program.\n\
makes sense to free the old string first. */
main_map->l_name = (char *) "";
*user_entry = main_map->l_entry;

/* Adjust the on-stack auxiliary vector so that it looks like the
binary was executed directly. */
for (av = auxv; av->a_type != AT_NULL; av++)
switch (av->a_type)
{
case AT_PHDR:
av->a_un.a_val = phdr;
break;
case AT_PHNUM:
av->a_un.a_val = phnum;
break;
case AT_ENTRY:
av->a_un.a_val = *user_entry;
break;
}
}
else
{
@@ -2013,7 +2032,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
_dl_relocate_object (&GL(dl_rtld_map),
main_map->l_scope, 0, 0);
}
}
}
#define VERNEEDTAG (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (DT_VERNEED))
if (version_info)
{
@@ -2682,10 +2701,10 @@ process_envvars (enum mode *modep)
while (*nextp != '\0');

if (__access ("/etc/suid-debug", F_OK) != 0)
{
{
unsetenv ("MALLOC_CHECK_");
GLRO(dl_debug_mask) = 0;
}
}

if (mode != normal)
_exit (5);
@@ -2752,7 +2771,7 @@ print_statistics (hp_timing_t *rtld_total_timep)
}
*wp = '\0';
_dl_debug_printf ("\
time needed for relocation: %s (%s%%)\n", buf, pbuf);
time needed for relocation: %s (%s%%)\n", buf, pbuf);
}
#endif

@@ -2815,7 +2834,7 @@ print_statistics (hp_timing_t *rtld_total_timep)
}
*wp = '\0';
_dl_debug_printf ("\
time needed to load objects: %s (%s%%)\n",
time needed to load objects: %s (%s%%)\n",
buf, pbuf);
}
#endif
6 changes: 2 additions & 4 deletions include/features.h
Original file line number Diff line number Diff line change
@@ -146,8 +146,7 @@
/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
#if defined _BSD_SOURCE && \
!(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \
defined _GNU_SOURCE || defined _SVID_SOURCE)
defined _XOPEN_SOURCE || defined _GNU_SOURCE || defined _SVID_SOURCE)
# define __FAVOR_BSD 1
#endif

@@ -179,8 +178,7 @@
define _BSD_SOURCE and _SVID_SOURCE. */
#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \
!defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \
!defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \
!defined _BSD_SOURCE && !defined _SVID_SOURCE)
!defined _XOPEN_SOURCE && !defined _BSD_SOURCE && !defined _SVID_SOURCE)
# define _BSD_SOURCE 1
# define _SVID_SOURCE 1
#endif
6 changes: 3 additions & 3 deletions misc/bits/syslog.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Checking macros for syslog functions.
Copyright (C) 2005, 2007 Free Software Foundation, Inc.
Copyright (C) 2005, 2007, 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,7 +29,7 @@ extern void __syslog_chk (int __pri, int __flag, __const char *__fmt, ...)
__extern_always_inline void
syslog (int __pri, __const char *__fmt, ...)
{
return __syslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
__syslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
}
#elif !defined __cplusplus
# define syslog(pri, ...) \
@@ -45,6 +45,6 @@ extern void __vsyslog_chk (int __pri, int __flag, __const char *__fmt,
__extern_always_inline void
vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
{
return __vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
13 changes: 13 additions & 0 deletions nptl/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
2010-01-15 Ulrich Drepper <drepper@redhat.com>

* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
Fix unwind info.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.

2010-01-15 Michal Schmidt <mschmidt@redhat.com>

* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
Fix pthread_cond_timedwait with requeue-PI.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
Fix pthread_cond_wait with requeue-PI.

2010-01-14 Ulrich Drepper <drepper@redhat.com>

* Versions: Add pthread_mutex_consistent, pthread_mutexattr_getrobust,
Loading

0 comments on commit f0dfc72

Please sign in to comment.