agent/make/Makefile

Mon, 12 Nov 2012 14:03:53 -0800

author
minqi
date
Mon, 12 Nov 2012 14:03:53 -0800
changeset 4267
bd7a7ce2e264
parent 4093
5a98bf7d847b
child 4642
5ed317b25e23
permissions
-rw-r--r--

6830717: replay of compilations would help with debugging
Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method.
Reviewed-by: kvn, twisti, sspitsyn
Contributed-by: yumin.qi@oracle.com

     1 #
     2 # Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.
     8 #
     9 # This code is distributed in the hope that it will be useful, but WITHOUT
    10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12 # version 2 for more details (a copy is included in the LICENSE file that
    13 # accompanied this code).
    14 #
    15 # You should have received a copy of the GNU General Public License version
    16 # 2 along with this work; if not, write to the Free Software Foundation,
    17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18 #
    19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20 # or visit www.oracle.com if you need additional information or have any
    21 # questions.
    22 #  
    23 #
    25 # This guards against adding broken .java files to the directory
    26 # hierarchy, but may be a pain to keep in sync
    28 # Generated using the build-pkglist script
    29 ifeq "x$(GAMMADIR)" "x"
    30 include ../../make/defs.make
    31 else
    32 include $(GAMMADIR)/make/defs.make
    33 endif
    35 ifeq "x$(HOTSPOT_BUILD_VERSION)" "x"
    36 SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION)
    37 else
    38 SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
    39 endif
    41 PKGLIST = \
    42 sun.jvm.hotspot \
    43 sun.jvm.hotspot.asm \
    44 sun.jvm.hotspot.asm.sparc \
    45 sun.jvm.hotspot.bugspot \
    46 sun.jvm.hotspot.bugspot.tree \
    47 sun.jvm.hotspot.c1 \
    48 sun.jvm.hotspot.ci \
    49 sun.jvm.hotspot.code \
    50 sun.jvm.hotspot.compiler \
    51 sun.jvm.hotspot.debugger \
    52 sun.jvm.hotspot.debugger.amd64 \
    53 sun.jvm.hotspot.debugger.bsd \
    54 sun.jvm.hotspot.debugger.bsd.amd64 \
    55 sun.jvm.hotspot.debugger.bsd.x86 \
    56 sun.jvm.hotspot.debugger.cdbg \
    57 sun.jvm.hotspot.debugger.cdbg.basic \
    58 sun.jvm.hotspot.debugger.cdbg.basic.amd64 \
    59 sun.jvm.hotspot.debugger.cdbg.basic.x86 \
    60 sun.jvm.hotspot.debugger.dummy \
    61 sun.jvm.hotspot.debugger.linux \
    62 sun.jvm.hotspot.debugger.linux.amd64 \
    63 sun.jvm.hotspot.debugger.linux.x86 \
    64 sun.jvm.hotspot.debugger.posix \
    65 sun.jvm.hotspot.debugger.posix.elf \
    66 sun.jvm.hotspot.debugger.proc \
    67 sun.jvm.hotspot.debugger.proc.amd64 \
    68 sun.jvm.hotspot.debugger.proc.sparc \
    69 sun.jvm.hotspot.debugger.proc.x86 \
    70 sun.jvm.hotspot.debugger.remote \
    71 sun.jvm.hotspot.debugger.remote.amd64 \
    72 sun.jvm.hotspot.debugger.remote.sparc \
    73 sun.jvm.hotspot.debugger.remote.x86 \
    74 sun.jvm.hotspot.debugger.sparc \
    75 sun.jvm.hotspot.debugger.win32.coff \
    76 sun.jvm.hotspot.debugger.windbg \
    77 sun.jvm.hotspot.debugger.windbg.amd64 \
    78 sun.jvm.hotspot.debugger.windbg.x86 \
    79 sun.jvm.hotspot.debugger.x86 \
    80 sun.jvm.hotspot.gc_implementation \
    81 sun.jvm.hotspot.gc_implementation.g1 \
    82 sun.jvm.hotspot.gc_implementation.parallelScavenge \
    83 sun.jvm.hotspot.gc_implementation.shared \
    84 sun.jvm.hotspot.gc_interface \
    85 sun.jvm.hotspot.interpreter \
    86 sun.jvm.hotspot.jdi \
    87 sun.jvm.hotspot.livejvm \
    88 sun.jvm.hotspot.memory \
    89 sun.jvm.hotspot.opto \
    90 sun.jvm.hotspot.oops \
    91 sun.jvm.hotspot.prims \
    92 sun.jvm.hotspot.runtime \
    93 sun.jvm.hotspot.runtime.amd64 \
    94 sun.jvm.hotspot.runtime.bsd \
    95 sun.jvm.hotspot.runtime.bsd_amd64 \
    96 sun.jvm.hotspot.runtime.bsd_x86 \
    97 sun.jvm.hotspot.runtime.linux \
    98 sun.jvm.hotspot.runtime.linux_amd64 \
    99 sun.jvm.hotspot.runtime.linux_sparc \
   100 sun.jvm.hotspot.runtime.linux_x86 \
   101 sun.jvm.hotspot.runtime.posix \
   102 sun.jvm.hotspot.runtime.solaris_amd64 \
   103 sun.jvm.hotspot.runtime.solaris_sparc \
   104 sun.jvm.hotspot.runtime.solaris_x86 \
   105 sun.jvm.hotspot.runtime.sparc \
   106 sun.jvm.hotspot.runtime.win32_amd64 \
   107 sun.jvm.hotspot.runtime.win32_x86 \
   108 sun.jvm.hotspot.runtime.x86 \
   109 sun.jvm.hotspot.tools \
   110 sun.jvm.hotspot.tools.jcore \
   111 sun.jvm.hotspot.tools.soql \
   112 sun.jvm.hotspot.types \
   113 sun.jvm.hotspot.types.basic \
   114 sun.jvm.hotspot.ui \
   115 sun.jvm.hotspot.ui.action \
   116 sun.jvm.hotspot.ui.classbrowser \
   117 sun.jvm.hotspot.ui.resources \
   118 sun.jvm.hotspot.ui.table \
   119 sun.jvm.hotspot.ui.tree \
   120 sun.jvm.hotspot.ui.treetable \
   121 sun.jvm.hotspot.utilities \
   122 sun.jvm.hotspot.utilities.memo \
   123 sun.jvm.hotspot.utilities.soql \
   124 com.sun.java.swing.action \
   125 com.sun.java.swing.ui
   126 #END PKGLIST
   128 # Generated using the build-filelist script
   129 FILELIST = \
   130 sun/jvm/hotspot/*.java \
   131 sun/jvm/hotspot/asm/*.java \
   132 sun/jvm/hotspot/asm/sparc/*.java \
   133 sun/jvm/hotspot/bugspot/*.java \
   134 sun/jvm/hotspot/bugspot/tree/*.java \
   135 sun/jvm/hotspot/c1/*.java \
   136 sun/jvm/hotspot/ci/*.java \
   137 sun/jvm/hotspot/code/*.java \
   138 sun/jvm/hotspot/compiler/*.java \
   139 sun/jvm/hotspot/debugger/*.java \
   140 sun/jvm/hotspot/debugger/amd64/*.java \
   141 sun/jvm/hotspot/debugger/bsd/*.java \
   142 sun/jvm/hotspot/debugger/bsd/amd64/*.java \
   143 sun/jvm/hotspot/debugger/bsd/x86/*.java \
   144 sun/jvm/hotspot/debugger/cdbg/*.java \
   145 sun/jvm/hotspot/debugger/cdbg/basic/*.java \
   146 sun/jvm/hotspot/debugger/cdbg/basic/amd64/*.java \
   147 sun/jvm/hotspot/debugger/cdbg/basic/x86/*.java \
   148 sun/jvm/hotspot/debugger/dummy/*.java \
   149 sun/jvm/hotspot/debugger/linux/*.java \
   150 sun/jvm/hotspot/debugger/linux/x86/*.java \
   151 sun/jvm/hotspot/debugger/posix/*.java \
   152 sun/jvm/hotspot/debugger/posix/elf/*.java \
   153 sun/jvm/hotspot/debugger/proc/*.java \
   154 sun/jvm/hotspot/debugger/proc/amd64/*.java \
   155 sun/jvm/hotspot/debugger/proc/sparc/*.java \
   156 sun/jvm/hotspot/debugger/proc/x86/*.java \
   157 sun/jvm/hotspot/debugger/remote/*.java \
   158 sun/jvm/hotspot/debugger/remote/amd64/*.java \
   159 sun/jvm/hotspot/debugger/remote/sparc/*.java \
   160 sun/jvm/hotspot/debugger/remote/x86/*.java \
   161 sun/jvm/hotspot/debugger/sparc/*.java \
   162 sun/jvm/hotspot/debugger/win32/coff/*.java \
   163 sun/jvm/hotspot/debugger/windbg/*.java \
   164 sun/jvm/hotspot/debugger/windbg/x86/*.java \
   165 sun/jvm/hotspot/debugger/x86/*.java \
   166 sun/jvm/hotspot/gc_implementation/g1/*.java \
   167 sun/jvm/hotspot/gc_implementation/parallelScavenge/*.java \
   168 sun/jvm/hotspot/gc_implementation/shared/*.java \
   169 sun/jvm/hotspot/interpreter/*.java \
   170 sun/jvm/hotspot/jdi/*.java \
   171 sun/jvm/hotspot/livejvm/*.java \
   172 sun/jvm/hotspot/memory/*.java \
   173 sun/jvm/hotspot/oops/*.java \
   174 sun/jvm/hotspot/opto/*.java \
   175 sun/jvm/hotspot/prims/*.java \
   176 sun/jvm/hotspot/runtime/*.java \
   177 sun/jvm/hotspot/runtime/amd64/*.java \
   178 sun/jvm/hotspot/runtime/bsd/*.java \
   179 sun/jvm/hotspot/runtime/bsd_amd64/*.java \
   180 sun/jvm/hotspot/runtime/bsd_x86/*.java \
   181 sun/jvm/hotspot/runtime/linux/*.java \
   182 sun/jvm/hotspot/runtime/linux_amd64/*.java \
   183 sun/jvm/hotspot/runtime/linux_sparc/*.java \
   184 sun/jvm/hotspot/runtime/linux_x86/*.java \
   185 sun/jvm/hotspot/runtime/posix/*.java \
   186 sun/jvm/hotspot/runtime/solaris_amd64/*.java \
   187 sun/jvm/hotspot/runtime/solaris_sparc/*.java \
   188 sun/jvm/hotspot/runtime/solaris_x86/*.java \
   189 sun/jvm/hotspot/runtime/sparc/*.java \
   190 sun/jvm/hotspot/runtime/win32_amd64/*.java \
   191 sun/jvm/hotspot/runtime/win32_x86/*.java \
   192 sun/jvm/hotspot/runtime/x86/*.java \
   193 sun/jvm/hotspot/tools/*.java \
   194 sun/jvm/hotspot/tools/jcore/*.java \
   195 sun/jvm/hotspot/tools/soql/*.java \
   196 sun/jvm/hotspot/types/*.java \
   197 sun/jvm/hotspot/types/basic/*.java \
   198 sun/jvm/hotspot/ui/*.java \
   199 sun/jvm/hotspot/ui/action/*.java \
   200 sun/jvm/hotspot/ui/classbrowser/*.java \
   201 sun/jvm/hotspot/ui/table/*.java \
   202 sun/jvm/hotspot/ui/tree/*.java \
   203 sun/jvm/hotspot/ui/treetable/*.java \
   204 sun/jvm/hotspot/utilities/*.java \
   205 sun/jvm/hotspot/utilities/memo/*.java \
   206 sun/jvm/hotspot/utilities/soql/*.java \
   207 com/sun/java/swing/action/*.java \
   208 com/sun/java/swing/ui/*.java 
   209 #END FILELIST
   211 ifneq "x$(ALT_BOOTDIR)" "x"
   212   BOOTDIR := $(ALT_BOOTDIR)
   213 endif
   215 ifeq "x$(BOOTDIR)" "x"
   216   JDK_HOME := $(shell dirname $(shell which java))/..
   217 else
   218   JDK_HOME := $(BOOTDIR)
   219 endif
   221 isUnix := $(shell test -r c:/; echo $$?)
   223 ifeq "$(isUnix)" "1"
   224     CPS := :
   225 else
   226     CPS := ";"
   227 endif
   229 SRC_DIR    = ../src/share/classes
   230 BUILD_DIR  = ../build
   231 OUTPUT_DIR = $(BUILD_DIR)/classes
   232 DOC_DIR    = $(BUILD_DIR)/doc
   234 # gnumake 3.78.1 does not accept the *s, 
   235 # so use the shell to expand them
   236 ALLFILES := $(patsubst %,$(SRC_DIR)/%,$(FILELIST))
   237 ALLFILES := $(shell /bin/ls $(ALLFILES))
   239 # tools.jar is used by the sa-jdi binding
   240 CLASSPATH = $(JDK_HOME)/lib/tools.jar
   242 CLASSPATH := $(subst \,/,$(CLASSPATH))
   244 # FIXME: autogenerate call to rmic
   246 SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
   248 SA_PROPERTIES = $(OUTPUT_DIR)/sa.properties
   249 JAVAC = $(JDK_HOME)/bin/javac
   250 JAVA = $(JDK_HOME)/bin/java
   251 JAVADOC = $(JDK_HOME)/bin/javadoc
   252 RMIC = $(JDK_HOME)/bin/rmic
   254 # Tagging it on because there's no reason not to run it
   255 all: filelist
   256 	@mkdir -p $(OUTPUT_DIR)
   257 	@echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
   258 	$(JAVAC) -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist
   259 	$(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
   260 	rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js
   261 	cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql
   262 	mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources
   263 	rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/*
   264 	cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/
   265 	cp -r $(SRC_DIR)/images/*  $(OUTPUT_DIR)/
   267 allprof: filelist
   268 	@mkdir -p $(OUTPUT_DIR)
   269 	@echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
   270 	$(JAVAC) -J-Xprof -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist
   271 	$(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
   272 	rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js
   273 	cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql
   274 	mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources
   275 	rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/*
   276 	cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/
   277 	cp -r $(SRC_DIR)/images/*  $(OUTPUT_DIR)/
   279 .PHONY: filelist
   280 filelist: $(ALLFILES)
   281 	@if [ ! -f $(JDK_HOME)/lib/tools.jar ] ; then \
   282           echo "Missing $(JDK_HOME)/lib/tools.jar file. Use 1.6.0 or later version jdk to build SA."; \
   283           echo ""; \
   284           exit 1; \
   285         fi
   286 	@rm -f $@
   287 	@echo $(ALLFILES) > $@
   289 .PHONY: natives
   290 natives:
   291 	cd ../src/os/`$(JAVA) -classpath $(OUTPUT_DIR) sun.jvm.hotspot.utilities.PlatformInfo`; $(MAKE) all
   293 .PHONY: sa-jdi.jar
   294 sa-jdi.jar:
   295 	echo "sa-jdi.jar is built by a hotspot build."
   297 docs:
   298 	@$(JAVADOC) -private -classpath $(CLASSPATH) -sourcepath $(SRC_DIR) -d $(DOC_DIR) $(PKGLIST)
   300 sizes: $(ALLFILES)
   301 	wc -l $(ALLFILES)
   303 cscope: $(ALLFILES)
   304 	rm -f java.files
   305 	echo $(ALLFILES) > java.files
   306 	cscope -b -i java.files -f java.out 
   307 	rm -f java.files
   309 .PHONY: sa.jar
   310 sa.jar:
   311 	rm -f $(BUILD_DIR)/sa.jar
   312 	cd $(OUTPUT_DIR) ; jar cvf ../sa.jar *
   314 clean::
   315 	rm -rf filelist
   316 	cd ../src/os/`$(JAVA) -classpath $(OUTPUT_DIR) sun.jvm.hotspot.utilities.PlatformInfo`; $(MAKE) clean
   317 	rm -rf $(BUILD_DIR)/*

mercurial