[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r11012 - in /fsf/trunk/libc: ChangeLog elf/dl-sysdep.c sysdeps/mach/hurd/sendmsg.c
- To: commits@xxxxxxxxxx
- Subject: [commits] r11012 - in /fsf/trunk/libc: ChangeLog elf/dl-sysdep.c sysdeps/mach/hurd/sendmsg.c
- From: eglibc@xxxxxxxxxx
- Date: Wed, 21 Jul 2010 07:02:59 -0000
Author: eglibc
Date: Wed Jul 21 00:02:58 2010
New Revision: 11012
Log:
Import glibc-mainline for 2010-07-21
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/elf/dl-sysdep.c
fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Jul 21 00:02:58 2010
@@ -1,3 +1,14 @@
+2010-07-20 Roland McGrath <roland@xxxxxxxxxx>
+
+ * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
+ dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in
+ ld.so.cache was broken. With it, there is no way to disable dsocaps
+ like LD_HWCAP_MASK can disable hwcaps.
+
+2010-06-02 Emilio Pozuelo Monfort <pochu27@xxxxxxxxx>
+
+ * sysdeps/mach/hurd/sendmsg.c (__libc_sendmsg): Fix memory leaks.
+
2010-07-16 Ulrich Drepper <drepper@xxxxxxxxxx>
* sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function
Modified: fsf/trunk/libc/elf/dl-sysdep.c
==============================================================================
--- fsf/trunk/libc/elf/dl-sysdep.c (original)
+++ fsf/trunk/libc/elf/dl-sysdep.c Wed Jul 21 00:02:58 2010
@@ -425,6 +425,11 @@
{
const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
+ /* Note that we add the dsocaps to the set already chosen by the
+ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
+ So there is no way to request ignoring an OS-supplied dsocap
+ string and bit like you can ignore an OS-supplied HWCAP bit. */
+ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
size_t len;
for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
{
Modified: fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c
==============================================================================
--- fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c (original)
+++ fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c Wed Jul 21 00:02:58 2010
@@ -109,14 +109,22 @@
and talk to it with the ifsock protocol. */
file_t file = __file_name_lookup (addr->sun_path, 0, 0);
if (file == MACH_PORT_NULL)
- return -1;
+ {
+ if (dealloc)
+ __vm_deallocate (__mach_task_self (), data.addr, len);
+ return -1;
+ }
err = __ifsock_getsockaddr (file, &aport);
__mach_port_deallocate (__mach_task_self (), file);
if (err == MIG_BAD_ID || err == EOPNOTSUPP)
/* The file did not grok the ifsock protocol. */
err = ENOTSOCK;
if (err)
- return __hurd_fail (err);
+ {
+ if (dealloc)
+ __vm_deallocate (__mach_task_self (), data.addr, len);
+ return __hurd_fail (err);
+ }
}
else
err = EIEIO;