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 diff --git a/locale/findlocale.c b/locale/findlocale.c index 872cadb5..da14fa39 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/localeinfo.h b/locale/localeinfo.h index 68822a63..537bc351 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 diff --git a/locale/loadarchive.c b/locale/loadarchive.c index 516d30d8..792b37fb 100644 --- a/locale/loadarchive.c +++ b/locale/loadarchive.c @@ -42,7 +43,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. */