diff options
Diffstat (limited to 'recipes/glibc/glibc-2.3.2/ldso-disable-hwcap.patch')
-rw-r--r-- | recipes/glibc/glibc-2.3.2/ldso-disable-hwcap.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/recipes/glibc/glibc-2.3.2/ldso-disable-hwcap.patch b/recipes/glibc/glibc-2.3.2/ldso-disable-hwcap.patch new file mode 100644 index 0000000000..5538d20672 --- /dev/null +++ b/recipes/glibc/glibc-2.3.2/ldso-disable-hwcap.patch @@ -0,0 +1,62 @@ +--- glibc-2.3.2/sysdeps/generic/dl-sysdep.c.orig 2003-10-28 12:22:33.000000000 -0500 ++++ glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-10-28 12:38:49.000000000 -0500 +@@ -354,7 +354,11 @@ _dl_important_hwcaps (const char *platfo + #ifdef USE_TLS + /* For TLS enabled builds always add 'tls'. */ + ++cnt; +-#else ++#endif ++ ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ cnt = 0; ++ + if (cnt == 0) + { + /* If we have platform name and no important capability we only have +@@ -369,7 +373,6 @@ _dl_important_hwcaps (const char *platfo + *sz = 1; + return result; + } +-#endif + + /* Create temporary data structure to generate result table. */ + temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp)); +@@ -411,9 +414,7 @@ _dl_important_hwcaps (const char *platfo + result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total); + if (result == NULL) + { +-#ifndef USE_TLS + no_memory: +-#endif + INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL, + N_("cannot create capability list")); + } +--- glibc-2.3.2/sysdeps/generic/dl-cache.c.orig 2003-10-28 12:32:36.000000000 -0500 ++++ glibc-2.3.2/sysdeps/generic/dl-cache.c 2003-10-28 12:38:57.000000000 -0500 +@@ -246,6 +246,7 @@ _dl_load_cache_lookup (const char *name) + /* This file ends in static libraries where we don't have a hwcap. */ + unsigned long int *hwcap; + uint64_t platform; ++ int disable_hwcap = 0; + #ifndef SHARED + weak_extern (_dl_hwcap); + #endif +@@ -261,6 +262,9 @@ _dl_load_cache_lookup (const char *name) + if (platform != (uint64_t) -1) + platform = 1ULL << platform; + ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ disable_hwcap = 1; ++ + #ifdef USE_TLS + # define TLS_BIT (1ULL << 63) + #else +@@ -272,6 +276,8 @@ _dl_load_cache_lookup (const char *name) + if (GL(dl_osversion) \ + && cache_new->libs[middle].osversion > GL(dl_osversion)) \ + continue; \ ++ if (disable_hwcap && lib->hwcap != 0) \ ++ continue; \ + if (_DL_PLATFORMS_COUNT && platform != -1 \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0 \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \ |