* [PATCH 0/4] uclibc and related fixes
@ 2011-06-22 1:44 Khem Raj
2011-06-22 1:44 ` [PATCH 1/4] uclibc.inc: libsegfault is only RPROVIDED by uclibc Khem Raj
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Khem Raj @ 2011-06-22 1:44 UTC (permalink / raw)
To: OE core
Fix uclibc build for x86_64
gettext compile failed on uclibc so fix it and additionally
remove unused patches
Add required support for systemd to function with uclibc
Quash a parse warning where uclibc-initial and uclibc
both provided libsegfault
The following changes since commit 78de64f58b98101f5be5778e9ecbdaae5ba32997:
binutils_2.21.bb: Fix ld segfault exposed by eglibc 2.14 on x86_64 (2011-06-21 17:58:06 -0700)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib kraj/uclibc
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/uclibc
Khem Raj (4):
uclibc.inc: libsegfault is only RPROVIDED by uclibc
gettext-0.18.1.1: Remove unused patches
uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU
uclibc: Add support for $ORIGIN
.../gettext/gettext-0.18.1.1/autotools.patch | 64 ------
.../gettext-error_print_progname.patch | 15 --
.../gettext/gettext-0.18.1.1/m4fix.patch | 52 -----
.../gettext-0.18.1.1/use_open_properly.patch | 17 --
meta/recipes-core/gettext/gettext_0.18.1.1.bb | 1 -
.../uclibc/uclibc-git/orign_path.patch | 183 +++++++++++++++++
meta/recipes-core/uclibc/uclibc-git/rtld_no.patch | 215 ++++++++++++++++++++
.../uclibc/uclibc-git/x86_64/uClibc.machine | 3 +-
meta/recipes-core/uclibc/uclibc.inc | 2 +-
meta/recipes-core/uclibc/uclibc_git.bb | 4 +-
10 files changed, 403 insertions(+), 153 deletions(-)
delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/autotools.patch
delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/gettext-error_print_progname.patch
delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/m4fix.patch
delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/use_open_properly.patch
create mode 100644 meta/recipes-core/uclibc/uclibc-git/orign_path.patch
create mode 100644 meta/recipes-core/uclibc/uclibc-git/rtld_no.patch
--
1.7.5.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/4] uclibc.inc: libsegfault is only RPROVIDED by uclibc 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj @ 2011-06-22 1:44 ` Khem Raj 2011-06-22 1:44 ` [PATCH 2/4] gettext-0.18.1.1: Remove unused patches Khem Raj ` (3 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Khem Raj @ 2011-06-22 1:44 UTC (permalink / raw) To: OE core Using ${PN} also means that uclibc-initial gets to provide it which we do not want Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/recipes-core/uclibc/uclibc.inc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc index 00f5e8d..06c0f5d 100644 --- a/meta/recipes-core/uclibc/uclibc.inc +++ b/meta/recipes-core/uclibc/uclibc.inc @@ -89,7 +89,7 @@ RPROVIDES_uclibc-dev += "libc-dev virtual-libc-dev" # uclibc does not really have libsegfault but then using the one from glibc is also not # going to work. So we pretend that we have it to make bitbake not pull other recipes # to satisfy this dependency for the images/tasks -RPROVIDES_${PN} += "libsegfault" +RPROVIDES_uclibc += "libsegfault" SRC_URI = "\ http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2;name=uClibc-${PV} \ -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] gettext-0.18.1.1: Remove unused patches 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj 2011-06-22 1:44 ` [PATCH 1/4] uclibc.inc: libsegfault is only RPROVIDED by uclibc Khem Raj @ 2011-06-22 1:44 ` Khem Raj 2011-06-22 1:44 ` [PATCH 3/4] uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU Khem Raj ` (2 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Khem Raj @ 2011-06-22 1:44 UTC (permalink / raw) To: OE core gettext-error_print_progname.patch is already applied upstream others are unapplied. Signed-off-by: Khem Raj <raj.khem@gmail.com> --- .../gettext/gettext-0.18.1.1/autotools.patch | 64 -------------------- .../gettext-error_print_progname.patch | 15 ----- .../gettext/gettext-0.18.1.1/m4fix.patch | 52 ---------------- .../gettext-0.18.1.1/use_open_properly.patch | 17 ----- meta/recipes-core/gettext/gettext_0.18.1.1.bb | 1 - 5 files changed, 0 insertions(+), 149 deletions(-) delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/autotools.patch delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/gettext-error_print_progname.patch delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/m4fix.patch delete mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/use_open_properly.patch diff --git a/meta/recipes-core/gettext/gettext-0.18.1.1/autotools.patch b/meta/recipes-core/gettext/gettext-0.18.1.1/autotools.patch deleted file mode 100644 index e4545fd..0000000 --- a/meta/recipes-core/gettext/gettext-0.18.1.1/autotools.patch +++ /dev/null @@ -1,64 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -Index: gettext-0.17/gettext-runtime/man/Makefile.am -=================================================================== ---- gettext-0.17.orig/gettext-runtime/man/Makefile.am 2007-10-07 21:37:36.000000000 +0200 -+++ gettext-0.17/gettext-runtime/man/Makefile.am 2008-05-09 22:46:37.000000000 +0200 -@@ -158,8 +158,7 @@ - $(MAN2HTML) $(srcdir)/bind_textdomain_codeset.3.in | sed -e '/CreationDate:/d' > t-$@ - mv t-$@ $@ - --install-html-local: -- $(mkdir_p) $(DESTDIR)$(htmldir) -+install-html: installdirs-html - for file in $(man_HTML); do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - $(INSTALL_DATA) $$dir/$$file $(DESTDIR)$(htmldir)/$$file; \ -Index: gettext-0.17/gettext-tools/man/Makefile.am -=================================================================== ---- gettext-0.17.orig/gettext-tools/man/Makefile.am 2007-10-28 00:18:37.000000000 +0200 -+++ gettext-0.17/gettext-tools/man/Makefile.am 2008-05-09 22:46:37.000000000 +0200 -@@ -186,8 +186,7 @@ - $(MAN2HTML) `if test -f autopoint.1; then echo .; else echo $(srcdir); fi`/autopoint.1 | sed -e '/CreationDate:/d' > t-$@ - mv t-$@ $@ - --install-html-local: -- $(mkdir_p) $(DESTDIR)$(htmldir) -+install-html: installdirs-html - for file in $(man_HTML); do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - $(INSTALL_DATA) $$dir/$$file $(DESTDIR)$(htmldir)/$$file; \ -Index: gettext-0.17/gettext-runtime/libasprintf/configure.ac -=================================================================== ---- gettext-0.17.orig/gettext-runtime/libasprintf/configure.ac 2008-05-09 22:53:42.000000000 +0200 -+++ gettext-0.17/gettext-runtime/libasprintf/configure.ac 2008-05-09 22:53:54.000000000 +0200 -@@ -1,5 +1,5 @@ - dnl Configuration for the GNU libasprintf library --dnl Copyright (C) 2002-2006 Free Software Foundation, Inc. -+dnl Copyright (C) 2002-2007 Free Software Foundation, Inc. - dnl - dnl This program is free software: you can redistribute it and/or modify - dnl it under the terms of the GNU General Public License as published by -@@ -54,8 +54,7 @@ - dnl Checks for typedefs, structures, and compiler characteristics. - AC_C_INLINE - AC_TYPE_SIZE_T --gl_AC_TYPE_LONG_LONG --gt_TYPE_LONGDOUBLE -+AC_TYPE_LONG_LONG_INT - gt_TYPE_WCHAR_T - gt_TYPE_WINT_T - AC_CHECK_TYPE([ptrdiff_t], , -@@ -79,8 +78,11 @@ - AC_SUBST([ALLOCA_H]) - - AC_CHECK_FUNCS([snprintf vasprintf wcslen]) --AC_CHECK_DECLS([_snprintf]) -+dnl Use the _snprintf function only if it is declared (because on NetBSD it -+dnl is defined as a weak alias of snprintf; we prefer to use the latter). -+AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>]) - gt_PRINTF_POSIX -+gl_EOVERFLOW - - dnl Check for tools needed for formatting the documentation. - ac_aux_dir_abs=`cd $ac_aux_dir && pwd` diff --git a/meta/recipes-core/gettext/gettext-0.18.1.1/gettext-error_print_progname.patch b/meta/recipes-core/gettext/gettext-0.18.1.1/gettext-error_print_progname.patch deleted file mode 100644 index 4a1b2c6..0000000 --- a/meta/recipes-core/gettext/gettext-0.18.1.1/gettext-error_print_progname.patch +++ /dev/null @@ -1,15 +0,0 @@ -Upstream-Status: Pending - -Index: gettext-0.17/gettext-tools/libgettextpo/error.h -=================================================================== ---- gettext-0.17.orig/gettext-tools/libgettextpo/error.h 2008-07-27 21:16:25.561115527 +0200 -+++ gettext-0.17/gettext-tools/libgettextpo/error.h 2008-07-27 21:16:52.454440505 +0200 -@@ -49,7 +49,7 @@ - /* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ --extern DLL_VARIABLE void (*error_print_progname) (void); -+void (*error_print_progname) (void); - - /* This variable is incremented each time `error' is called. */ - extern DLL_VARIABLE unsigned int error_message_count; diff --git a/meta/recipes-core/gettext/gettext-0.18.1.1/m4fix.patch b/meta/recipes-core/gettext/gettext-0.18.1.1/m4fix.patch deleted file mode 100644 index 34930d1..0000000 --- a/meta/recipes-core/gettext/gettext-0.18.1.1/m4fix.patch +++ /dev/null @@ -1,52 +0,0 @@ -When I try to `./autogen.sh --quick' CVS gettext, using git Autoconf, -things fall over like this (several instances): - -| gnulib-m4/openmp.m4:29: error: m4_copy: won't overwrite defined macro: -_AC_LANG_OPENMP(C++) -| gnulib-m4/openmp.m4:29: the top level -| autom4te: /usr/bin/m4 failed with exit status: 1 -| aclocal: autom4te failed with exit status: 1 - -I'm not quite sure whether an Autoconf bug/incompatibility is involved -here (therefore the Cc: to bug-autoconf). m4_copy wasn't documented in -earlier Autoconf releases, but there may still have been problematic -semantic changes, I don't know. - -Anyway, the following patch seems to fix it. OK to apply? - -Cheers, -Ralf - -2008-12-03 Ralf Wildenhues <[EMAIL PROTECTED]> - - * m4/openmp.m4 (AC_OPENMP): Do not define with Autoconf 2.62 or - newer. - -Upstream-Status: Pending - -Index: gettext-0.17/gettext-tools/gnulib-m4/openmp.m4 -=================================================================== ---- gettext-0.17.orig/gettext-tools/gnulib-m4/openmp.m4 2010-02-01 10:51:00.437788710 +0000 -+++ gettext-0.17/gettext-tools/gnulib-m4/openmp.m4 2010-02-01 10:51:50.697789220 +0000 -@@ -1,11 +1,13 @@ --# openmp.m4 serial 4 --dnl Copyright (C) 2006-2007 Free Software Foundation, Inc. -+# openmp.m4 serial 5 -+dnl Copyright (C) 2006-2008 Free Software Foundation, Inc. - dnl This file is free software; the Free Software Foundation - dnl gives unlimited permission to copy and/or distribute it, - dnl with or without modifications, as long as this notice is preserved. - - dnl This file can be removed once we assume autoconf >= 2.62. - -+m4_version_prereq([2.62],, [ -+ - # _AC_LANG_OPENMP - # --------------- - # Expands to some language dependent source code for testing the presence of -@@ -90,3 +92,5 @@ - fi - AC_SUBST([OPENMP_]_AC_LANG_PREFIX[FLAGS]) - ]) -+ -+]) diff --git a/meta/recipes-core/gettext/gettext-0.18.1.1/use_open_properly.patch b/meta/recipes-core/gettext/gettext-0.18.1.1/use_open_properly.patch deleted file mode 100644 index a04a32d..0000000 --- a/meta/recipes-core/gettext/gettext-0.18.1.1/use_open_properly.patch +++ /dev/null @@ -1,17 +0,0 @@ -Upstream-Status: Pending - -Index: gettext-0.17/gettext-tools/src/write-catalog.c -=================================================================== ---- gettext-0.17.orig/gettext-tools/src/write-catalog.c 2008-10-16 15:18:16.000000000 +0200 -+++ gettext-0.17/gettext-tools/src/write-catalog.c 2008-10-16 18:17:13.000000000 +0200 -@@ -220,7 +220,9 @@ - /* Open the output file. */ - if (!to_stdout) - { -- fd = open (filename, O_WRONLY | O_CREAT); -+ fd = open (filename, O_WRONLY | O_CREAT, -+ /* 0666 in portable POSIX notation: */ -+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - if (fd < 0) - { - const char *errno_description = strerror (errno); diff --git a/meta/recipes-core/gettext/gettext_0.18.1.1.bb b/meta/recipes-core/gettext/gettext_0.18.1.1.bb index f54c111..b64fbdb 100644 --- a/meta/recipes-core/gettext/gettext_0.18.1.1.bb +++ b/meta/recipes-core/gettext/gettext_0.18.1.1.bb @@ -15,7 +15,6 @@ SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \ " SRC_URI_append_libc-uclibc = " file://wchar-uclibc.patch \ - file://gettext-error_print_progname.patch \ file://gnulib-uclibc-sched_param-def.patch \ " -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj 2011-06-22 1:44 ` [PATCH 1/4] uclibc.inc: libsegfault is only RPROVIDED by uclibc Khem Raj 2011-06-22 1:44 ` [PATCH 2/4] gettext-0.18.1.1: Remove unused patches Khem Raj @ 2011-06-22 1:44 ` Khem Raj 2011-06-22 1:44 ` [PATCH 4/4] uclibc: Add support for $ORIGIN Khem Raj 2011-06-22 15:42 ` [PATCH 0/4] uclibc and related fixes Richard Purdie 4 siblings, 0 replies; 8+ messages in thread From: Khem Raj @ 2011-06-22 1:44 UTC (permalink / raw) To: OE core Signed-off-by: Khem Raj <raj.khem@gmail.com> --- .../uclibc/uclibc-git/x86_64/uClibc.machine | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/meta/recipes-core/uclibc/uclibc-git/x86_64/uClibc.machine b/meta/recipes-core/uclibc/uclibc-git/x86_64/uClibc.machine index ac50da0..94c008d 100644 --- a/meta/recipes-core/uclibc/uclibc-git/x86_64/uClibc.machine +++ b/meta/recipes-core/uclibc/uclibc-git/x86_64/uClibc.machine @@ -32,11 +32,10 @@ ARCH_SUPPORTS_LITTLE_ENDIAN=y FORCE_OPTIONS_FOR_ARCH=y ARCH_LITTLE_ENDIAN=y # ARCH_BIG_ENDIAN is not set -# ARCH_HAS_NO_MMU is not set ARCH_HAS_MMU=y +ARCH_USE_MMU=y UCLIBC_HAS_FLOATS=y UCLIBC_HAS_FPU=y DO_C99_MATH=y -# UCLIBC_HAS_FENV is not set KERNEL_HEADERS="<path/to/kernel/headers>" HAVE_DOT_CONFIG=y -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] uclibc: Add support for $ORIGIN 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj ` (2 preceding siblings ...) 2011-06-22 1:44 ` [PATCH 3/4] uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU Khem Raj @ 2011-06-22 1:44 ` Khem Raj 2011-06-22 15:42 ` [PATCH 0/4] uclibc and related fixes Richard Purdie 4 siblings, 0 replies; 8+ messages in thread From: Khem Raj @ 2011-06-22 1:44 UTC (permalink / raw) To: OE core This is required by systemd Signed-off-by: Khem Raj <raj.khem@gmail.com> --- .../uclibc/uclibc-git/orign_path.patch | 183 +++++++++++++++++ meta/recipes-core/uclibc/uclibc-git/rtld_no.patch | 215 ++++++++++++++++++++ meta/recipes-core/uclibc/uclibc_git.bb | 4 +- 3 files changed, 401 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-core/uclibc/uclibc-git/orign_path.patch create mode 100644 meta/recipes-core/uclibc/uclibc-git/rtld_no.patch diff --git a/meta/recipes-core/uclibc/uclibc-git/orign_path.patch b/meta/recipes-core/uclibc/uclibc-git/orign_path.patch new file mode 100644 index 0000000..631951e --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/orign_path.patch @@ -0,0 +1,183 @@ +Patch is backported from +http://lists.busybox.net/pipermail/uclibc/2011-March/045003.html + +Upstream-Status: Pending + +diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c +index 505247e..2b2d429 100644 +--- a/ldso/ldso/dl-elf.c ++++ b/ldso/ldso/dl-elf.c +@@ -133,53 +133,60 @@ _dl_protect_relro (struct elf_resolve *l) + * in uClibc/ldso/util/ldd.c */ + static struct elf_resolve * + search_for_named_library(const char *name, int secure, const char *path_list, +- struct dyn_elf **rpnt) ++ struct dyn_elf **rpnt, const char *origin) + { +- char *path, *path_n, *mylibname; ++ char *mylibname; ++ const char *p, *pn; + struct elf_resolve *tpnt; +- int done; ++ int plen; + + if (path_list==NULL) + return NULL; + +- /* We need a writable copy of this string, but we don't +- * need this allocated permanently since we don't want +- * to leak memory, so use alloca to put path on the stack */ +- done = _dl_strlen(path_list); +- path = alloca(done + 1); +- + /* another bit of local storage */ + mylibname = alloca(2050); + +- _dl_memcpy(path, path_list, done+1); +- + /* Unlike ldd.c, don't bother to eliminate double //s */ + + /* Replace colons with zeros in path_list */ + /* : at the beginning or end of path maps to CWD */ + /* :: anywhere maps CWD */ + /* "" maps to CWD */ +- done = 0; +- path_n = path; +- do { +- if (*path == 0) { +- *path = ':'; +- done = 1; +- } +- if (*path == ':') { +- *path = 0; +- if (*path_n) +- _dl_strcpy(mylibname, path_n); +- else +- _dl_strcpy(mylibname, "."); /* Assume current dir if empty path */ +- _dl_strcat(mylibname, "/"); +- _dl_strcat(mylibname, name); +- if ((tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname)) != NULL) +- return tpnt; +- path_n = path+1; ++ for (p = path_list; p != NULL; p = pn) { ++ pn = _dl_strchr(p + 1, ':'); ++ if (pn != NULL) { ++ plen = pn - p; ++ pn++; ++ } else ++ plen = _dl_strlen(p); ++ ++ if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) { ++ int olen; ++ if (secure && plen != 7) ++ continue; ++ if (origin == NULL) ++ continue; ++ for (olen = _dl_strlen(origin) - 1; olen >= 0 && origin[olen] != '/'; olen--) ++ ; ++ if (olen <= 0) ++ continue; ++ _dl_memcpy(&mylibname[0], origin, olen); ++ _dl_memcpy(&mylibname[olen], p + 7, plen - 7); ++ mylibname[olen + plen - 7] = 0; ++ } else if (plen != 0) { ++ _dl_memcpy(mylibname, p, plen); ++ mylibname[plen] = 0; ++ } else { ++ _dl_strcpy(mylibname, "."); + } +- path++; +- } while (!done); ++ _dl_strcat(mylibname, "/"); ++ _dl_strcat(mylibname, name); ++ ++ tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname); ++ if (tpnt != NULL) ++ return tpnt; ++ } ++ + return NULL; + } + +@@ -231,7 +238,8 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, ++ tpnt->libname)) != NULL) + return tpnt1; + } + #endif +@@ -239,7 +247,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */ + if (_dl_library_path) { + _dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path); +- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL) + { + return tpnt1; + } +@@ -253,7 +261,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL) + return tpnt1; + } + #endif +@@ -287,7 +295,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Look for libraries wherever the shared library loader + * was installed */ + _dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath); +- tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt); ++ tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + +@@ -300,7 +308,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + #ifndef __LDSO_CACHE_SUPPORT__ + ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" + #endif +- , rpnt); ++ , rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + +diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c +index 7ee9257..9423670 100644 +--- a/ldso/ldso/ldso.c ++++ b/ldso/ldso/ldso.c +@@ -272,6 +272,20 @@ static void __attribute__ ((destructor)) __attribute_used__ _dl_fini(void) + } + } + ++static void _dl_setup_progname(const char *argv0) ++{ ++ char image[PATH_MAX]; ++ ssize_t s; ++ ++ s = _dl_readlink("/proc/self/exe", image, sizeof(image)); ++ if (s > 0 && image[0] == '/') { ++ image[s] = 0; ++ _dl_progname = _dl_strdup(image); ++ } else if (argv0) { ++ _dl_progname = argv0; ++ } ++} ++ + void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp, + char **argv +@@ -321,9 +335,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + * been fixed up by now. Still no function calls outside of this + * library, since the dynamic resolver is not yet ready. + */ +- if (argv[0]) { +- _dl_progname = argv[0]; +- } ++ _dl_setup_progname(argv[0]); + + if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) { + _dl_dprintf(_dl_debug_file, "Standalone execution is not supported yet\n"); diff --git a/meta/recipes-core/uclibc/uclibc-git/rtld_no.patch b/meta/recipes-core/uclibc/uclibc-git/rtld_no.patch new file mode 100644 index 0000000..30cb7f6 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/rtld_no.patch @@ -0,0 +1,215 @@ +Patch is backported from +http://lists.busybox.net/pipermail/uclibc/2011-March/045004.html + +Upstream-Status: Pending + +diff --git a/ldso/include/dl-elf.h b/ldso/include/dl-elf.h +index 7fbb373..7102351 100644 +--- a/ldso/include/dl-elf.h ++++ b/ldso/include/dl-elf.h +@@ -25,16 +25,18 @@ static __inline__ void _dl_map_cache(void) { } + static __inline__ void _dl_unmap_cache(void) { } + #endif + ++#define DL_RESOLVE_SECURE 0x0001 ++#define DL_RESOLVE_NOLOAD 0x0002 + + /* Function prototypes for non-static stuff in readelflib1.c */ + extern void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt, + unsigned long rel_addr, unsigned long rel_size); + extern int _dl_parse_relocation_information(struct dyn_elf *rpnt, + unsigned long rel_addr, unsigned long rel_size); +-extern struct elf_resolve * _dl_load_shared_library(int secure, ++extern struct elf_resolve * _dl_load_shared_library(int resolve_flags, + struct dyn_elf **rpnt, struct elf_resolve *tpnt, char *full_libname, + int trace_loaded_objects); +-extern struct elf_resolve * _dl_load_elf_shared_library(int secure, ++extern struct elf_resolve * _dl_load_elf_shared_library(int resolve_flags, + struct dyn_elf **rpnt, char *libname); + extern struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libname, + int trace_loaded_objects); +diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c +index 2b2d429..6d35bf2 100644 +--- a/ldso/ldso/dl-elf.c ++++ b/ldso/ldso/dl-elf.c +@@ -132,7 +132,7 @@ _dl_protect_relro (struct elf_resolve *l) + /* This function's behavior must exactly match that + * in uClibc/ldso/util/ldd.c */ + static struct elf_resolve * +-search_for_named_library(const char *name, int secure, const char *path_list, ++search_for_named_library(const char *name, int resolve_flags, const char *path_list, + struct dyn_elf **rpnt, const char *origin) + { + char *mylibname; +@@ -162,7 +162,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + + if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) { + int olen; +- if (secure && plen != 7) ++ if ((resolve_flags & DL_RESOLVE_SECURE) && plen != 7) + continue; + if (origin == NULL) + continue; +@@ -182,7 +182,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + _dl_strcat(mylibname, "/"); + _dl_strcat(mylibname, name); + +- tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname); ++ tpnt = _dl_load_elf_shared_library(resolve_flags, rpnt, mylibname); + if (tpnt != NULL) + return tpnt; + } +@@ -194,7 +194,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + unsigned long _dl_error_number; + unsigned long _dl_internal_error_number; + +-struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, ++struct elf_resolve *_dl_load_shared_library(int resolve_flags, struct dyn_elf **rpnt, + struct elf_resolve *tpnt, char *full_libname, int attribute_unused trace_loaded_objects) + { + char *pnt; +@@ -223,7 +223,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + + if (libname != full_libname) { + _dl_if_debug_dprint("\ttrying file='%s'\n", full_libname); +- tpnt1 = _dl_load_elf_shared_library(secure, rpnt, full_libname); ++ tpnt1 = _dl_load_elf_shared_library(resolve_flags, rpnt, full_libname); + if (tpnt1) { + return tpnt1; + } +@@ -238,7 +238,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, pnt, rpnt, + tpnt->libname)) != NULL) + return tpnt1; + } +@@ -247,7 +247,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */ + if (_dl_library_path) { + _dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path); +- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, _dl_library_path, rpnt, NULL)) != NULL) + { + return tpnt1; + } +@@ -261,7 +261,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, pnt, rpnt, NULL)) != NULL) + return tpnt1; + } + #endif +@@ -284,7 +284,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + || libent[i].flags == LIB_ELF_LIBC0 + || libent[i].flags == LIB_ELF_LIBC5) + && _dl_strcmp(libname, strs + libent[i].sooffset) == 0 +- && (tpnt1 = _dl_load_elf_shared_library(secure, rpnt, strs + libent[i].liboffset)) ++ && (tpnt1 = _dl_load_elf_shared_library(resolve_flags, rpnt, strs + libent[i].liboffset)) + ) { + return tpnt1; + } +@@ -295,14 +295,14 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Look for libraries wherever the shared library loader + * was installed */ + _dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath); +- tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL); ++ tpnt1 = search_for_named_library(libname, resolve_flags, _dl_ldsopath, rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + + /* Lastly, search the standard list of paths for the library. + This list must exactly match the list in uClibc/ldso/util/ldd.c */ + _dl_if_debug_dprint("\tsearching full lib path list\n"); +- tpnt1 = search_for_named_library(libname, secure, ++ tpnt1 = search_for_named_library(libname, resolve_flags, + UCLIBC_RUNTIME_PREFIX "lib:" + UCLIBC_RUNTIME_PREFIX "usr/lib" + #ifndef __LDSO_CACHE_SUPPORT__ +@@ -329,7 +329,7 @@ goof: + * are required. + */ + +-struct elf_resolve *_dl_load_elf_shared_library(int secure, ++struct elf_resolve *_dl_load_elf_shared_library(int resolve_flags, + struct dyn_elf **rpnt, char *libname) + { + ElfW(Ehdr) *epnt; +@@ -368,7 +368,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure, + } + /* If we are in secure mode (i.e. a setu/gid binary using LD_PRELOAD), + we don't load the library if it isn't setuid. */ +- if (secure) { ++ if (resolve_flags & DL_RESOLVE_SECURE) { + if (!(st.st_mode & S_ISUID)) { + _dl_close(infile); + return NULL; +@@ -384,6 +384,10 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure, + return tpnt; + } + } ++ if (resolve_flags & DL_RESOLVE_NOLOAD) { ++ _dl_close(infile); ++ return NULL; ++ } + header = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0); + if (_dl_mmap_check_error(header)) { +diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c +index 9423670..b71af34 100644 +--- a/ldso/ldso/ldso.c ++++ b/ldso/ldso/ldso.c +@@ -646,7 +646,9 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + if (!_dl_secure || _dl_strchr(str, '/') == NULL) { + _dl_if_debug_dprint("\tfile='%s'; needed by '%s'\n", str, _dl_progname); + +- tpnt1 = _dl_load_shared_library(_dl_secure, &rpnt, NULL, str, trace_loaded_objects); ++ tpnt1 = _dl_load_shared_library( ++ _dl_secure ? DL_RESOLVE_SECURE : 0, ++ &rpnt, NULL, str, trace_loaded_objects); + if (!tpnt1) { + #ifdef __LDSO_LDD_SUPPORT__ + if (trace_loaded_objects) +diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c +index 68cd579..edf38d2 100644 +--- a/ldso/libdl/libdl.c ++++ b/ldso/libdl/libdl.c +@@ -288,7 +288,7 @@ void *dlopen(const char *libname, int flag) + #endif + + /* A bit of sanity checking... */ +- if (!(flag & (RTLD_LAZY|RTLD_NOW))) { ++ if (!(flag & (RTLD_LAZY|RTLD_NOW|RTLD_NOLOAD))) { + _dl_error_number = LD_BAD_HANDLE; + return NULL; + } +@@ -358,8 +358,9 @@ void *dlopen(const char *libname, int flag) + /* Try to load the specified library */ + _dl_if_debug_print("Trying to dlopen '%s', RTLD_GLOBAL:%d RTLD_NOW:%d\n", + (char*)libname, (flag & RTLD_GLOBAL ? 1:0), (now_flag & RTLD_NOW ? 1:0)); +- tpnt = _dl_load_shared_library(0, &rpnt, tfrom, (char*)libname, 0); + ++ tpnt = _dl_load_shared_library((flag & RTLD_NOLOAD) ? DL_RESOLVE_NOLOAD : 0, ++ &rpnt, tfrom, (char*)libname, 0); + if (tpnt == NULL) { + _dl_unmap_cache(); + return NULL; +diff --git a/libc/sysdeps/linux/common/bits/dlfcn.h b/libc/sysdeps/linux/common/bits/dlfcn.h +index 4bfbbff..47b42ad 100644 +--- a/libc/sysdeps/linux/common/bits/dlfcn.h ++++ b/libc/sysdeps/linux/common/bits/dlfcn.h +@@ -24,9 +24,9 @@ + /* The MODE argument to `dlopen' contains one of the following: */ + #define RTLD_LAZY 0x00001 /* Lazy function call binding. */ + #define RTLD_NOW 0x00002 /* Immediate function call binding. */ +-#if 0 /* uClibc doesnt support these */ +-#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */ ++#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */ + #define RTLD_NOLOAD 0x00004 /* Do not load the object. */ ++#if 0 /* uClibc doesnt support these */ + #define RTLD_DEEPBIND 0x00008 /* Use deep binding. */ + #endif diff --git a/meta/recipes-core/uclibc/uclibc_git.bb b/meta/recipes-core/uclibc/uclibc_git.bb index b8f58f0..6445243 100644 --- a/meta/recipes-core/uclibc/uclibc_git.bb +++ b/meta/recipes-core/uclibc/uclibc_git.bb @@ -2,7 +2,7 @@ SRCREV="71d63ed75648da9b0b71afabb9c60aaad792c55c" require uclibc.inc PV = "0.9.31+0.9.32rc3" -PR = "${INC_PR}.3" +PR = "${INC_PR}.4" PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-git' ], d)}" @@ -27,5 +27,7 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \ file://append_UCLIBC_EXTRA_CFLAGS.patch \ file://compile-arm-fork-with-O2.patch \ file://epoll-asm-fix.patch \ + file://orign_path.patch \ + file://rtld_no.patch \ " S = "${WORKDIR}/git" -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] uclibc and related fixes 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj ` (3 preceding siblings ...) 2011-06-22 1:44 ` [PATCH 4/4] uclibc: Add support for $ORIGIN Khem Raj @ 2011-06-22 15:42 ` Richard Purdie 2011-06-22 15:57 ` Khem Raj 4 siblings, 1 reply; 8+ messages in thread From: Richard Purdie @ 2011-06-22 15:42 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2011-06-21 at 18:44 -0700, Khem Raj wrote: > Fix uclibc build for x86_64 > gettext compile failed on uclibc so fix it and additionally > remove unused patches > Add required support for systemd to function with uclibc > Quash a parse warning where uclibc-initial and uclibc > both provided libsegfault > > The following changes since commit 78de64f58b98101f5be5778e9ecbdaae5ba32997: > > binutils_2.21.bb: Fix ld segfault exposed by eglibc 2.14 on x86_64 (2011-06-21 17:58:06 -0700) > > are available in the git repository at: > git://git.openembedded.org/openembedded-core-contrib kraj/uclibc > http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/uclibc > > Khem Raj (4): > uclibc.inc: libsegfault is only RPROVIDED by uclibc > gettext-0.18.1.1: Remove unused patches > uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU > uclibc: Add support for $ORIGIN Merged to master, thanks. I had reservations about the first one as hardcoding PN can have issues with BBCLASSEXTEND but looking at the recipe, there are bigger issues if we were ever to do that :/ Cheers, Richard ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] uclibc and related fixes 2011-06-22 15:42 ` [PATCH 0/4] uclibc and related fixes Richard Purdie @ 2011-06-22 15:57 ` Khem Raj 2011-06-22 16:10 ` Richard Purdie 0 siblings, 1 reply; 8+ messages in thread From: Khem Raj @ 2011-06-22 15:57 UTC (permalink / raw) To: openembedded-core [-- Attachment #1: Type: text/plain, Size: 1527 bytes --] On 06/22/2011 08:42 AM, Richard Purdie wrote: > On Tue, 2011-06-21 at 18:44 -0700, Khem Raj wrote: >> Fix uclibc build for x86_64 >> gettext compile failed on uclibc so fix it and additionally >> remove unused patches >> Add required support for systemd to function with uclibc >> Quash a parse warning where uclibc-initial and uclibc >> both provided libsegfault >> >> The following changes since commit 78de64f58b98101f5be5778e9ecbdaae5ba32997: >> >> binutils_2.21.bb: Fix ld segfault exposed by eglibc 2.14 on x86_64 (2011-06-21 17:58:06 -0700) >> >> are available in the git repository at: >> git://git.openembedded.org/openembedded-core-contrib kraj/uclibc >> http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/uclibc >> >> Khem Raj (4): >> uclibc.inc: libsegfault is only RPROVIDED by uclibc >> gettext-0.18.1.1: Remove unused patches >> uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU >> uclibc: Add support for $ORIGIN > > Merged to master, thanks. > > I had reservations about the first one as hardcoding PN can have issues > with BBCLASSEXTEND but looking at the recipe, there are bigger issues if > we were ever to do that :/ > in attached patch I moved it to uclibc recipe is that better ? > Cheers, > > Richard > > > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core [-- Attachment #2: 0001-uclibc.inc-libsegfault-is-only-RPROVIDED-by-uclibc.patch --] [-- Type: text/x-diff, Size: 1956 bytes --] From 28232ad0c9bea3133493e056e7d828958e74da66 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 11 Jun 2011 01:47:33 -0700 Subject: [PATCH] uclibc.inc: libsegfault is only RPROVIDED by uclibc Using ${PN} also means that uclibc-initial gets to provide it which we do not want so move this to uclibc recipe Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/recipes-core/uclibc/uclibc.inc | 1 - meta/recipes-core/uclibc/uclibc_git.bb | 5 +++++ 2 files changed, 5 insertions(+), 1 deletions(-) diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc index 00f5e8d..13a6164 100644 --- a/meta/recipes-core/uclibc/uclibc.inc +++ b/meta/recipes-core/uclibc/uclibc.inc @@ -89,7 +89,6 @@ RPROVIDES_uclibc-dev += "libc-dev virtual-libc-dev" # uclibc does not really have libsegfault but then using the one from glibc is also not # going to work. So we pretend that we have it to make bitbake not pull other recipes # to satisfy this dependency for the images/tasks -RPROVIDES_${PN} += "libsegfault" SRC_URI = "\ http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2;name=uClibc-${PV} \ diff --git a/meta/recipes-core/uclibc/uclibc_git.bb b/meta/recipes-core/uclibc/uclibc_git.bb index 6445243..d5b9e40 100644 --- a/meta/recipes-core/uclibc/uclibc_git.bb +++ b/meta/recipes-core/uclibc/uclibc_git.bb @@ -5,6 +5,11 @@ PV = "0.9.31+0.9.32rc3" PR = "${INC_PR}.4" PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc" +# uclibc does not really have libsegfault but then using the one from glibc is also not +# going to work. So we pretend that we have it to make bitbake not pull other recipes +# to satisfy this dependency for the images/tasks + +RPROVIDES_${PN} += "libsegfault" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-git' ], d)}" SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \ -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] uclibc and related fixes 2011-06-22 15:57 ` Khem Raj @ 2011-06-22 16:10 ` Richard Purdie 0 siblings, 0 replies; 8+ messages in thread From: Richard Purdie @ 2011-06-22 16:10 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-06-22 at 08:57 -0700, Khem Raj wrote: > On 06/22/2011 08:42 AM, Richard Purdie wrote: > > On Tue, 2011-06-21 at 18:44 -0700, Khem Raj wrote: > >> Fix uclibc build for x86_64 > >> gettext compile failed on uclibc so fix it and additionally > >> remove unused patches > >> Add required support for systemd to function with uclibc > >> Quash a parse warning where uclibc-initial and uclibc > >> both provided libsegfault > >> > >> The following changes since commit 78de64f58b98101f5be5778e9ecbdaae5ba32997: > >> > >> binutils_2.21.bb: Fix ld segfault exposed by eglibc 2.14 on x86_64 (2011-06-21 17:58:06 -0700) > >> > >> are available in the git repository at: > >> git://git.openembedded.org/openembedded-core-contrib kraj/uclibc > >> http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/uclibc > >> > >> Khem Raj (4): > >> uclibc.inc: libsegfault is only RPROVIDED by uclibc > >> gettext-0.18.1.1: Remove unused patches > >> uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU > >> uclibc: Add support for $ORIGIN > > > > Merged to master, thanks. > > > > I had reservations about the first one as hardcoding PN can have issues > > with BBCLASSEXTEND but looking at the recipe, there are bigger issues if > > we were ever to do that :/ > > > > in attached patch I moved it to uclibc recipe is that better ? Its better, yes and its what I was going to suggest until I realised there were other issues that BBCLASSEXTEND would have with the recipe. Its certainly something to keep in mind in the future... Cheers, Richard ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-06-22 16:14 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-06-22 1:44 [PATCH 0/4] uclibc and related fixes Khem Raj 2011-06-22 1:44 ` [PATCH 1/4] uclibc.inc: libsegfault is only RPROVIDED by uclibc Khem Raj 2011-06-22 1:44 ` [PATCH 2/4] gettext-0.18.1.1: Remove unused patches Khem Raj 2011-06-22 1:44 ` [PATCH 3/4] uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU Khem Raj 2011-06-22 1:44 ` [PATCH 4/4] uclibc: Add support for $ORIGIN Khem Raj 2011-06-22 15:42 ` [PATCH 0/4] uclibc and related fixes Richard Purdie 2011-06-22 15:57 ` Khem Raj 2011-06-22 16:10 ` Richard Purdie
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox