[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r5956 - in glibc-package/trunk/debian: . patches patches/any



Author: aurel32
Date: 2014-02-22 19:46:09 +0000 (Sat, 22 Feb 2014)
New Revision: 5956

Added:
   glibc-package/trunk/debian/patches/any/local-ldconfig-ignore-ld.so.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
  [ Aurelien Jarno ]
  * any/local-ldconfig-ignore-ld.so.diff: new patch to ignore the dynamic
    linker in ldconfig.  Closes: #699206, #707185, #727786, #736097,
    #739734, #739758.



Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2014-02-22 16:20:50 UTC (rev 5955)
+++ glibc-package/trunk/debian/changelog	2014-02-22 19:46:09 UTC (rev 5956)
@@ -2,7 +2,11 @@
 
   !!! PLEASE MOVE ALL MAJOR DEVELOPMENT TO THE 2.19 BRANCH OR UPSTREAM !!!
 
-  * 
+  [ Aurelien Jarno ]
+  * any/local-ldconfig-ignore-ld.so.diff: new patch to ignore the dynamic
+    linker in ldconfig.  Closes: #699206, #707185, #727786, #736097,
+    #739734, #739758.
+
   [ Petr Salinger ]
   * kfreebsd/local-sysdeps.diff: update to revision 5443 (from glibc-bsd).
 

Added: glibc-package/trunk/debian/patches/any/local-ldconfig-ignore-ld.so.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/local-ldconfig-ignore-ld.so.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/any/local-ldconfig-ignore-ld.so.diff	2014-02-22 19:46:09 UTC (rev 5956)
@@ -0,0 +1,55 @@
+diff --git a/elf/ldconfig.c b/elf/ldconfig.c
+index 4211f4c..6425f8e 100644
+--- a/elf/ldconfig.c
++++ b/elf/ldconfig.c
+@@ -450,6 +450,23 @@ chroot_stat (const char *real_path, const char *path, struct stat64 *st)
+   return ret;
+ }
+ 
++static const char * const ld_sonames[] =
++{
++  "ld-kfreebsd-x86-64.so.1",
++  "ld-linux-aarch64.so.1",
++  "ld-linux-aarch64_be.so.1",
++  "ld-linux-armhf.so.3",
++  "ld-linux-ia64.so.2",
++  "ld-linux-mipsn8.so.1",
++  "ld-linux-x32.so.2",
++  "ld-linux-x86-64.so.2",
++  "ld-linux.so.2",
++  "ld-linux.so.3",
++  "ld.so.1",
++  "ld64.so.1",
++  "ld64.so.2",
++};
++
+ /* Create a symbolic link from soname to libname in directory path.  */
+ static void
+ create_links (const char *real_path, const char *path, const char *libname,
+@@ -460,6 +477,7 @@ create_links (const char *real_path, const char *path, const char *libname,
+   struct stat64 stat_lib, stat_so, lstat_so;
+   int do_link = 1;
+   int do_remove = 1;
++  int i;
+   /* XXX: The logics in this function should be simplified.  */
+ 
+   /* Get complete path.  */
+@@ -488,6 +506,18 @@ create_links (const char *real_path, const char *path, const char *libname,
+ 	  error (0, 0, _("Can't stat %s\n"), full_libname);
+ 	  return;
+ 	}
++
++      /* Do not change the symlink pointer to the dynamic linker except for
++	 non-existing symlinks, as it might break break multiarch systems.  */
++      for (i = 0; i < sizeof (ld_sonames) / sizeof (ld_sonames[0]); i++)
++	if (__glibc_unlikely(!strcmp(soname, ld_sonames[i])))
++	  {
++	    if (opt_verbose)
++	      error (0, 0, _("%s is the dynamic linker, ignoring\n"),
++			     full_libname);
++	    do_link = 0;
++	  }
++
+       if (stat_lib.st_dev == stat_so.st_dev
+ 	  && stat_lib.st_ino == stat_so.st_ino)
+ 	/* Link is already correct.  */

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2014-02-22 16:20:50 UTC (rev 5955)
+++ glibc-package/trunk/debian/patches/series	2014-02-22 19:46:09 UTC (rev 5956)
@@ -265,3 +265,4 @@
 any/cvs-DL_CALL_DT_INIT_FINI.diff
 any/cvs-vfscanf-0e+0.diff
 any/cvs-ptrace_peeksiginfo_args.diff
+any/local-ldconfig-ignore-ld.so.diff


Reply to: