Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/make/bsd/makefiles/dtrace.make
32285 views
#1# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.2# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3#4# This code is free software; you can redistribute it and/or modify it5# under the terms of the GNU General Public License version 2 only, as6# published by the Free Software Foundation.7#8# This code is distributed in the hope that it will be useful, but WITHOUT9# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11# version 2 for more details (a copy is included in the LICENSE file that12# accompanied this code).13#14# You should have received a copy of the GNU General Public License version15# 2 along with this work; if not, write to the Free Software Foundation,16# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17#18# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19# or visit www.oracle.com if you need additional information or have any20# questions.21#22#2324# Rules to build jvm_db/dtrace, used by vm.make2526# We build libjvm_dtrace/libjvm_db/dtrace for COMPILER1 and COMPILER227# but not for CORE configuration.2829ifneq ("${TYPE}", "CORE")3031ifeq ($(OS_VENDOR), Darwin)32# we build dtrace for macosx using USDT2 probes3334DtraceOutDir = $(GENERATED)/dtracefiles3536# Bsd does not build libjvm_db, does not compile on macosx37# disabled in build: rule in vm.make38JVM_DB = libjvm_db39LIBJVM_DB = libjvm_db.dylib4041LIBJVM_DB_DEBUGINFO = libjvm_db.dylib.dSYM42LIBJVM_DB_DIZ = libjvm_db.diz4344JVM_DTRACE = jvm_dtrace45LIBJVM_DTRACE = libjvm_dtrace.dylib4647LIBJVM_DTRACE_DEBUGINFO = libjvm_dtrace.dylib.dSYM48LIBJVM_DTRACE_DIZ = libjvm_dtrace.diz4950JVMOFFS = JvmOffsets51JVMOFFS.o = $(JVMOFFS).o52GENOFFS = generate$(JVMOFFS)5354DTRACE_SRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/dtrace55DTRACE = dtrace56DTRACE.o = $(DTRACE).o5758# to remove '-g' option which causes link problems59# also '-z nodefs' is used as workaround60GENOFFS_CFLAGS = $(shell echo $(CFLAGS) | sed -e 's/ -g / /g' -e 's/ -g0 / /g';)6162ifdef LP6463DTRACE_OPTS = -D_LP6464endif6566# making libjvm_db6768# Use mapfile with libjvm_db.so69LIBJVM_DB_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_db70#LFLAGS_JVM_DB += $(MAPFLAG:FILENAME=$(LIBJVM_DB_MAPFILE))7172# Use mapfile with libjvm_dtrace.so73LIBJVM_DTRACE_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_dtrace74#LFLAGS_JVM_DTRACE += $(MAPFLAG:FILENAME=$(LIBJVM_DTRACE_MAPFILE))7576LFLAGS_JVM_DB += $(PICFLAG) # -D_REENTRANT77LFLAGS_JVM_DTRACE += $(PICFLAG) # -D_REENTRANT7879ISA = $(subst i386,i486,$(BUILDARCH))8081# Making 64/libjvm_db.so: 64-bit version of libjvm_db.so which handles 32-bit libjvm.so82ifneq ("${ISA}","${BUILDARCH}")8384XLIBJVM_DIR = 6485XLIBJVM_DB = $(XLIBJVM_DIR)/$(LIBJVM_DB)86XLIBJVM_DTRACE = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE)87XARCH = $(subst sparcv9,v9,$(shell echo $(ISA)))8889XLIBJVM_DB_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DB_DEBUGINFO)90XLIBJVM_DB_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DB_DIZ)91XLIBJVM_DTRACE_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DEBUGINFO)92XLIBJVM_DTRACE_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DIZ)9394$(XLIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS).h $(LIBJVM_DB_MAPFILE)95@echo Making $@96$(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \97$(CC) $(SYMFLAG) -xarch=$(XARCH) -D$(TYPE) -I. -I$(GENERATED) \98$(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c #-lc99ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)100ifeq ($(OS_VENDOR), Darwin)101$(DSYMUTIL) $@102ifeq ($(ZIP_DEBUGINFO_FILES),1)103# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)104# is not in the archived name:105( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -r -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) )106$(RM) -r $(XLIBJVM_DB_DEBUGINFO)107endif108else109$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DB_DEBUGINFO)110# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)111# is not in the link name:112$(QUIETLY) ( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB) )113ifeq ($(STRIP_POLICY),all_strip)114$(QUIETLY) $(STRIP) $@115else116ifeq ($(STRIP_POLICY),min_strip)117$(QUIETLY) $(STRIP) -x $@118# implied else here is no stripping at all119endif120endif121ifeq ($(ZIP_DEBUGINFO_FILES),1)122# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)123# is not in the archived name:124( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) )125$(RM) $(XLIBJVM_DB_DEBUGINFO)126endif127endif128endif129130$(XLIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)131@echo Making $@132$(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \133$(CC) $(SYMFLAG) -xarch=$(XARCH) -D$(TYPE) -I. \134$(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c #-lc -lthread -ldoor135ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)136ifeq ($(OS_VENDOR), Darwin)137$(DSYMUTIL) $@138ifeq ($(ZIP_DEBUGINFO_FILES),1)139# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)140# is not in the archived name:141( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -r -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO) )142$(RM) -r $(XLIBJVM_DTRACE_DEBUGINFO)143endif144else145$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DTRACE_DEBUGINFO)146# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)147# is not in the link name:148( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE) )149ifeq ($(STRIP_POLICY),all_strip)150$(QUIETLY) $(STRIP) $@151else152ifeq ($(STRIP_POLICY),min_strip)153$(QUIETLY) $(STRIP) -x $@154# implied else here is no stripping at all155endif156endif157ifeq ($(ZIP_DEBUGINFO_FILES),1)158# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)159# is not in the archived name:160( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO) )161$(RM) $(XLIBJVM_DTRACE_DEBUGINFO)162endif163endif164endif165166endif # ifneq ("${ISA}","${BUILDARCH}")167168LFLAGS_GENOFFS += -L.169170lib$(GENOFFS).dylib: $(DTRACE_SRCDIR)/$(GENOFFS).cpp $(DTRACE_SRCDIR)/$(GENOFFS).h \171$(LIBJVM.o)172$(QUIETLY) $(CXX) $(CXXFLAGS) $(GENOFFS_CFLAGS) $(SHARED_FLAG) $(PICFLAG) \173$(LFLAGS_GENOFFS) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS).cpp -ljvm174175$(GENOFFS): $(DTRACE_SRCDIR)/$(GENOFFS)Main.c lib$(GENOFFS).dylib176$(QUIETLY) $(LINK.CXX) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS)Main.c \177./lib$(GENOFFS).dylib178179# [email protected] is created first to avoid an empty $(JVMOFFS).h if an error occurs.180$(JVMOFFS).h: $(GENOFFS)181$(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -header > $@.tmp; touch $@; \182if [ `diff [email protected] $@ > /dev/null 2>&1; echo $$?` -ne 0 ] ; \183then rm -f $@; mv $@.tmp $@; \184else rm -f $@.tmp; \185fi186187$(JVMOFFS)Index.h: $(GENOFFS)188$(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -index > $@.tmp; touch $@; \189if [ `diff [email protected] $@ > /dev/null 2>&1; echo $$?` -ne 0 ] ; \190then rm -f $@; mv $@.tmp $@; \191else rm -f $@.tmp; \192fi193194$(JVMOFFS).cpp: $(GENOFFS) $(JVMOFFS).h $(JVMOFFS)Index.h195$(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -table > $@.tmp; touch $@; \196if [ `diff [email protected] $@ > /dev/null 2>&1; echo $$?` -ne 0 ] ; \197then rm -f $@; mv $@.tmp $@; \198else rm -f $@.tmp; \199fi200201$(JVMOFFS.o): $(JVMOFFS).h $(JVMOFFS).cpp202$(QUIETLY) $(CXX) -c -I. -o $@ $(ARCHFLAG) -D$(TYPE) $(JVMOFFS).cpp203204$(LIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS.o) $(XLIBJVM_DB) $(LIBJVM_DB_MAPFILE)205@echo Making $@206$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. -I$(GENERATED) \207$(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -Wall # -lc208ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)209ifeq ($(OS_VENDOR), Darwin)210$(DSYMUTIL) $@211ifeq ($(ZIP_DEBUGINFO_FILES),1)212$(ZIPEXE) -q -r -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO)213$(RM) -r $(LIBJVM_DB_DEBUGINFO)214endif215else216$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DB_DEBUGINFO)217$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $@218ifeq ($(STRIP_POLICY),all_strip)219$(QUIETLY) $(STRIP) $@220else221ifeq ($(STRIP_POLICY),min_strip)222$(QUIETLY) $(STRIP) -x $@223# implied else here is no stripping at all224endif225endif226ifeq ($(ZIP_DEBUGINFO_FILES),1)227$(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO)228$(RM) $(LIBJVM_DB_DEBUGINFO)229endif230endif231endif232233$(LIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(XLIBJVM_DTRACE) $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)234@echo Making $@235$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. \236$(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c #-lc -lthread -ldoor237ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)238ifeq ($(OS_VENDOR), Darwin)239$(DSYMUTIL) $@240ifeq ($(ZIP_DEBUGINFO_FILES),1)241$(ZIPEXE) -q -r -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO)242$(RM) -r $(LIBJVM_DTRACE_DEBUGINFO)243endif244else245$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DTRACE_DEBUGINFO)246$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $@247ifeq ($(STRIP_POLICY),all_strip)248$(QUIETLY) $(STRIP) $@249else250ifeq ($(STRIP_POLICY),min_strip)251$(QUIETLY) $(STRIP) -x $@252# implied else here is no stripping at all253endif254endif255ifeq ($(ZIP_DEBUGINFO_FILES),1)256$(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO)257$(RM) $(LIBJVM_DTRACE_DEBUGINFO)258endif259endif260endif261262#$(DTRACE).d: $(DTRACE_SRCDIR)/hotspot.d $(DTRACE_SRCDIR)/hotspot_jni.d \263# $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d264# $(QUIETLY) cat $^ > $@265266$(DtraceOutDir):267mkdir $(DtraceOutDir)268269$(DtraceOutDir)/hotspot.h: $(DTRACE_SRCDIR)/hotspot.d | $(DtraceOutDir)270$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot.d271272$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)273$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot_jni.d274275$(DtraceOutDir)/hs_private.h: $(DTRACE_SRCDIR)/hs_private.d | $(DtraceOutDir)276$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hs_private.d277278$(DtraceOutDir)/jhelper.h: $(DTRACE_SRCDIR)/jhelper.d $(JVMOFFS).o | $(DtraceOutDir)279$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/jhelper.d280281# jhelper currently disabled282dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h283284DTraced_Files = ciEnv.o \285classLoadingService.o \286compileBroker.o \287hashtable.o \288instanceKlass.o \289java.o \290jni.o \291jvm.o \292memoryManager.o \293nmethod.o \294objectMonitor.o \295runtimeService.o \296sharedRuntime.o \297synchronizer.o \298thread.o \299unsafe.o \300vmThread.o \301vmCMSOperations.o \302vmPSOperations.o \303vmGCOperations.o \304305# Dtrace is available, so we build $(DTRACE.o)306#$(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)307# @echo Compiling $(DTRACE).d308309# $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \310# $(DTraced_Files) ||\311# STATUS=$$?;\312# if [ x"$$STATUS" = x"1" -a \313# x`uname -r` = x"5.10" -a \314# x`uname -p` = x"sparc" ]; then\315# echo "*****************************************************************";\316# echo "* If you are building server compiler, and the error message is ";\317# echo "* \"incorrect ELF machine type...\", you have run into solaris bug ";\318# echo "* 6213962, \"dtrace -G doesn't work on sparcv8+ object files\".";\319# echo "* Either patch/upgrade your system (>= S10u1_15), or set the ";\320# echo "* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable ";\321# echo "* dtrace probes for this build.";\322# echo "*****************************************************************";\323# fi;\324# exit $$STATUS325# Since some DTraced_Files are in LIBJVM.o and they are touched by this326# command, and libgenerateJvmOffsets.so depends on LIBJVM.o, 'make' will327# think it needs to rebuild libgenerateJvmOffsets.so and thus JvmOffsets*328# files, but it doesn't, so we touch the necessary files to prevent later329# recompilation. Note: we only touch the necessary files if they already330# exist in order to close a race where an empty file can be created331# before the real build rule is executed.332# But, we can't touch the *.h files: This rule depends333# on them, and that would cause an infinite cycle of rebuilding.334# Neither the *.h or *.ccp files need to be touched, since they have335# rules which do not update them when the generator file has not336# changed their contents.337# $(QUIETLY) if [ -f lib$(GENOFFS).so ]; then touch lib$(GENOFFS).so; fi338# $(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi339# $(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi340341.PHONY: dtraceCheck342343#SYSTEM_DTRACE_H = /usr/include/dtrace.h344SYSTEM_DTRACE_PROG = /usr/sbin/dtrace345#PATCH_DTRACE_PROG = /opt/SUNWdtrd/sbin/dtrace346systemDtraceFound := $(wildcard ${SYSTEM_DTRACE_PROG})347#patchDtraceFound := $(wildcard ${PATCH_DTRACE_PROG})348#systemDtraceHdrFound := $(wildcard $(SYSTEM_DTRACE_H))349350#ifneq ("$(systemDtraceHdrFound)", "")351#CFLAGS += -DHAVE_DTRACE_H352#endif353354#ifneq ("$(patchDtraceFound)", "")355#DTRACE_PROG=$(PATCH_DTRACE_PROG)356#DTRACE_INCL=-I/opt/SUNWdtrd/include357#else358ifneq ("$(systemDtraceFound)", "")359DTRACE_PROG=$(SYSTEM_DTRACE_PROG)360else361362endif # ifneq ("$(systemDtraceFound)", "")363#endif # ifneq ("$(patchDtraceFound)", "")364365ifneq ("${DTRACE_PROG}", "")366ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")367368DTRACE_OBJS = $(DTRACE.o) #$(JVMOFFS.o)369CFLAGS += -DDTRACE_ENABLED #$(DTRACE_INCL)370#clangCFLAGS += -DDTRACE_ENABLED -fno-optimize-sibling-calls371#MAPFILE_DTRACE_OPT = $(MAPFILE_DTRACE)372373374dtraceCheck:375376dtrace_stuff: dtrace_gen_headers377$(QUIETLY) echo "dtrace headers generated"378379380else # manually disabled381382dtraceCheck:383$(QUIETLY) echo "**NOTICE** Dtrace support disabled via environment variable"384385dtrace_stuff:386387endif # ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")388389else # No dtrace program found390391dtraceCheck:392$(QUIETLY) echo "**NOTICE** Dtrace support disabled: not supported by system"393394dtrace_stuff:395396endif # ifneq ("${dtraceFound}", "")397398endif # ifeq ($(OS_VENDOR), Darwin)399400401else # CORE build402403dtraceCheck:404$(QUIETLY) echo "**NOTICE** Dtrace support disabled for CORE builds"405406endif # ifneq ("${TYPE}", "CORE")407408409