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

r5184 - in glibc-package/trunk/debian: . debhelper.in patches patches/arm rules.d sysdeps



Author: adconrad
Date: 2012-04-17 02:32:24 +0000 (Tue, 17 Apr 2012)
New Revision: 5184

Added:
   glibc-package/trunk/debian/patches/arm/unsubmitted-armhf-linker.diff
   glibc-package/trunk/debian/patches/arm/unsubmitted-soname-hack.diff
Removed:
   glibc-package/trunk/debian/debhelper.in/libc-udeb.install.armhf
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/debhelper.in/libc.preinst
   glibc-package/trunk/debian/libc6.symbols.armhf
   glibc-package/trunk/debian/patches/series
   glibc-package/trunk/debian/rules.d/build.mk
   glibc-package/trunk/debian/sysdeps/armel.mk
   glibc-package/trunk/debian/sysdeps/armhf.mk
Log:
* debian/patches/arm/unsubmitted-armhf-linker.diff: Add the new armhf
  linker to the triplet/LDSO table in ports/sysdeps/arm/shlib-versions
* debian/sysdeps/arm{el,hf}.mk: Stop installing armhf linker to its
  multiarch path, the new standard path is /lib/ld-linux-armhf.so.3
* debian/sysdeps/arm{el,hf}.mk: Define configure targets for alt libs
* debian/sysdeps/arm{el,hf}.mk: Provide compat symlinks in armhf builds
  so that old binaries continue to work without needing rebuilding
* debian/rules.d/build.mk: Change ldd to use the new armhf linker path
* debian/libc6.symbols.armhf: ld-linux-armhf.so.3 depends on having a
  new enough version of libc6 installed to make the linker available
* debian/patches/arm/unsubmitted-soname-hack.diff: Apply unfortunate
  hack to elf/dl-load.c to allow our old binaries keep running with the
  new linker, by spoofing the SONAME of the new as if it were the old
* debian/debhelper.in/libc-udeb.install.armhf: No longer required
* debian/sysdeps/armhf.mk: Create symlink in the udeb for legacy linker
* debian/debhelper.in/libc.preinst: When we upgrade from older versions,
  our linker doesn't exist before unpack, so create a temporary one.
