Blame SOURCES/glibc-rh615701.patch

b9ba6d
2010-07-20  Roland McGrath  <roland@redhat.com>
b9ba6d
b9ba6d
	* elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
b9ba6d
	dl_hwcap_mask as well as dl_hwcap.  Without this, dsocaps matching in
b9ba6d
	ld.so.cache was broken.  With it, there is no way to disable dsocaps
b9ba6d
	like LD_HWCAP_MASK can disable hwcaps.
b9ba6d
b9ba6d
Index: glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c
b9ba6d
===================================================================
b9ba6d
--- glibc-2.12-2-gc4ccff1.orig/elf/dl-sysdep.c
b9ba6d
+++ glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c
b9ba6d
@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platfo
b9ba6d
     {
b9ba6d
       const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
b9ba6d
       GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
b9ba6d
+      /* Note that we add the dsocaps to the set already chosen by the
b9ba6d
+	 LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
b9ba6d
+	 So there is no way to request ignoring an OS-supplied dsocap
b9ba6d
+	 string and bit like you can ignore an OS-supplied HWCAP bit.  */
b9ba6d
+      GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
b9ba6d
       size_t len;
b9ba6d
       for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
b9ba6d
 	{