]> code.ossystems Code Review - openembedded-core.git/commitdiff
glibc: Disable hwcaps for speed
authorRichard Purdie <richard@openedhand.com>
Wed, 20 Aug 2008 11:48:12 +0000 (11:48 +0000)
committerRichard Purdie <richard@openedhand.com>
Wed, 20 Aug 2008 11:48:12 +0000 (11:48 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5087 311d38ba-8fff-0310-9ca6-ca027cbcb966

meta/packages/glibc/files/no-hwcaps.patch [new file with mode: 0644]
meta/packages/glibc/glibc_2.6.1.bb

diff --git a/meta/packages/glibc/files/no-hwcaps.patch b/meta/packages/glibc/files/no-hwcaps.patch
new file mode 100644 (file)
index 0000000..5cc2821
--- /dev/null
@@ -0,0 +1,52 @@
+Disable the extra hwcaps fields, they cause ld.so to look in many strange paths 
+before searching for binaries in /lib. We don't install binaries into any other 
+place so this just wastes time.
+
+RP - 20/08/2008
+
+Index: glibc-2.6.1/elf/dl-sysdep.c
+===================================================================
+--- glibc-2.6.1.orig/elf/dl-sysdep.c   2008-08-15 15:54:49.000000000 +0100
++++ glibc-2.6.1/elf/dl-sysdep.c        2008-08-15 17:45:28.000000000 +0100
+@@ -346,7 +346,7 @@
+ {
+   /* Determine how many important bits are set.  */
+   uint64_t masked = GLRO(dl_hwcap) & GLRO(dl_hwcap_mask);
+-  size_t cnt = platform != NULL;
++  size_t cnt = 0;
+   size_t n, m;
+   size_t total;
+   struct r_strlenpair *temp;
+@@ -354,11 +354,6 @@
+   struct r_strlenpair *rp;
+   char *cp;
+-  /* Count the number of bits set in the masked value.  */
+-  for (n = 0; (~((1ULL << n) - 1) & masked) != 0; ++n)
+-    if ((masked & (1ULL << n)) != 0)
+-      ++cnt;
+-
+ #if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED
+   /* The system-supplied DSO can contain a note of type 2, vendor "GNU".
+      This gives us a list of names to treat as fake hwcap bits.  */
+@@ -434,20 +429,6 @@
+       }
+     }
+ #endif
+-  for (n = 0; masked != 0; ++n)
+-    if ((masked & (1ULL << n)) != 0)
+-      {
+-      temp[m].str = _dl_hwcap_string (n);
+-      temp[m].len = strlen (temp[m].str);
+-      masked ^= 1ULL << n;
+-      ++m;
+-      }
+-  if (platform != NULL)
+-    {
+-      temp[m].str = platform;
+-      temp[m].len = platform_len;
+-      ++m;
+-    }
+   temp[m].str = "tls";
+   temp[m].len = 3;
index fc538401760d83127aa67dde6c3a38461565dc0f..5a0a72a5ceefc1c499d5422d79a923ad8ad1443e 100644 (file)
@@ -1,5 +1,5 @@
 require glibc.inc
-PR = "r4"
+PR = "r5"
 
 ARM_INSTRUCTION_SET = "arm"
 
@@ -58,6 +58,7 @@ SRC_URI = "\
   file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \
   file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
   file://glibc-include-fixed.patch;patch=1;pnum=0 \
+  file://no-hwcaps.patch;patch=1 \
 "
 
 # Build fails on sh3 and sh4 without additional patches