pkgsrc-Bugs archive

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

Re: pkg/53353 (devel/nss fails to build on armv7 on rpi2)



> believed to be fixed already

I just had this happen with 2020Q1 on a native armv7hf build
(9_STABLE on a Banana Pi (the original/first one I believe))

It boils down to shlibsign (via NSPR) attempting a to dlopen(3)
libfreebl3.so with RTLD_NOW, however, libfreebl3.so, as built
on this HW at least, cannot be dlopen()ed with RTLD_NOW because
the symbol "gcm_HashInit_hw" cannot be found (as confirmed with
a testcase and dynamic linker debugging, below)

| [...]
| search referencing object for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "gcm_HashInit_hw" in /pkg_comp/obj/pkgsrc/devel/nss/default/nss-3.51/nss/lib/freebl/NetBSD9.0_STABLE_OPT.OBJ/NetBSD_SINGLE_SHLIB/libfreebl3.so
| check "gcm_HashInit_hw" vs "malloc" in /pkg_comp/obj/pkgsrc/devel/nss/default/nss-3.51/nss/lib/freebl/NetBSD9.0_STABLE_OPT.OBJ/NetBSD_SINGLE_SHLIB/libfreebl3.so
| search _rtld_list_main for gcm_HashInit_hw
| search object 0x7bec0000 (./tc) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "__syscall" in ./tc
| check "gcm_HashInit_hw" vs "dlopen" in ./tc
| check "gcm_HashInit_hw" vs "_exit" in ./tc
| search object 0x7bec0400 (/libkver/lib/libkver.so) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "warnx" in /libkver/lib/libkver.so
| search object 0x7bec0800 (/usr/lib/libc.so.12) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "_Unwind_GetIPInfo" in /usr/lib/libc.so.12
| search _rtld_list_global for gcm_HashInit_hw
| search DAG with root 0x7bec0c00 (/pkg_comp/obj/pkgsrc/devel/nss/default/nss-3.51/nss/lib/freebl/NetBSD9.0_STABLE_OPT.OBJ/NetBSD_SINGLE_SHLIB/libfreebl3.so) for gcm_HashInit_hw
| search object 0x7bec1000 (/usr/pkg/lib/nspr/libplc4.so) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "PL_strnchr" in /usr/pkg/lib/nspr/libplc4.so
| search object 0x7bec1800 (/usr/pkg/lib/nspr/libnspr4.so) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "malloc" in /usr/pkg/lib/nspr/libnspr4.so
| search object 0x7bc1a000 (/usr/lib/libpthread.so.1) for gcm_HashInit_hw
| search object 0x7bec1400 (/usr/pkg/lib/nspr/libplds4.so) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "libVersionPoint" in /usr/pkg/lib/nspr/libplds4.so
| search object 0x7bec1c00 (/pkg_comp/obj/pkgsrc/devel/nss/default/nss-3.51/nss/cmd/shlibsign/../../../dist/NetBSD9.0_STABLE_OPT.OBJ/lib/libnssutil3.so) for gcm_HashInit_hw
| check "gcm_HashInit_hw" vs "SEC_UniversalStringTemplate" in /pkg_comp/obj/pkgsrc/devel/nss/default/nss-3.51/nss/cmd/shlibsign/../../../dist/NetBSD9.0_STABLE_OPT.OBJ/lib/libnssutil3.so
| Search the dynamic linker itself.
| check "gcm_HashInit_hw" vs "dlvsym" in /usr/libexec/ld.elf_so
| check "gcm_HashInit_hw" vs "dlsym" in /usr/libexec/ld.elf_so
| check "gcm_HashInit_hw" vs "__dlclose" in /usr/libexec/ld.elf_so
| lookup failed

The patch below "fixes" it for me, in the sense that it at least finishes
compiling -- I can't predict what runtime consequences it might have.

Timo

---------8<--------------------------------------------

--- nss/lib/freebl/genload.c.orig	2020-04-15 18:42:03.836791127 +0000
+++ nss/lib/freebl/genload.c	2020-04-15 18:42:06.837963155 +0000
@@ -102,7 +102,7 @@
 #endif
             libSpec.type = PR_LibSpec_Pathname;
             libSpec.value.pathname = fullName;
-            dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL);
+            dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_LAZY | PR_LD_LOCAL);
             PORT_Free(fullName);
         }
     }



Home | Main Index | Thread Index | Old Index