diff options
author | Roland McGrath <roland@redhat.com> | 2010-07-20 19:09:50 -0700 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2010-12-01 15:35:08 +0100 |
commit | 61219b9f6aee750f0b767969e79eeaa3ab562c7b (patch) | |
tree | 7c601df0a419dcbc0b2393ded6eb62afd6c419ee | |
parent | 8fb349ce448e7cda101f8640887682528061e702 (diff) | |
download | glibc-61219b9f6aee750f0b767969e79eeaa3ab562c7b.zip glibc-61219b9f6aee750f0b767969e79eeaa3ab562c7b.tar.gz glibc-61219b9f6aee750f0b767969e79eeaa3ab562c7b.tar.bz2 |
Fix vDSO synthetic hwcap handling so they are not masked out from ld.so.cache matching.
(cherry picked from commit 5dbc3b6cc0b759bf4b22d851ccb9cbf3e3cbc6ef)
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | elf/dl-sysdep.c | 5 |
2 files changed, 12 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2010-07-20 Roland McGrath <roland@redhat.com> + + * 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-07-05 Roland McGrath <roland@redhat.com> * manual/arith.texi (Rounding Functions): Fix rint description diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c index 160503d..e6c8660 100644 --- a/elf/dl-sysdep.c +++ b/elf/dl-sysdep.c @@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz, { 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) { |