Wyllys Ingersoll wrote: > > I get a big list of these errors when I try to access > the linkers discussion archives on opensolaris.org. > > type: java.lang.NullPointerException > > java.lang.NullPointerException > at com.jivesoftware.forum.proxy.ForumMessageProxy.getUser(Unknown > Source) > at org.apache.jsp.viewforum_jsp._jspService(Unknown Source) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at sun.reflect.GeneratedMethodAccessor172.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
Hmm, so I see. I've pinged the folks who administer this stuff. > Anyway - > > My question is about the "zignore" option. I am getting "check_rtime" > warnings > because a library that I am linking against has an unreferenced object. > > $ /ws/on10-tools/onbld/bin/check_rtime sparc/kmf_nss.so.1 > ==== ./kmf_nss.so.1 ==== > unreferenced object=/usr/lib/mps/libplds4.so; unused dependency > of /usr/lib/mps/libsmime3.so <remove lib or -zignore?> > ==== > > Adding "zignore" to my DYNFLAGS line when I build my lib (kmf_nss.so.1) > doesn't fix the problem. > Is it possible to make this warning go away without rebuilding > libsmime3.so.1 (which I don't > have access to) ? No :-) The problem is that libsmime3.so has the unused reference. -z ignore only works against the primary dependencies of the object you are building. But, what system is this occurring on? If I run ldd against libsmime3.so, I see no errors (the check_rtime errors are from ldd). chaz 401. ldd -rU /usr/lib/mps/libsmime3.so libnss3.so => /usr/lib/mps/libnss3.so libplc4.so => /usr/lib/mps/libplc4.so libnspr4.so => /usr/lib/mps/libnspr4.so libc.so.1 => /lib/libc.so.1 libsoftokn3.so => /usr/lib/mps/libsoftokn3.so libplds4.so => /usr/lib/mps/libplds4.so libpthread.so.1 => /lib/libpthread.so.1 libthread.so.1 => /lib/libthread.so.1 librt.so.1 => /lib/librt.so.1 libsocket.so.1 => /lib/libsocket.so.1 libnsl.so.1 => /lib/libnsl.so.1 libdl.so.1 => /lib/libdl.so.1 libbsm.so.1 => /lib/libbsm.so.1 libmp.so.2 => /lib/libmp.so.2 libmd.so.1 => /lib/libmd.so.1 libscf.so.1 => /lib/libscf.so.1 libsecdb.so.1 => /lib/libsecdb.so.1 libtsol.so.2 => /lib/libtsol.so.2 libuutil.so.1 => /lib/libuutil.so.1 libgen.so.1 => /lib/libgen.so.1 libm.so.2 => /lib/libm.so.2 Which implies that libplds4.so is needed by libsmime3.so. We can verify that with: chaz 403. ldd -rU -e LD_DEBUG=bindings /usr/lib/mps/libsmime3.so 2>&1 | \ fgrep "to file=/usr/lib/mps/libplds4.so" | \ fgrep -v "binding file=/usr/lib/mps/libplds4.so" 00408: binding file=/usr/lib/mps/libnss3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_CompareStrings' 00408: binding file=/usr/lib/mps/libnss3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_HashString' 00408: binding file=/usr/lib/mps/libnss3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_CompareValues' ...... 00408: binding file=/usr/lib/mps/libsoftokn3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_CompareValues' 00408: binding file=/usr/lib/mps/libsoftokn3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_HashTableLookupConst' 00408: binding file=/usr/lib/mps/libsoftokn3.so to file=/usr/lib/mps/libplds4.so: symbol `PL_NewHashTable' .... So, libnss3.so and libsoftokn3.so bind to libplds4.so for a number of symbols. For libplds4.so to become unused when you build kmf_nss.so.1, these symbols must be being found somewhere else. Are we playing some interposition games here? -- Rod