diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/conf/distro/include/distro_tracking_fields.inc | 3 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-2.13/glibc_bug_fix_12454.patch | 179 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc_2.13.bb | 5 |
3 files changed, 5 insertions, 182 deletions
diff --git a/meta/conf/distro/include/distro_tracking_fields.inc b/meta/conf/distro/include/distro_tracking_fields.inc index 17d9f2f00..d84b1b32c 100644 --- a/meta/conf/distro/include/distro_tracking_fields.inc +++ b/meta/conf/distro/include/distro_tracking_fields.inc @@ -5721,6 +5721,9 @@ RECIPE_LATEST_VERSION_pn-groff = "1.21" RECIPE_NO_UPDATE_REASON_pn-groff = "1.18.1.4 is latest GPLv2 Version no 1.21" RECIPE_STATUS_pn-eglibc = "red" +RECIPE_LATEST_VERSION_pn-eglibc = "2.13-r15508" +RECIPE_LAST_UPDATE_pn-eglibc = "Nov 16, 2011" +RECIPE_MANUAL_CHECK_DATE_pn = "Nov 16, 2011" RECIPE_STATUS_pn-lighttpd = "red" RECIPE_LAST_UPDATE_pn-lighttpd = "Jul 28, 2011" diff --git a/meta/recipes-core/eglibc/eglibc-2.13/glibc_bug_fix_12454.patch b/meta/recipes-core/eglibc/eglibc-2.13/glibc_bug_fix_12454.patch deleted file mode 100644 index 71ba85177..000000000 --- a/meta/recipes-core/eglibc/eglibc-2.13/glibc_bug_fix_12454.patch +++ /dev/null @@ -1,179 +0,0 @@ -Upstream-Status: Inappropriate [backport] - -Imported by Nitin A Kamble <nitin.a.kamble@intel.com> 2011/07/12 - -From 6b1e7d1992cd89032df431c0e0d1418b97e57cd8 Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper <drepper@gmail.com> -Date: Mon, 30 May 2011 12:31:25 -0400 -Subject: [PATCH] Handle DSOs without any dependency in ld.so - ---- - ChangeLog | 6 ++++ - NEWS | 4 +- - elf/dl-deps.c | 93 +++++++++++++++++++++++++++++--------------------------- - elf/dl-fini.c | 10 ++++-- - elf/rtld.c | 1 - - 5 files changed, 62 insertions(+), 52 deletions(-) - -Index: libc/ChangeLog -=================================================================== ---- libc.orig/ChangeLog -+++ libc/ChangeLog -@@ -1,3 +1,13 @@ -+2011-05-30 Ulrich Drepper <drepper@gmail.com> -+ -+ [BZ #12454] -+ * elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only -+ when there are multiple maps. -+ * elf/dl-fini.c (_dl_sort_fini): Check for list of one. -+ (_dl_fini): Remove test here. -+ -+ * elf/rtld.c (dl_main): Don't allow the loader to load itself. -+ - 2010-09-28 Andreas Schwab <schwab@redhat.com> - Ulrich Drepper <drepper@gmail.com> - -Index: libc/elf/dl-deps.c -=================================================================== ---- libc.orig/elf/dl-deps.c -+++ libc/elf/dl-deps.c -@@ -613,61 +613,64 @@ Filters not supported with LD_TRACE_PREL - map->l_searchlist.r_list[i]->l_reserved = 0; - } - -- /* Now determine the order in which the initialization has to happen. */ -+ /* Sort the initializer list to take dependencies into account. The binary -+ itself will always be initialize last. */ - memcpy (l_initfini, map->l_searchlist.r_list, - nlist * sizeof (struct link_map *)); -- -- /* We can skip looking for the binary itself which is at the front -- of the search list. */ -- assert (nlist > 1); -- i = 1; -- bool seen[nlist]; -- memset (seen, false, nlist * sizeof (seen[0])); -- while (1) -+ if (__builtin_expect (nlist > 1, 1)) - { -- /* Keep track of which object we looked at this round. */ -- seen[i] = true; -- struct link_map *thisp = l_initfini[i]; -- -- /* Find the last object in the list for which the current one is -- a dependency and move the current object behind the object -- with the dependency. */ -- unsigned int k = nlist - 1; -- while (k > i) -+ /* We can skip looking for the binary itself which is at the front -+ of the search list. */ -+ i = 1; -+ bool seen[nlist]; -+ memset (seen, false, nlist * sizeof (seen[0])); -+ while (1) - { -- struct link_map **runp = l_initfini[k]->l_initfini; -- if (runp != NULL) -- /* Look through the dependencies of the object. */ -- while (*runp != NULL) -- if (__builtin_expect (*runp++ == thisp, 0)) -- { -- /* Move the current object to the back past the last -- object with it as the dependency. */ -- memmove (&l_initfini[i], &l_initfini[i + 1], -- (k - i) * sizeof (l_initfini[0])); -- l_initfini[k] = thisp; -- -- if (seen[i + 1]) -+ /* Keep track of which object we looked at this round. */ -+ seen[i] = true; -+ struct link_map *thisp = l_initfini[i]; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ unsigned int k = nlist - 1; -+ while (k > i) -+ { -+ struct link_map **runp = l_initfini[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) - { -- ++i; -- goto next_clear; -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&l_initfini[i], &l_initfini[i + 1], -+ (k - i) * sizeof (l_initfini[0])); -+ l_initfini[k] = thisp; -+ -+ if (seen[i + 1]) -+ { -+ ++i; -+ goto next_clear; -+ } -+ -+ memmove (&seen[i], &seen[i + 1], -+ (k - i) * sizeof (seen[0])); -+ seen[k] = true; -+ -+ goto next; - } - -- memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); -- seen[k] = true; -+ --k; -+ } - -- goto next; -- } -+ if (++i == nlist) -+ break; -+ next_clear: -+ memset (&seen[i], false, (nlist - i) * sizeof (seen[0])); - -- --k; -+ next:; - } -- -- if (++i == nlist) -- break; -- next_clear: -- memset (&seen[i], false, (nlist - i) * sizeof (seen[0])); -- -- next:; - } - - /* Terminate the list of dependencies. */ -Index: libc/elf/dl-fini.c -=================================================================== ---- libc.orig/elf/dl-fini.c -+++ libc/elf/dl-fini.c -@@ -33,9 +33,12 @@ internal_function - _dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, - char *used, Lmid_t ns) - { -+ /* A list of one element need not be sorted. */ -+ if (nmaps == 1) -+ return; -+ - /* We can skip looking for the binary itself which is at the front - of the search list for the main namespace. */ -- assert (nmaps > 1); - unsigned int i = ns == LM_ID_BASE; - bool seen[nmaps]; - memset (seen, false, nmaps * sizeof (seen[0])); -@@ -195,9 +198,8 @@ _dl_fini (void) - assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); - nmaps = i; - -- if (nmaps > 1) -- /* Now we have to do the sorting. */ -- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); -+ /* Now we have to do the sorting. */ -+ _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); - - /* We do not rely on the linked list of loaded object anymore from - this point on. We have our own list here (maps). The various diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb index f076ae7c7..955c4ec4b 100644 --- a/meta/recipes-core/eglibc/eglibc_2.13.bb +++ b/meta/recipes-core/eglibc/eglibc_2.13.bb @@ -1,9 +1,9 @@ require eglibc.inc -SRCREV = "14157" +SRCREV = "15508" DEPENDS += "gperf-native" -PR = "r17" +PR = "r18" PR_append = "+svnr${SRCPV}" EGLIBC_BRANCH="eglibc-2_13" @@ -16,7 +16,6 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};proto=http file://armv4-eabi-compile-fix.patch \ file://etc/ld.so.conf \ file://generate-supported.mk \ - file://glibc_bug_fix_12454.patch \ file://ppc-sqrt.patch \ file://multilib_readlib.patch \ " |