RFR: libawt_xawt and libawt_headless should not set rpath to $ORIGIN/..

Erik Joelsson erik.joelsson at oracle.com
Thu Dec 22 13:46:34 UTC 2016


Hello,

The recent removal of the lib/$ARCH directory uncovered an old bug in 
the building of libawt_xawt and libawt_headless (on Solaris and Linux).

Historically, in JDK 7, these two libraries were shipped in a subdir. 
For them to be able to load additional libraries, an rpath of $ORIGIN/.. 
was added to them. When we moved them up to the same dir as most other 
libraries in JDK 8, we forgot to also remove this additional rpath. 
After the removal of the lib/$ARCH dir, the $ORIGIN/.. now points to the 
root JDK dir, which (through some intricate interactions) triggered test 
failures in certain circumstances.

It's clear however that these extra rpaths should just be removed.

Bug: https://bugs.openjdk.java.net/browse/JDK-8171471

Patch:

diff -r fd24639b8a40 make/lib/Awt2dLibraries.gmk
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -362,7 +362,6 @@
          MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
          LDFLAGS := $(LDFLAGS_JDKLIB) \
              $(call SET_SHARED_LIBRARY_ORIGIN) \
-            $(call SET_SHARED_LIBRARY_ORIGIN,/..) \
              -L$(INSTALL_LIBRARIES_HERE), \
          LIBS :=  $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
          VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
@@ -564,8 +563,6 @@
        LDFLAGS := $(LDFLAGS_JDKLIB) \
            $(call SET_SHARED_LIBRARY_ORIGIN), \
        LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
-      LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
-      LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
        REORDER := $(LIBAWT_HEADLESS_REORDER), \
        LIBS_unix := -lawt -ljvm -ljava, \
        LIBS_linux := $(LIBM) $(LIBDL), \


/Erik




More information about the build-dev mailing list