diff options
Diffstat (limited to 'meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch')
-rw-r--r-- | meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch b/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch new file mode 100644 index 0000000000..66abcce3ce --- /dev/null +++ b/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch | |||
@@ -0,0 +1,67 @@ | |||
1 | From ee9d5e423e4a709ae5a62abfb476863b3b57378f Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Fri, 3 Aug 2018 09:55:12 -0700 | ||
4 | Subject: [PATCH] nativesdk-glibc: Make relocatable install for locales | ||
5 | |||
6 | The glibc locale path is hard-coded to the install prefix, but in SDKs we need | ||
7 | to be able to relocate the binaries. Expand the strings to 4K and put them in a | ||
8 | magic segment that we can relocate at install time. | ||
9 | |||
10 | Upstream-Status: Inappropriate (OE-specific) | ||
11 | |||
12 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | --- | ||
15 | locale/findlocale.c | 4 ++-- | ||
16 | locale/loadarchive.c | 2 +- | ||
17 | locale/localeinfo.h | 2 +- | ||
18 | 3 files changed, 4 insertions(+), 4 deletions(-) | ||
19 | |||
20 | diff --git a/locale/findlocale.c b/locale/findlocale.c | ||
21 | index 9cd3b71a6d..84272310e0 100644 | ||
22 | --- a/locale/findlocale.c | ||
23 | +++ b/locale/findlocale.c | ||
24 | @@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden = | ||
25 | which are somehow addressed. */ | ||
26 | struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST]; | ||
27 | |||
28 | -const char _nl_default_locale_path[] attribute_hidden = COMPLOCALEDIR; | ||
29 | +char _nl_default_locale_path[4096] attribute_hidden __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR; | ||
30 | |||
31 | /* Checks if the name is actually present, that is, not NULL and not | ||
32 | empty. */ | ||
33 | @@ -166,7 +166,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, | ||
34 | |||
35 | /* Nothing in the archive. Set the default path to search below. */ | ||
36 | locale_path = _nl_default_locale_path; | ||
37 | - locale_path_len = sizeof _nl_default_locale_path; | ||
38 | + locale_path_len = strlen(locale_path) + 1; | ||
39 | } | ||
40 | else | ||
41 | /* We really have to load some data. First see whether the name is | ||
42 | diff --git a/locale/loadarchive.c b/locale/loadarchive.c | ||
43 | index ba0fe45648..9737fd4cda 100644 | ||
44 | --- a/locale/loadarchive.c | ||
45 | +++ b/locale/loadarchive.c | ||
46 | @@ -42,7 +42,7 @@ | ||
47 | |||
48 | |||
49 | /* Name of the locale archive file. */ | ||
50 | -static const char archfname[] = COMPLOCALEDIR "/locale-archive"; | ||
51 | +static const char archfname[4096] __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR "/locale-archive"; | ||
52 | |||
53 | /* Size of initial mapping window, optimal if large enough to | ||
54 | cover the header plus the initial locale. */ | ||
55 | diff --git a/locale/localeinfo.h b/locale/localeinfo.h | ||
56 | index 1bfe22aa7f..fdc283c69a 100644 | ||
57 | --- a/locale/localeinfo.h | ||
58 | +++ b/locale/localeinfo.h | ||
59 | @@ -331,7 +331,7 @@ _nl_lookup_word (locale_t l, int category, int item) | ||
60 | } | ||
61 | |||
62 | /* Default search path if no LOCPATH environment variable. */ | ||
63 | -extern const char _nl_default_locale_path[] attribute_hidden; | ||
64 | +extern char _nl_default_locale_path[4096] attribute_hidden; | ||
65 | |||
66 | /* Load the locale data for CATEGORY from the file specified by *NAME. | ||
67 | If *NAME is "", use environment variables as specified by POSIX, and | ||