* debian/sysdeps/armhf.mk: Drop the obsolete armel/armhf compat symlink

Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/changelog	2012-04-17 02:32:24 UTC (rev 5184)
@@ -4,6 +4,24 @@
   * debian/rules.d/debhelper.mk: Fix RTLD_SO replacement regex for sanity.
   * debian/debhelper.in/libc{,-alt}.postrm: If we remove libc6:i386 before
     libc6-i386:amd64, maintain sanity of /lib/ld-linux.so.2 (LP: #852101)
+  * debian/patches/arm/unsubmitted-armhf-linker.diff: Add the new armhf
+    linker to the triplet/LDSO table in ports/sysdeps/arm/shlib-versions
+  * debian/sysdeps/arm{el,hf}.mk: Stop installing armhf linker to its
+    multiarch path, the new standard path is /lib/ld-linux-armhf.so.3
+  * debian/sysdeps/arm{el,hf}.mk: Define configure targets for alt libs
+  * debian/sysdeps/arm{el,hf}.mk: Provide compat symlinks in armhf builds
+    so that old binaries continue to work without needing rebuilding
+  * debian/rules.d/build.mk: Change ldd to use the new armhf linker path
+  * debian/libc6.symbols.armhf: ld-linux-armhf.so.3 depends on having a
+    new enough version of libc6 installed to make the linker available
+  * debian/patches/arm/unsubmitted-soname-hack.diff: Apply unfortunate
+    hack to elf/dl-load.c to allow our old binaries keep running with the
+    new linker, by spoofing the SONAME of the new as if it were the old
+  * debian/debhelper.in/libc-udeb.install.armhf: No longer required
+  * debian/sysdeps/armhf.mk: Create symlink in the udeb for legacy linker
+  * debian/debhelper.in/libc.preinst: When we upgrade from older versions,
+    our linker doesn't exist before unpack, so create a temporary one.
+  * debian/sysdeps/armhf.mk: Drop the obsolete armel/armhf compat symlink
 
   [ Samuel Thibault ]
   * patches/hurd-i386/tg-symlink_dealloc.diff: New patch from Ludovic Courtès

Deleted: glibc-package/trunk/debian/debhelper.in/libc-udeb.install.armhf
===================================================================
--- glibc-package/trunk/debian/debhelper.in/libc-udeb.install.armhf	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/debhelper.in/libc-udeb.install.armhf	2012-04-17 02:32:24 UTC (rev 5184)
@@ -1,14 +0,0 @@
-# FIXME: someday we may need to handle installing into non-lib
-# OH NOES, THAT DAY IS UPON US (armhf's interpreter isn't in /lib)
-TMPDIR/SLIBDIR/ld*.so* lib/arm-linux-gnueabihf
-TMPDIR/SLIBDIR/libm-*.so* lib
-TMPDIR/SLIBDIR/libm.so* lib
-TMPDIR/SLIBDIR/libdl*.so* lib
-TMPDIR/SLIBDIR/libresolv*.so* lib
-TMPDIR/SLIBDIR/libc-*.so* lib
-TMPDIR/SLIBDIR/libc.so* lib
-TMPDIR/SLIBDIR/libutil* lib
-TMPDIR/SLIBDIR/libcrypt* lib
-TMPDIR/SLIBDIR/librt*.so* lib
-TMPDIR/SLIBDIR/libpthread*.so* lib
-

Modified: glibc-package/trunk/debian/debhelper.in/libc.preinst
===================================================================
--- glibc-package/trunk/debian/debhelper.in/libc.preinst	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/debhelper.in/libc.preinst	2012-04-17 02:32:24 UTC (rev 5184)
@@ -239,6 +239,14 @@
 	fi # end upgrading and $preversion lt 2.13
     fi # Upgrading
 
+    # On upgrade from older glibc versions, our PI doesn't yet exist
+    # on-disk, despite the preinst wanting to play with it, so make one
+    if [ "${DPKG_MAINTSCRIPT_ARCH:-$(dpkg --print-architecture)}" = "armhf" ]; then
+	if dpkg --compare-versions "$preversion" lt 2.13-28; then
+	    ln -sf SLIBDIR/ld-linux.so.3 RTLD_SO
+	fi
+    fi
+
     # This will keep us from using hwcap libs (optimized) during an
     # upgrade.
     touch /etc/ld.so.nohwcap

Modified: glibc-package/trunk/debian/libc6.symbols.armhf
===================================================================
--- glibc-package/trunk/debian/libc6.symbols.armhf	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/libc6.symbols.armhf	2012-04-17 02:32:24 UTC (rev 5184)
@@ -1,5 +1,5 @@
 #include "libc6.symbols.common"
-ld-linux.so.3 #PACKAGE# #MINVER#
+ld-linux-armhf.so.3 #PACKAGE# (>= 2.13-28)
 #include "symbols.wildcards"
-libc.so.6 #PACKAGE# #MINVER#
+libc.so.6 #PACKAGE# (>= 2.13-28)
 #include "symbols.wildcards"

Added: glibc-package/trunk/debian/patches/arm/unsubmitted-armhf-linker.diff
===================================================================
--- glibc-package/trunk/debian/patches/arm/unsubmitted-armhf-linker.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/arm/unsubmitted-armhf-linker.diff	2012-04-17 02:32:24 UTC (rev 5184)
@@ -0,0 +1,8 @@
+--- a/ports/sysdeps/arm/shlib-versions	2011-05-10 09:49:03.000000000 -0600
++++ b/ports/sysdeps/arm/shlib-versions	2012-04-13 22:52:46.790815748 -0600
+@@ -1,4 +1,5 @@
+ arm.*-.*-linux-gnueabi.*	DEFAULT			GLIBC_2.4
+ 
++arm.*-.*-linux-gnueabihf	ld=ld-linux-armhf.so.3
+ arm.*-.*-linux-gnueabi.*	ld=ld-linux.so.3
+ arm.*-.*-linux.*	ld=ld-linux.so.2

Added: glibc-package/trunk/debian/patches/arm/unsubmitted-soname-hack.diff
===================================================================
--- glibc-package/trunk/debian/patches/arm/unsubmitted-soname-hack.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/arm/unsubmitted-soname-hack.diff	2012-04-17 02:32:24 UTC (rev 5184)
@@ -0,0 +1,21 @@
+For backward compatibility with armhf binaries built with the
+old linker SONAME, we need to fake out the linker to believe
+the new is the old, until such a point as everything is rebuilt
+
+--- eglibc-2.15.orig/elf/dl-load.c	2012-04-14 12:11:37.000000000 +0000
++++ eglibc-2.15/elf/dl-load.c	2012-04-15 00:39:36.558765502 +0000
+@@ -2303,10 +2303,13 @@
+ 	  soname = ((const char *) D_PTR (l, l_info[DT_STRTAB])
+ 		    + l->l_info[DT_SONAME]->d_un.d_val);
+ 	  if (strcmp (name, soname) != 0)
++#ifdef __arm__
++            if (strcmp(name, "ld-linux.so.3") || strcmp(soname, "ld-linux-armhf.so.3"))
++#endif
+ 	    continue;
+ 
+ 	  /* We have a match on a new name -- cache it.  */
+-	  add_name_to_object (l, soname);
++	  add_name_to_object (l, name);
+ 	  l->l_soname_added = 1;
+ 	}
+ 

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/patches/series	2012-04-17 02:32:24 UTC (rev 5184)
@@ -91,6 +91,8 @@
 arm/unsubmitted-ldso-abi-check.diff
 arm/cvs-syscall-mcount.diff
 arm/cvs-ucontext.diff
+arm/unsubmitted-armhf-linker.diff
+arm/unsubmitted-soname-hack.diff
 
 hppa/local-inlining.diff
 hppa/local-linuxthreads.diff

