| From 50ab0b0c116f4ae3d975ec1b15ed4595fd9147f6 Mon Sep 17 00:00:00 2001 |
| From: Khem Raj <raj.khem@gmail.com> |
| Date: Fri, 3 Aug 2018 09:55:12 -0700 |
| Subject: [PATCH 05/28] nativesdk-glibc: Make relocatable install for locales |
| |
| The glibc locale path is hard-coded to the install prefix, but in SDKs we need |
| to be able to relocate the binaries. Expand the strings to 4K and put them in a |
| magic segment that we can relocate at install time. |
| |
| Upstream-Status: Inappropriate (OE-specific) |
| |
| Signed-off-by: Ross Burton <ross.burton@intel.com> |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| --- |
| locale/findlocale.c | 4 ++-- |
| locale/loadarchive.c | 2 +- |
| locale/localeinfo.h | 2 +- |
| 3 files changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/locale/findlocale.c b/locale/findlocale.c |
| index 9af605bd64..b2b0a3f93b 100644 |
| --- a/locale/findlocale.c |
| +++ b/locale/findlocale.c |
| @@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden = |
| 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_hidden __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR; |
| |
| /* Checks if the name is actually present, that is, not NULL and not |
| empty. */ |
| @@ -167,7 +167,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, |
| |
| /* 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(locale_path) + 1; |
| } |
| else |
| /* We really have to load some data. First see whether the name is |
| diff --git a/locale/loadarchive.c b/locale/loadarchive.c |
| index 803c1cf2a4..9023f475b8 100644 |
| --- a/locale/loadarchive.c |
| +++ b/locale/loadarchive.c |
| @@ -42,7 +42,7 @@ |
| |
| |
| /* Name of the locale archive file. */ |
| -static const char archfname[] = COMPLOCALEDIR "/locale-archive"; |
| +static const char archfname[4096] __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR "/locale-archive"; |
| |
| /* Size of initial mapping window, optimal if large enough to |
| cover the header plus the initial locale. */ |
| diff --git a/locale/localeinfo.h b/locale/localeinfo.h |
| index 7c1cc3eecb..53cb8bfc59 100644 |
| --- a/locale/localeinfo.h |
| +++ b/locale/localeinfo.h |
| @@ -325,7 +325,7 @@ _nl_lookup_word (locale_t l, int category, int item) |
| } |
| |
| /* Default search path if no LOCPATH environment variable. */ |
| -extern const char _nl_default_locale_path[] attribute_hidden; |
| +extern char _nl_default_locale_path[4096] 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 |
| -- |
| 2.22.0 |
| |