On 2019/02/08 13:09, Giovanni Bechis wrote:
> After latest snapshot update it fails with:
> java:/usr/local/jdk-1.8.0/jre/lib/amd64/libsplashscreen.so: undefined symbol 
> 'libiconv_open'
> ld.so: java: lazy binding failed!
> 
> Anybody else seeing this ?
> Working:
> OpenBSD 6.4-current (GENERIC.MP) #688: Thu Feb  7 22:00:25 MST 2019
> Not working:
> OpenBSD 6.4-current (GENERIC.MP) #621: Wed Jan 16 22:29:11 MST 2019

Temporary workaround, LD_PRELOAD libiconv.

Seems that libsplashscreen.so lost its NEEDED entry on libiconv in the
jdk u192 update,

$ objdump -p 172/libsplashscreen.so |grep -w NEEDED
  NEEDED      libX11.so.16.1
  NEEDED      libXext.so.13.0
  NEEDED      libm.so.10.1
  NEEDED      libiconv.so.6.0
  NEEDED      libz.so.5.0
  NEEDED      libgif.so.7.0
  NEEDED      libpthread.so.26.0

$ objdump -p 192/libsplashscreen.so |grep -w NEEDED
  NEEDED      libX11.so.16.1
  NEEDED      libXext.so.13.0
  NEEDED      libm.so.10.1
  NEEDED      libpthread.so.26.0
  NEEDED      libz.so.5.0
  NEEDED      libgif.so.7.0

The relevant change is in the build system. Kurt do you want to look at
this or should I have a go at just readding the relevant bit? (this change
would most likely have caused a build time failure with ld.bfd but LLD
won't notice these so it won't show up until runtime).

diff -u -r 
jdk-1.8.0.172/openjdk-8u172b11-bsd-port-20180529/jdk/make/lib/Awt2dLibraries.gmk
 
jdk-1.8.0.192/openjdk-8u192b26-bsd-port-20190122/jdk/make/lib/Awt2dLibraries.gmk
--- 
jdk-1.8.0.172/openjdk-8u172b11-bsd-port-20180529/jdk/make/lib/Awt2dLibraries.gmk
    2018-05-29 18:55:46.000000000 +0100
+++ 
jdk-1.8.0.192/openjdk-8u192b26-bsd-port-20190122/jdk/make/lib/Awt2dLibraries.gmk
    2019-01-21 22:32:14.000000000 +0000
<snip>
@@ -1246,13 +1238,6 @@
 
   else ifeq ($(OPENJDK_TARGET_OS), windows)
     LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
-  else ifeq ($(OPENJDK_TARGET_OS), solaris)
-    LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include 
-I$(OPENWIN_HOME)/include/X11/extensions
-  else ifeq ($(OPENJDK_TARGET_OS), bsd)
-    LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include
-    ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
-      LIBSPLASHSCREEN_CFLAGS += -DLIBICONV_PLUG
-    endif
   else
     LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
   endif
@@ -1272,11 +1257,6 @@
         -framework JavaNativeFoundation
   else ifeq ($(OPENJDK_TARGET_OS), windows)
     LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib 
delayimp.lib -DELAYLOAD:user32.dll
-  else ifeq ($(OPENJDK_TARGET_OS), solaris)
-    # Solaris still uses OPENWIN_LIB ..
-    LIBSPLASHSCREEN_LDFLAGS_SUFFIX += 
-L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
-  else ifeq ($(OPENJDK_TARGET_OS), bsd)
-    LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) 
-L$(PACKAGE_PATH)/lib -liconv -pthread
   else # .. all other Unixes can use X_LIBS
     LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
   endif


Reply via email to