Modified: glibc-package/trunk/debian/rules.d/build.mk
===================================================================
--- glibc-package/trunk/debian/rules.d/build.mk	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/rules.d/build.mk	2012-04-17 02:32:24 UTC (rev 5184)
@@ -205,7 +205,7 @@
 	if [ $(curpass) = libc ]; then \
 	  case $(DEB_HOST_ARCH) in \
 	    armel) \
-	      sed -i '/RTLDLIST=/s,=\(.*\),="\1 /lib/arm-linux-gnueabihf/ld-linux.so.3",' debian/tmp-$(curpass)/usr/bin/ldd;; \
+	      sed -i '/RTLDLIST=/s,=\(.*\),="\1 /lib/ld-linux-armhf.so.3",' debian/tmp-$(curpass)/usr/bin/ldd;; \
 	    armhf) \
 	      sed -i '/RTLDLIST=/s,=\(.*\),="\1 /lib/ld-linux.so.3",' debian/tmp-$(curpass)/usr/bin/ldd;; \
 	  esac; \

Modified: glibc-package/trunk/debian/sysdeps/armel.mk
===================================================================
--- glibc-package/trunk/debian/sysdeps/armel.mk	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/sysdeps/armel.mk	2012-04-17 02:32:24 UTC (rev 5184)
@@ -3,13 +3,11 @@
 #EGLIBC_PASSES += armhf
 #DEB_ARCH_REGULAR_PACKAGES += libc6-armhf libc6-dev-armhf
 #armhf_add-ons = ports nptl $(add-ons)
+#armhf_configure_target = arm-linux-gnueabihf
 #armhf_CC = $(CC) -mfloat-abi=hard
 #armhf_CXX = $(CXX) -mfloat-abi=hard
 #armhf_slibdir = /lib/arm-linux-gnueabihf
 #armhf_libdir = /usr/lib/arm-linux-gnueabihf
-## To be coinstallable with armel, we install ld.so to a multiarch directory
-## from the beginning.
-#armhf_rtlddir = /lib/$(DEB_HOST_MULTIARCH)
 #
 #define libc6-dev-armhf_extra_pkg_install
 #mkdir -p debian/libc6-dev-armhf/usr/include
@@ -22,3 +20,9 @@
 #cp debian/tmp-armhf/usr/include/fpu_control.h \
 #	debian/libc6-dev-armhf/usr/include/
 #endef
+#
+#define libc6-armhf_extra_pkg_install
+#mkdir -p debian/libc6-armhf$(armhf_slibdir)
+#ln -sf $(armhf_slibdir)/ld-linux-armhf.so.3 debian/libc6-armhf/lib
+#ln -sf ld-linux-armhf.so.3 debian/libc6-armhf$(armhf_slibdir)/ld-linux.so.3 
+#endef

Modified: glibc-package/trunk/debian/sysdeps/armhf.mk
===================================================================
--- glibc-package/trunk/debian/sysdeps/armhf.mk	2012-04-16 08:45:31 UTC (rev 5183)
+++ glibc-package/trunk/debian/sysdeps/armhf.mk	2012-04-17 02:32:24 UTC (rev 5184)
@@ -6,25 +6,25 @@
 CXX    = g++-4.6
 endif
 
-# To be coinstallable with armel, we install ld.so to a multiarch directory
-# from the beginning.
-libc_rtlddir = /lib/$(DEB_HOST_MULTIARCH)
-
-# This is only here while Debian/armhf is still transitioning linkers
-# ** THIS MUST BE REMOVED BEFORE ENABLING THE BI-ARCH BUILD BELOW **
+# Install a compat symlink so old binaries keep working:
 define libc6_extra_pkg_install
-mkdir -p debian/libc6/lib
-ln -sf $(libc_rtlddir)/ld-linux.so.3 debian/libc6/lib
+mkdir -p debian/libc6/lib/arm-linux-gnueabihf
+ln -sf ld-linux-armhf.so.3 debian/libc6/lib/arm-linux-gnueabihf/ld-linux.so.3
 endef
 
+define libc6-udeb_extra_pkg_install
+mkdir -p debian/libc6-udeb/lib/arm-linux-gnueabihf
+ln -sf /lib/ld-linux-armhf.so.3 debian/libc6-udeb/lib/arm-linux-gnueabihf/ld-linux.so.3
+endef
+
 #EGLIBC_PASSES += armel
 #DEB_ARCH_REGULAR_PACKAGES += libc6-armel libc6-dev-armel
 #armel_add-ons = ports nptl $(add-ons)
+#armel_configure_target = arm-linux-gnueabi
 #armel_CC = $(CC) -mfloat-abi=softfp
 #armel_CXX = $(CXX) -mfloat-abi=softfp
 #armel_slibdir = /lib/arm-linux-gnueabi
 #armel_libdir = /usr/lib/arm-linux-gnueabi
-#armel_rtlddir = /lib
 #
 #define libc6-dev-armel_extra_pkg_install
 #mkdir -p debian/libc6-dev-armel/usr/include


Reply to: