# HG changeset patch # User ihse # Date 1519924370 -3600 # Node ID 039e63e471e18868dcea1c065d5b315aa5cb7710 # Parent b1c42b3cd19b6a5c43275ef67f0636f0f3f155b0 8198859: Use elfedit to silence linker warnings on solaris Reviewed-by: tbell diff -r b1c42b3cd19b -r 039e63e471e1 make/autoconf/basics.m4 --- a/make/autoconf/basics.m4 Wed Feb 28 17:11:57 2018 -0800 +++ b/make/autoconf/basics.m4 Thu Mar 01 18:12:50 2018 +0100 @@ -1127,6 +1127,8 @@ fi fi BASIC_REQUIRE_PROGS(SETFILE, SetFile) + elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then + BASIC_REQUIRE_PROGS(ELFEDIT, elfedit) fi ]) diff -r b1c42b3cd19b -r 039e63e471e1 make/autoconf/spec.gmk.in --- a/make/autoconf/spec.gmk.in Wed Feb 28 17:11:57 2018 -0800 +++ b/make/autoconf/spec.gmk.in Thu Mar 01 18:12:50 2018 +0100 @@ -710,6 +710,7 @@ LDD:=@LDD@ OTOOL:=@OTOOL@ READELF:=@READELF@ +ELFEDIT:=@ELFEDIT@ EXPR:=@EXPR@ FILE:=@FILE@ DOT:=@DOT@ diff -r b1c42b3cd19b -r 039e63e471e1 make/hotspot/lib/CompileDtracePostJvm.gmk --- a/make/hotspot/lib/CompileDtracePostJvm.gmk Wed Feb 28 17:11:57 2018 -0800 +++ b/make/hotspot/lib/CompileDtracePostJvm.gmk Thu Mar 01 18:12:50 2018 +0100 @@ -157,21 +157,19 @@ # Unfortunately dtrace generates incorrect types for some symbols in # dtrace_jhelper.o, resulting in "warning: symbol X has differing types" - # This is tracked in JDK-6890703. - $(DTRACE_JHELPER_OBJ): $(TOPDIR)/src/hotspot/os/solaris/dtrace/jhelper.d \ - $(JVM_OFFSETS_INDEX_H) + # See JDK-6890703 for details. + # We work around this by fixing the types for these symbols using elfedit, + # after dtrace has generated the .o file. + JHELPER_DTRACE_SRC := $(TOPDIR)/src/hotspot/os/solaris/dtrace/jhelper.d + DTRACE_EXTERNAL_SYMBOLS := $(shell $(GREP) ^extern $(JHELPER_DTRACE_SRC) | $(AWK) '{ gsub(";","") ; print $$3 }') + DTRACE_ELFEDIT_COMMANDS := $(foreach symbol, $(DTRACE_EXTERNAL_SYMBOLS), \ + -e 'sym:st_type $(symbol) 1') + + $(DTRACE_JHELPER_OBJ): $(JHELPER_DTRACE_SRC) $(JVM_OFFSETS_INDEX_H) $(call LogInfo, Running dtrace for $( $(DTRACE_SUPPORT_DIR)/$(@F).d) - # $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -o $@ \ - # -s $(DTRACE_SUPPORT_DIR)/$(@F).d) + $(call ExecuteWithLog, $@.elfedit, $(ELFEDIT) $(DTRACE_ELFEDIT_COMMANDS) $@) ############################################################################ # Build the stand-alone dtrace libraries