On Friday 19 September 2014 09.40.37 David Holmes wrote: > Looks good and works well! Lets get this one backported too please. :)
Thanks for the reviews, David, Erik & Erik. I suppose it does not really matter which hs-repo I push this to, so I'll push it to hs-gc/hotspot. /Mikael > > Thanks, > David > > On 18/09/2014 6:39 PM, Mikael Gerdin wrote: > > Hi all, > > > > As you may know, linking an ELF shared object allows unresolved external > > symbols at link time. This is sometimes problematic for JVM developers > > since the JVM does not depend on unresolved external symbols and all > > missing symbols at build time are due to mistakes, usually missing > > includes of inline definitions. > > > > In order to disallow such unresolved externals I propose that we add > > "-z defs" to the linker command line when linking the JVM, thereby making > > unresolved externals a build-time error instead of a run-time failure when > > dlopen:ing the newly built JVM for the first time. > > > > On Windows ans OSX this is already the default linker behavior. > > I took the liberty of modifying the bsd make file since I believe that bsd > > uses the GNU linker which supports the "-z defs" flag. I'm not sure about > > the behavior or flags appropriate for AIX so I didn't change the AIX > > makefiles. > > > > > > On Solaris, linking with "-z defs" failed at first with the following > > message: > > > > Undefined first referenced > > > > symbol in file > > > > gethostbyname ostream.o (symbol belongs to implicit > > dependency /lib/64/libnsl.so.1) > > inet_addr ostream.o (symbol belongs to implicit > > dependency /lib/64/libnsl.so.1) > > ld: fatal: symbol referencing errors. No output written to libjvm.so > > > > This has not caused any failures earlier since libsocket depends on > > libnsl, so in practice the symbols are always present at runtime, but > > with the "-z defs" flag the linker requires the dependency to be > > explicitly stated. > > I fixed the issure by appending -lnsl to the link-time libraries for the > > Solaris build. > > > > Webrev: http://cr.openjdk.java.net/~mgerdin/8055141/webrev.0/ > > Bug: https://bugs.openjdk.java.net/browse/JDK-8055141 > > > > Testing: > > * Verified that the additional flag causes build-time errors on all > > platforms in the presence of unresolved external symbols. > > * Verified that the build passes on all Oracle-supported platforms with > > the > > new flag. > > > > Thanks > > /Mikael
