On 2018-01-26 09:02, Severin Gehwolf wrote:
On Fri, 2018-01-26 at 08:54 -0800, Erik Joelsson wrote:
On 2018-01-26 08:44, Phil Race wrote:
When this was fixed for Solaris
https://bugs.openjdk.java.net/browse/JDK-8071710
the observed problem was not building (although it could have been)
but at runtime.
I think you can verify what you've done with "ldd" ..
This patch adds awt_headless.so, but does not remove awt.so.
Perhaps the line
LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX)
After your fix I expect "ldd" should not need to show awt .. just
awt_headless
ie linux should not have this -lawt dependency any more and the -lawt
dependency should be specific to windows + mac ..
Thanks for the review, Phil. I'll post an updated webrev shortly.
Any thoughts on the LDFLAGS filtering? Shouldn't this only be done on
platforms that need it? solaris, linux, aix should already be fine
without filtering.
I would say try removing the filtering. The affected flags are currently
only set on linux and solaris. I will do a test build on the latter and
see if the filtering is actually needed.
/Erik
Thanks,
Severin
So we already use -lawt_headless on solaris and aix, then I really can't
see a reason not to do the same for linux.
On 01/26/2018 08:10 AM, Severin Gehwolf wrote:
Hi,
Could I please get a review for this rather small patch which
originally occurred for us on JDK 8 (Fedora) which recently switched to
building with "-Wl,-z,defs" linker flags. The result was a build
failure, due to unresolved symbols. Indeed libfontmanager.so should
have -lawt_headless in the list of dependent libs as symbols such as
AWTLoadFont come from libawt_headless.so, not libawt.so on Linux. Some
more details are on the bug.
webrev:
http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8196218/webrev.01/
Bug: https://bugs.openjdk.java.net/browse/JDK-8196218
Testing: Build fails with configure option
--with-extra-ldflags="-Xlinker -z -Xlinker defs"
prior the fix. Succeeds after.
Question for 2d-folks/build-dev folks:
I don't know about this, build folks probably know.
This is from way ahead of my time. The filtering is simply the
build-infra way of achieving the same thing as in the old build system.
Here is the corresponding code in jdk7:
$ hg annotate make/sun/font/Makefile
...
0: #
0: # Created without -z defs on linux
0: #
0: ifeq ($(PLATFORM), linux)
0: LDFLAGS_DEFS_OPTION =
0: endif
...
/Erik
-phil.
There is this snippet in the libfontmanager block in
make/lib/Awt2dLibraries.gmk, line 686:
LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))
$(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
It's my understanding that this is supposed to filter "-Wl,-z,defs"
from LDFLAGS_JDKLIB. Does anybody know why it does so? Is there a legit
reason when unresolved symbols at link time are OK? Besides, why does
it not also filter "-Xlinker -z -Xlinker defs"? FWIW, in JDK 8 it's the
other way round. Xlinker flags are filtered, but -Wl,-z,defs is not.
Thoughts?
Thanks,
Severin