]> code.ossystems Code Review - openembedded-core.git/commitdiff
glibc: Update nativesdk locale relocation patch
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 9 Mar 2020 20:59:11 +0000 (20:59 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 6 Sep 2020 15:56:30 +0000 (16:56 +0100)
The locale binary reported incorrect locale lists in relocated toolchains
as some path references were not relocated by this patch. Fix this missing
relocations so the locale binary correctly reports the locales.

(From OE-Core rev: f7a6a72880009380ae81bc7fc863921a26811c8c)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch

index 3aad603ada9c54bd51c0e3cffaac56e484882bba..5cd235f6ac9b332f1275aeb08baa3e3d2fb736b9 100644 (file)
@@ -65,6 +65,35 @@ index 7c1cc3eecb..53cb8bfc59 100644
  
  /* 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
-
+Index: git/locale/programs/locale.c
+===================================================================
+--- git.orig/locale/programs/locale.c
++++ git/locale/programs/locale.c
+@@ -632,6 +632,7 @@ nameentcmp (const void *a, const void *b
+                 ((const struct nameent *) b)->name);
+ }
++static char _write_archive_locales_path[4096] attribute_hidden __attribute__ ((section (".gccrelocprefix"))) = ARCHIVE_NAME;
+ static int
+ write_archive_locales (void **all_datap, char *linebuf)
+@@ -645,7 +646,7 @@ write_archive_locales (void **all_datap,
+   int fd, ret = 0;
+   uint32_t cnt;
+-  fd = open64 (ARCHIVE_NAME, O_RDONLY);
++  fd = open64 (_write_archive_locales_path, O_RDONLY);
+   if (fd < 0)
+     return 0;
+@@ -700,8 +701,8 @@ write_archive_locales (void **all_datap,
+         if (cnt)
+           putchar_unlocked ('\n');
+-        printf ("locale: %-15.15s archive: " ARCHIVE_NAME "\n%s\n",
+-                names[cnt].name, linebuf);
++        printf ("locale: %-15.15s archive: %s\n%s\n",
++                names[cnt].name, _write_archive_locales_path, linebuf);
+         locrec = (struct locrecent *) (addr + names[cnt].locrec_offset);