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: