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. Patch for elf/dl-load.c taken from Debian. diff --git a/sysdeps/arm/shlib-versions b/sysdeps/arm/shlib-versions index 491dd0a..5464959 100644 --- a/glibc-ports-2.15/sysdeps/arm/shlib-versions +++ b/glibc-ports-2.15/sysdeps/arm/shlib-versions @@ -1,4 +1,4 @@ arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4 -arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3 +arm.*-.*-linux-gnueabi.* ld=ld-linux-armhf.so.3 arm.*-.*-linux.* ld=ld-linux.so.2 --- glibc-2.15/elf/dl-load.c.~1~ 2011-12-30 23:13:56.000000000 +0100 +++ glibc-2.15/elf/dl-load.c 2012-04-18 15:05:33.203485389 +0200 @@ -2082,10 +2082,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; }