diff options
-rw-r--r-- | meta/packages/glibc/files/no-hwcaps.patch | 52 | ||||
-rw-r--r-- | meta/packages/glibc/glibc_2.6.1.bb | 3 |
2 files changed, 54 insertions, 1 deletions
diff --git a/meta/packages/glibc/files/no-hwcaps.patch b/meta/packages/glibc/files/no-hwcaps.patch new file mode 100644 index 0000000000..5cc2821c2f --- /dev/null +++ b/meta/packages/glibc/files/no-hwcaps.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | Disable the extra hwcaps fields, they cause ld.so to look in many strange paths | ||
2 | before searching for binaries in /lib. We don't install binaries into any other | ||
3 | place so this just wastes time. | ||
4 | |||
5 | RP - 20/08/2008 | ||
6 | |||
7 | Index: glibc-2.6.1/elf/dl-sysdep.c | ||
8 | =================================================================== | ||
9 | --- glibc-2.6.1.orig/elf/dl-sysdep.c 2008-08-15 15:54:49.000000000 +0100 | ||
10 | +++ glibc-2.6.1/elf/dl-sysdep.c 2008-08-15 17:45:28.000000000 +0100 | ||
11 | @@ -346,7 +346,7 @@ | ||
12 | { | ||
13 | /* Determine how many important bits are set. */ | ||
14 | uint64_t masked = GLRO(dl_hwcap) & GLRO(dl_hwcap_mask); | ||
15 | - size_t cnt = platform != NULL; | ||
16 | + size_t cnt = 0; | ||
17 | size_t n, m; | ||
18 | size_t total; | ||
19 | struct r_strlenpair *temp; | ||
20 | @@ -354,11 +354,6 @@ | ||
21 | struct r_strlenpair *rp; | ||
22 | char *cp; | ||
23 | |||
24 | - /* Count the number of bits set in the masked value. */ | ||
25 | - for (n = 0; (~((1ULL << n) - 1) & masked) != 0; ++n) | ||
26 | - if ((masked & (1ULL << n)) != 0) | ||
27 | - ++cnt; | ||
28 | - | ||
29 | #if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED | ||
30 | /* The system-supplied DSO can contain a note of type 2, vendor "GNU". | ||
31 | This gives us a list of names to treat as fake hwcap bits. */ | ||
32 | @@ -434,20 +429,6 @@ | ||
33 | } | ||
34 | } | ||
35 | #endif | ||
36 | - for (n = 0; masked != 0; ++n) | ||
37 | - if ((masked & (1ULL << n)) != 0) | ||
38 | - { | ||
39 | - temp[m].str = _dl_hwcap_string (n); | ||
40 | - temp[m].len = strlen (temp[m].str); | ||
41 | - masked ^= 1ULL << n; | ||
42 | - ++m; | ||
43 | - } | ||
44 | - if (platform != NULL) | ||
45 | - { | ||
46 | - temp[m].str = platform; | ||
47 | - temp[m].len = platform_len; | ||
48 | - ++m; | ||
49 | - } | ||
50 | |||
51 | temp[m].str = "tls"; | ||
52 | temp[m].len = 3; | ||
diff --git a/meta/packages/glibc/glibc_2.6.1.bb b/meta/packages/glibc/glibc_2.6.1.bb index fc53840176..5a0a72a5ce 100644 --- a/meta/packages/glibc/glibc_2.6.1.bb +++ b/meta/packages/glibc/glibc_2.6.1.bb | |||
@@ -1,5 +1,5 @@ | |||
1 | require glibc.inc | 1 | require glibc.inc |
2 | PR = "r4" | 2 | PR = "r5" |
3 | 3 | ||
4 | ARM_INSTRUCTION_SET = "arm" | 4 | ARM_INSTRUCTION_SET = "arm" |
5 | 5 | ||
@@ -58,6 +58,7 @@ SRC_URI = "\ | |||
58 | file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \ | 58 | file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \ |
59 | file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \ | 59 | file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \ |
60 | file://glibc-include-fixed.patch;patch=1;pnum=0 \ | 60 | file://glibc-include-fixed.patch;patch=1;pnum=0 \ |
61 | file://no-hwcaps.patch;patch=1 \ | ||
61 | " | 62 | " |
62 | 63 | ||
63 | # Build fails on sh3 and sh4 without additional patches | 64 | # Build fails on sh3 and sh4 without additional patches |