nativesdk-glibc: Extend relocation support to locales
Currently locales are not found in a relocated buildtools-tarball such as that used in eSDK. This breaks bitbake when used under python3. This patch adds enough relocation magic to nativesdk-glibc so that the binary locales can be found even in a relocated buildtools-tarball and bitbake works successfully under python3. The eSDK also works correctly after this change too. (From OE-Core rev: faa1229ba848e7a4a90638a98d6c809065016a93) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
6b3ac016d3
commit
0111181bbb
|
@ -24,10 +24,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|||
sysdeps/generic/dl-cache.h | 4 ----
|
||||
6 files changed, 13 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/elf/dl-cache.c b/elf/dl-cache.c
|
||||
index cfa335e..daa12ec 100644
|
||||
--- a/elf/dl-cache.c
|
||||
+++ b/elf/dl-cache.c
|
||||
Index: git/elf/dl-cache.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-cache.c
|
||||
+++ git/elf/dl-cache.c
|
||||
@@ -132,6 +132,10 @@ do \
|
||||
while (0)
|
||||
|
||||
|
@ -39,11 +39,11 @@ index cfa335e..daa12ec 100644
|
|||
int
|
||||
internal_function
|
||||
_dl_cache_libcmp (const char *p1, const char *p2)
|
||||
diff --git a/elf/dl-load.c b/elf/dl-load.c
|
||||
index c7b8797..37a1beb 100644
|
||||
--- a/elf/dl-load.c
|
||||
+++ b/elf/dl-load.c
|
||||
@@ -106,8 +106,8 @@ static size_t max_capstrlen attribute_relro;
|
||||
Index: git/elf/dl-load.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-load.c
|
||||
+++ git/elf/dl-load.c
|
||||
@@ -106,8 +106,8 @@ static size_t max_capstrlen attribute_re
|
||||
/* Get the generated information about the trusted directories. */
|
||||
#include "trusted-dirs.h"
|
||||
|
||||
|
@ -54,10 +54,10 @@ index c7b8797..37a1beb 100644
|
|||
{
|
||||
SYSTEM_DIRS_LEN
|
||||
};
|
||||
diff --git a/elf/interp.c b/elf/interp.c
|
||||
index 9448802..e7e8c70 100644
|
||||
--- a/elf/interp.c
|
||||
+++ b/elf/interp.c
|
||||
Index: git/elf/interp.c
|
||||
===================================================================
|
||||
--- git.orig/elf/interp.c
|
||||
+++ git/elf/interp.c
|
||||
@@ -18,5 +18,5 @@
|
||||
|
||||
#include <runtime-linker.h>
|
||||
|
@ -65,10 +65,10 @@ index 9448802..e7e8c70 100644
|
|||
-const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
|
||||
+const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
|
||||
= RUNTIME_LINKER;
|
||||
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
|
||||
index 467ca82..631a2a9 100644
|
||||
--- a/elf/ldconfig.c
|
||||
+++ b/elf/ldconfig.c
|
||||
Index: git/elf/ldconfig.c
|
||||
===================================================================
|
||||
--- git.orig/elf/ldconfig.c
|
||||
+++ git/elf/ldconfig.c
|
||||
@@ -168,6 +168,9 @@ static struct argp argp =
|
||||
options, parse_opt, NULL, doc, NULL, more_help, NULL
|
||||
};
|
||||
|
@ -79,10 +79,10 @@ index 467ca82..631a2a9 100644
|
|||
/* Check if string corresponds to an important hardware capability or
|
||||
a platform. */
|
||||
static int
|
||||
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||
index 647661c..4e16a43 100644
|
||||
--- a/elf/rtld.c
|
||||
+++ b/elf/rtld.c
|
||||
Index: git/elf/rtld.c
|
||||
===================================================================
|
||||
--- git.orig/elf/rtld.c
|
||||
+++ git/elf/rtld.c
|
||||
@@ -99,6 +99,7 @@ uintptr_t __pointer_chk_guard_local
|
||||
strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
|
||||
#endif
|
||||
|
@ -91,7 +91,7 @@ index 647661c..4e16a43 100644
|
|||
|
||||
/* List of auditing DSOs. */
|
||||
static struct audit_list
|
||||
@@ -873,12 +874,12 @@ of this helper program; chances are you did not intend to run this program.\n\
|
||||
@@ -873,12 +874,12 @@ of this helper program; chances are you
|
||||
--list list all dependencies and how they are resolved\n\
|
||||
--verify verify that given object really is a dynamically linked\n\
|
||||
object we can handle\n\
|
||||
|
@ -106,10 +106,10 @@ index 647661c..4e16a43 100644
|
|||
|
||||
++_dl_skip_args;
|
||||
--_dl_argc;
|
||||
diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
|
||||
index eb2f900..505804e 100644
|
||||
--- a/sysdeps/generic/dl-cache.h
|
||||
+++ b/sysdeps/generic/dl-cache.h
|
||||
Index: git/sysdeps/generic/dl-cache.h
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/generic/dl-cache.h
|
||||
+++ git/sysdeps/generic/dl-cache.h
|
||||
@@ -27,10 +27,6 @@
|
||||
((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
|
||||
#endif
|
||||
|
@ -121,9 +121,10 @@ index eb2f900..505804e 100644
|
|||
#ifndef add_system_dir
|
||||
# define add_system_dir(dir) add_dir (dir)
|
||||
#endif
|
||||
diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
|
||||
--- a/iconv/gconv_conf.c
|
||||
+++ b/iconv/gconv_conf.c
|
||||
Index: git/iconv/gconv_conf.c
|
||||
===================================================================
|
||||
--- git.orig/iconv/gconv_conf.c
|
||||
+++ git/iconv/gconv_conf.c
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
|
||||
|
@ -133,6 +134,38 @@ diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
|
|||
|
||||
/* The path elements, as determined by the __gconv_get_path function.
|
||||
All path elements end in a slash. */
|
||||
--
|
||||
2.8.2
|
||||
|
||||
Index: git/locale/findlocale.c
|
||||
===================================================================
|
||||
--- git.orig/locale/findlocale.c
|
||||
+++ git/locale/findlocale.c
|
||||
@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attr
|
||||
which are somehow addressed. */
|
||||
struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
|
||||
|
||||
-const char _nl_default_locale_path[] attribute_hidden = COMPLOCALEDIR;
|
||||
+char _nl_default_locale_path[4096] __attribute__ ((section (".gccrelocprefix"))) attribute_hidden = COMPLOCALEDIR;
|
||||
|
||||
/* Checks if the name is actually present, that is, not NULL and not
|
||||
empty. */
|
||||
@@ -168,7 +168,7 @@ _nl_find_locale (const char *locale_path
|
||||
|
||||
/* Nothing in the archive. Set the default path to search below. */
|
||||
locale_path = _nl_default_locale_path;
|
||||
- locale_path_len = sizeof _nl_default_locale_path;
|
||||
+ locale_path_len = strlen(_nl_default_locale_path) + 1;
|
||||
}
|
||||
else
|
||||
/* We really have to load some data. First see whether the name is
|
||||
Index: git/locale/localeinfo.h
|
||||
===================================================================
|
||||
--- git.orig/locale/localeinfo.h
|
||||
+++ git/locale/localeinfo.h
|
||||
@@ -322,7 +322,7 @@ _nl_lookup_word (locale_t l, int categor
|
||||
}
|
||||
|
||||
/* Default search path if no LOCPATH environment variable. */
|
||||
-extern const char _nl_default_locale_path[] attribute_hidden;
|
||||
+extern char _nl_default_locale_path[] attribute_hidden;
|
||||
|
||||
/* Load the locale data for CATEGORY from the file specified by *NAME.
|
||||
If *NAME is "", use environment variables as specified by POSIX, and
|
||||
|
|
Loading…
Reference in New Issue