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