Fri, 16 Sep 2011 16:21:20 -0700
7071904: 4/4 HotSpot: Full Debug Symbols
Summary: Add support for .debuginfo files for HSX libraries.
Reviewed-by: poonam, dholmes, never
1.1 --- a/make/Makefile Thu Sep 15 20:56:24 2011 -0700 1.2 +++ b/make/Makefile Fri Sep 16 16:21:20 2011 -0700 1.3 @@ -346,6 +346,20 @@ 1.4 $(install-file) 1.5 $(EXPORT_SERVER_DIR)/64/%.so: $(C2_DIR)/%.so 1.6 $(install-file) 1.7 + 1.8 +# Debug info for shared library 1.9 +$(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo: $(C1_DIR)/%.debuginfo 1.10 + $(install-file) 1.11 +$(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo: $(C2_DIR)/%.debuginfo 1.12 + $(install-file) 1.13 +$(EXPORT_CLIENT_DIR)/%.debuginfo: $(C1_DIR)/%.debuginfo 1.14 + $(install-file) 1.15 +$(EXPORT_CLIENT_DIR)/64/%.debuginfo: $(C1_DIR)/%.debuginfo 1.16 + $(install-file) 1.17 +$(EXPORT_SERVER_DIR)/%.debuginfo: $(C2_DIR)/%.debuginfo 1.18 + $(install-file) 1.19 +$(EXPORT_SERVER_DIR)/64/%.debuginfo: $(C2_DIR)/%.debuginfo 1.20 + $(install-file) 1.21 endif 1.22 endif 1.23
2.1 --- a/make/linux/Makefile Thu Sep 15 20:56:24 2011 -0700 2.2 +++ b/make/linux/Makefile Fri Sep 16 16:21:20 2011 -0700 2.3 @@ -210,6 +210,7 @@ 2.4 BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make 2.5 BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) 2.6 BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) 2.7 +BUILDTREE_VARS += OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) 2.8 2.9 BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) 2.10
3.1 --- a/make/linux/makefiles/build_vm_def.sh Thu Sep 15 20:56:24 2011 -0700 3.2 +++ b/make/linux/makefiles/build_vm_def.sh Fri Sep 16 16:21:20 2011 -0700 3.3 @@ -7,6 +7,10 @@ 3.4 NM=nm 3.5 fi 3.6 3.7 -$NM --defined-only $* | awk ' 3.8 - { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" } 3.9 - ' 3.10 +$NM --defined-only $* \ 3.11 + | awk '{ 3.12 + if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" 3.13 + if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";" 3.14 + if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";" 3.15 + }' \ 3.16 + | sort -u
4.1 --- a/make/linux/makefiles/buildtree.make Thu Sep 15 20:56:24 2011 -0700 4.2 +++ b/make/linux/makefiles/buildtree.make Fri Sep 16 16:21:20 2011 -0700 4.3 @@ -233,6 +233,10 @@ 4.4 echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ 4.5 [ -n "$(CFLAGS_BROWSE)" ] && \ 4.6 echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \ 4.7 + [ -n "$(OBJCOPY)" ] && \ 4.8 + echo && echo "OBJCOPY = $(OBJCOPY)"; \ 4.9 + [ -n "$(STRIP_POLICY)" ] && \ 4.10 + echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \ 4.11 [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \ 4.12 echo && \ 4.13 echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
5.1 --- a/make/linux/makefiles/defs.make Thu Sep 15 20:56:24 2011 -0700 5.2 +++ b/make/linux/makefiles/defs.make Fri Sep 16 16:21:20 2011 -0700 5.3 @@ -1,5 +1,5 @@ 5.4 # 5.5 -# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 5.6 +# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved. 5.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5.8 # 5.9 # This code is free software; you can redistribute it and/or modify it 5.10 @@ -114,6 +114,67 @@ 5.11 HS_ARCH = ppc 5.12 endif 5.13 5.14 +# determine if HotSpot is being built in JDK6 or earlier version 5.15 +JDK6_OR_EARLIER=0 5.16 +ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1" 5.17 + # if the longer variable names (newer build style) are set, then check those 5.18 + ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1" 5.19 + JDK6_OR_EARLIER=1 5.20 + endif 5.21 +else 5.22 + # the longer variables aren't set so check the shorter variable names 5.23 + ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1" 5.24 + JDK6_OR_EARLIER=1 5.25 + endif 5.26 +endif 5.27 + 5.28 +ifeq ($(JDK6_OR_EARLIER),0) 5.29 + # Full Debug Symbols is supported on JDK7 or newer 5.30 + 5.31 + # Default OBJCOPY comes from GNU Binutils on Linux: 5.32 + DEF_OBJCOPY=/usr/bin/objcopy 5.33 + ifdef CROSS_COMPILE_ARCH 5.34 + # don't try to generate .debuginfo files when cross compiling 5.35 + _JUNK_ := $(shell \ 5.36 + echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \ 5.37 + "skipping .debuginfo generation.") 5.38 + OBJCOPY= 5.39 + else 5.40 + OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY)) 5.41 + ifneq ($(ALT_OBJCOPY),) 5.42 + _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)") 5.43 + # disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path 5.44 + OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY)) 5.45 + endif 5.46 + endif 5.47 + 5.48 + ifeq ($(OBJCOPY),) 5.49 + _JUNK_ := $(shell \ 5.50 + echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.") 5.51 + else 5.52 + _JUNK_ := $(shell \ 5.53 + echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.") 5.54 + 5.55 + # Library stripping policies for .debuginfo configs: 5.56 + # all_strip - strips everything from the library 5.57 + # min_strip - strips most stuff from the library; leaves minimum symbols 5.58 + # no_strip - does not strip the library at all 5.59 + # 5.60 + # Oracle security policy requires "all_strip". A waiver was granted on 5.61 + # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE. 5.62 + # 5.63 + DEF_STRIP_POLICY="min_strip" 5.64 + ifeq ($(ALT_STRIP_POLICY),) 5.65 + STRIP_POLICY=$(DEF_STRIP_POLICY) 5.66 + else 5.67 + STRIP_POLICY=$(ALT_STRIP_POLICY) 5.68 + endif 5.69 + 5.70 + _JUNK_ := $(shell \ 5.71 + echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)") 5.72 + endif 5.73 +endif 5.74 + 5.75 JDK_INCLUDE_SUBDIR=linux 5.76 5.77 # FIXUP: The subdirectory for a debug build is NOT the same on all platforms 5.78 @@ -123,18 +184,28 @@ 5.79 5.80 # client and server subdirectories have symbolic links to ../libjsig.so 5.81 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.so 5.82 +ifneq ($(OBJCOPY),) 5.83 + EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo 5.84 +endif 5.85 + 5.86 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server 5.87 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client 5.88 5.89 ifndef BUILD_CLIENT_ONLY 5.90 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt 5.91 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so 5.92 + ifneq ($(OBJCOPY),) 5.93 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo 5.94 + endif 5.95 endif 5.96 5.97 ifneq ($(ZERO_BUILD), true) 5.98 ifeq ($(ARCH_DATA_MODEL), 32) 5.99 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt 5.100 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so 5.101 + ifneq ($(OBJCOPY),) 5.102 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo 5.103 + endif 5.104 endif 5.105 endif 5.106 5.107 @@ -144,6 +215,10 @@ 5.108 $(EXPORT_LIB_DIR)/sa-jdi.jar 5.109 ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so \ 5.110 $(EXPORT_LIB_DIR)/sa-jdi.jar 5.111 +ifneq ($(OBJCOPY),) 5.112 + ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo 5.113 + ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo 5.114 +endif 5.115 ADD_SA_BINARIES/ppc = 5.116 ADD_SA_BINARIES/ia64 = 5.117 ADD_SA_BINARIES/arm =
6.1 --- a/make/linux/makefiles/gcc.make Thu Sep 15 20:56:24 2011 -0700 6.2 +++ b/make/linux/makefiles/gcc.make Fri Sep 16 16:21:20 2011 -0700 6.3 @@ -225,6 +225,26 @@ 6.4 DEBUG_CFLAGS += -gstabs 6.5 endif 6.6 6.7 +ifneq ($(OBJCOPY),) 6.8 + FASTDEBUG_CFLAGS/ia64 = -g 6.9 + FASTDEBUG_CFLAGS/amd64 = -g 6.10 + FASTDEBUG_CFLAGS/arm = -g 6.11 + FASTDEBUG_CFLAGS/ppc = -g 6.12 + FASTDEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) 6.13 + ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),) 6.14 + FASTDEBUG_CFLAGS += -gstabs 6.15 + endif 6.16 + 6.17 + OPT_CFLAGS/ia64 = -g 6.18 + OPT_CFLAGS/amd64 = -g 6.19 + OPT_CFLAGS/arm = -g 6.20 + OPT_CFLAGS/ppc = -g 6.21 + OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH)) 6.22 + ifeq ($(OPT_CFLAGS/$(BUILDARCH)),) 6.23 + OPT_CFLAGS += -gstabs 6.24 + endif 6.25 +endif 6.26 + 6.27 # DEBUG_BINARIES overrides everything, use full -g debug information 6.28 ifeq ($(DEBUG_BINARIES), true) 6.29 DEBUG_CFLAGS = -g 6.30 @@ -242,3 +262,9 @@ 6.31 ifdef MINIMIZE_RAM_USAGE 6.32 CFLAGS += -DMINIMIZE_RAM_USAGE 6.33 endif 6.34 + 6.35 +ifdef CROSS_COMPILE_ARCH 6.36 + STRIP = $(ALT_COMPILER_PATH)/strip 6.37 +else 6.38 + STRIP = strip 6.39 +endif
7.1 --- a/make/linux/makefiles/jsig.make Thu Sep 15 20:56:24 2011 -0700 7.2 +++ b/make/linux/makefiles/jsig.make Fri Sep 16 16:21:20 2011 -0700 7.3 @@ -1,5 +1,5 @@ 7.4 # 7.5 -# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. 7.6 +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 7.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 7.8 # 7.9 # This code is free software; you can redistribute it and/or modify it 7.10 @@ -31,9 +31,13 @@ 7.11 JSIG_G = $(JSIG)$(G_SUFFIX) 7.12 LIBJSIG_G = lib$(JSIG_G).so 7.13 7.14 +LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo 7.15 +LIBJSIG_G_DEBUGINFO = lib$(JSIG_G).debuginfo 7.16 + 7.17 JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm 7.18 7.19 -DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG) 7.20 +DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG) 7.21 +DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO) 7.22 7.23 LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig 7.24 7.25 @@ -54,9 +58,24 @@ 7.26 $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ 7.27 $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $@ $< -ldl 7.28 $(QUIETLY) [ -f $(LIBJSIG_G) ] || { ln -s $@ $(LIBJSIG_G); } 7.29 +ifneq ($(OBJCOPY),) 7.30 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO) 7.31 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@ 7.32 + ifeq ($(STRIP_POLICY),all_strip) 7.33 + $(QUIETLY) $(STRIP) $@ 7.34 + else 7.35 + ifeq ($(STRIP_POLICY),min_strip) 7.36 + $(QUIETLY) $(STRIP) -g $@ 7.37 + # implied else here is no stripping at all 7.38 + endif 7.39 + endif 7.40 + [ -f $(LIBJSIG_G_DEBUGINFO) ] || { ln -s $(LIBJSIG_DEBUGINFO) $(LIBJSIG_G_DEBUGINFO); } 7.41 +endif 7.42 7.43 install_jsig: $(LIBJSIG) 7.44 @echo "Copying $(LIBJSIG) to $(DEST_JSIG)" 7.45 + $(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \ 7.46 + cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO) 7.47 $(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done" 7.48 7.49 .PHONY: install_jsig
8.1 --- a/make/linux/makefiles/product.make Thu Sep 15 20:56:24 2011 -0700 8.2 +++ b/make/linux/makefiles/product.make Fri Sep 16 16:21:20 2011 -0700 8.3 @@ -1,5 +1,5 @@ 8.4 # 8.5 -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 8.6 +# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 8.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 8.8 # 8.9 # This code is free software; you can redistribute it and/or modify it 8.10 @@ -46,13 +46,10 @@ 8.11 8.12 # use -g to strip library as -x will discard its symbol table; -x is fine for 8.13 # executables. 8.14 -ifdef CROSS_COMPILE_ARCH 8.15 - STRIP = $(ALT_COMPILER_PATH)/strip 8.16 -else 8.17 - STRIP = strip 8.18 -endif 8.19 +# Note: these macros are not used in .debuginfo configs 8.20 STRIP_LIBJVM = $(STRIP) -g $@ || exit 1; 8.21 STRIP_AOUT = $(STRIP) -x $@ || exit 1; 8.22 8.23 -# Don't strip in VM build; JDK build will strip libraries later 8.24 +# If we can create .debuginfo files, then the VM is stripped in vm.make 8.25 +# and this macro is not used. 8.26 # LINK_LIB.CC/POST_HOOK += $(STRIP_$(LINK_INTO))
9.1 --- a/make/linux/makefiles/saproc.make Thu Sep 15 20:56:24 2011 -0700 9.2 +++ b/make/linux/makefiles/saproc.make Fri Sep 16 16:21:20 2011 -0700 9.3 @@ -1,5 +1,5 @@ 9.4 # 9.5 -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 9.6 +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 9.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 9.8 # 9.9 # This code is free software; you can redistribute it and/or modify it 9.10 @@ -32,6 +32,9 @@ 9.11 SAPROC_G = $(SAPROC)$(G_SUFFIX) 9.12 LIBSAPROC_G = lib$(SAPROC_G).so 9.13 9.14 +LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo 9.15 +LIBSAPROC_G_DEBUGINFO = lib$(SAPROC_G).debuginfo 9.16 + 9.17 AGENT_DIR = $(GAMMADIR)/agent 9.18 9.19 SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family) 9.20 @@ -45,7 +48,8 @@ 9.21 9.22 SAMAPFILE = $(SASRCDIR)/mapfile 9.23 9.24 -DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) 9.25 +DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) 9.26 +DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO) 9.27 9.28 # DEBUG_BINARIES overrides everything, use full -g debug information 9.29 ifeq ($(DEBUG_BINARIES), true) 9.30 @@ -82,10 +86,25 @@ 9.31 -o $@ \ 9.32 -lthread_db 9.33 $(QUIETLY) [ -f $(LIBSAPROC_G) ] || { ln -s $@ $(LIBSAPROC_G); } 9.34 +ifneq ($(OBJCOPY),) 9.35 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) 9.36 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ 9.37 + ifeq ($(STRIP_POLICY),all_strip) 9.38 + $(QUIETLY) $(STRIP) $@ 9.39 + else 9.40 + ifeq ($(STRIP_POLICY),min_strip) 9.41 + $(QUIETLY) $(STRIP) -g $@ 9.42 + # implied else here is no stripping at all 9.43 + endif 9.44 + endif 9.45 + [ -f $(LIBSAPROC_G_DEBUGINFO) ] || { ln -s $(LIBSAPROC_DEBUGINFO) $(LIBSAPROC_G_DEBUGINFO); } 9.46 +endif 9.47 9.48 install_saproc: $(BUILDLIBSAPROC) 9.49 $(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \ 9.50 echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \ 9.51 + test -f $(LIBSAPROC_DEBUGINFO) && \ 9.52 + cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \ 9.53 cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \ 9.54 fi 9.55
10.1 --- a/make/linux/makefiles/vm.make Thu Sep 15 20:56:24 2011 -0700 10.2 +++ b/make/linux/makefiles/vm.make Fri Sep 16 16:21:20 2011 -0700 10.3 @@ -60,10 +60,16 @@ 10.4 # The order is important for the precompiled headers to work. 10.5 INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%) 10.6 10.7 -ifeq (${VERSION}, debug) 10.8 +# SYMFLAG is used by {jsig,saproc}.make 10.9 +ifneq ($(OBJCOPY),) 10.10 + # always build with debug info when we can create .debuginfo files 10.11 SYMFLAG = -g 10.12 else 10.13 - SYMFLAG = 10.14 + ifeq (${VERSION}, debug) 10.15 + SYMFLAG = -g 10.16 + else 10.17 + SYMFLAG = 10.18 + endif 10.19 endif 10.20 10.21 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined 10.22 @@ -124,6 +130,9 @@ 10.23 LIBJVM = lib$(JVM).so 10.24 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so 10.25 10.26 +LIBJVM_DEBUGINFO = lib$(JVM).debuginfo 10.27 +LIBJVM_G_DEBUGINFO = lib$(JVM)$(G_SUFFIX).debuginfo 10.28 + 10.29 SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt 10.30 10.31 SOURCE_PATHS=\ 10.32 @@ -307,11 +316,30 @@ 10.33 fi \ 10.34 fi \ 10.35 } 10.36 +ifeq ($(CROSS_COMPILE_ARCH),) 10.37 + ifneq ($(OBJCOPY),) 10.38 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) 10.39 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ 10.40 + ifeq ($(STRIP_POLICY),all_strip) 10.41 + $(QUIETLY) $(STRIP) $@ 10.42 + else 10.43 + ifeq ($(STRIP_POLICY),min_strip) 10.44 + $(QUIETLY) $(STRIP) -g $@ 10.45 + # implied else here is no stripping at all 10.46 + endif 10.47 + endif 10.48 + $(QUIETLY) [ -f $(LIBJVM_G_DEBUGINFO) ] || ln -s $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO) 10.49 + endif 10.50 +endif 10.51 10.52 -DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM) 10.53 +DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) 10.54 +DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM) 10.55 +DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO) 10.56 10.57 install_jvm: $(LIBJVM) 10.58 @echo "Copying $(LIBJVM) to $(DEST_JVM)" 10.59 + $(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \ 10.60 + cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO) 10.61 $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done" 10.62 10.63 #----------------------------------------------------------------------
11.1 --- a/make/solaris/Makefile Thu Sep 15 20:56:24 2011 -0700 11.2 +++ b/make/solaris/Makefile Fri Sep 16 16:21:20 2011 -0700 11.3 @@ -1,5 +1,5 @@ 11.4 # 11.5 -# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 11.6 +# Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. 11.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 11.8 # 11.9 # This code is free software; you can redistribute it and/or modify it 11.10 @@ -168,6 +168,7 @@ 11.11 BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make 11.12 BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) 11.13 BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) 11.14 +BUILDTREE_VARS += OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) 11.15 11.16 BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) 11.17
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/make/solaris/makefiles/build_vm_def.sh Fri Sep 16 16:21:20 2011 -0700 12.3 @@ -0,0 +1,10 @@ 12.4 +#!/bin/sh 12.5 + 12.6 +/usr/ccs/bin/nm -p $* \ 12.7 + | awk '{ 12.8 + if ($2 == "U") next 12.9 + if ($3 ~ /^__1c.*__vtbl_$/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" 12.10 + if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";" 12.11 + if ($3 ~ /^__1cJArgumentsRSharedArchivePath_$/) print "\t" $3 ";" 12.12 + }' \ 12.13 + | sort -u
13.1 --- a/make/solaris/makefiles/buildtree.make Thu Sep 15 20:56:24 2011 -0700 13.2 +++ b/make/solaris/makefiles/buildtree.make Fri Sep 16 16:21:20 2011 -0700 13.3 @@ -226,6 +226,10 @@ 13.4 echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ 13.5 [ -n "$(CFLAGS_BROWSE)" ] && \ 13.6 echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \ 13.7 + [ -n "$(OBJCOPY)" ] && \ 13.8 + echo && echo "OBJCOPY = $(OBJCOPY)"; \ 13.9 + [ -n "$(STRIP_POLICY)" ] && \ 13.10 + echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \ 13.11 [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \ 13.12 echo && \ 13.13 echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
14.1 --- a/make/solaris/makefiles/defs.make Thu Sep 15 20:56:24 2011 -0700 14.2 +++ b/make/solaris/makefiles/defs.make Fri Sep 16 16:21:20 2011 -0700 14.3 @@ -1,5 +1,5 @@ 14.4 # 14.5 -# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 14.6 +# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved. 14.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 14.8 # 14.9 # This code is free software; you can redistribute it and/or modify it 14.10 @@ -59,6 +59,79 @@ 14.11 endif 14.12 endif 14.13 14.14 +# determine if HotSpot is being built in JDK6 or earlier version 14.15 +JDK6_OR_EARLIER=0 14.16 +ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1" 14.17 + # if the longer variable names (newer build style) are set, then check those 14.18 + ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1" 14.19 + JDK6_OR_EARLIER=1 14.20 + endif 14.21 +else 14.22 + # the longer variables aren't set so check the shorter variable names 14.23 + ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1" 14.24 + JDK6_OR_EARLIER=1 14.25 + endif 14.26 +endif 14.27 + 14.28 +ifeq ($(JDK6_OR_EARLIER),0) 14.29 + # Full Debug Symbols is supported on JDK7 or newer 14.30 + 14.31 +ifdef ENABLE_FULL_DEBUG_SYMBOLS 14.32 + # Only check for Full Debug Symbols support on Solaris if it is 14.33 + # specifically enabled. Hopefully, it can be enabled by default 14.34 + # once the .debuginfo size issues are worked out. 14.35 + 14.36 + # Default OBJCOPY comes from the SUNWbinutils package: 14.37 + DEF_OBJCOPY=/usr/sfw/bin/gobjcopy 14.38 + ifeq ($(VM_PLATFORM),solaris_amd64) 14.39 + # On Solaris AMD64/X64, gobjcopy is not happy and fails: 14.40 + # 14.41 + # usr/sfw/bin/gobjcopy --add-gnu-debuglink=<lib>.debuginfo <lib>.so 14.42 + # BFD: stKPaiop: Not enough room for program headers, try linking with -N 14.43 + # /usr/sfw/bin/gobjcopy: stKPaiop: Bad value 14.44 + # BFD: stKPaiop: Not enough room for program headers, try linking with -N 14.45 + # /usr/sfw/bin/gobjcopy: libsaproc.debuginfo: Bad value 14.46 + # BFD: stKPaiop: Not enough room for program headers, try linking with -N 14.47 + # /usr/sfw/bin/gobjcopy: stKPaiop: Bad value 14.48 + _JUNK_ := $(shell \ 14.49 + echo >&2 "INFO: $(DEF_OBJCOPY) is not working on Solaris AMD64/X64") 14.50 + OBJCOPY= 14.51 + else 14.52 + OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY)) 14.53 + ifneq ($(ALT_OBJCOPY),) 14.54 + _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)") 14.55 + # disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path 14.56 + OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY)) 14.57 + endif 14.58 + endif 14.59 +endif 14.60 + 14.61 + ifeq ($(OBJCOPY),) 14.62 + _JUNK_ := $(shell \ 14.63 + echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.") 14.64 + else 14.65 + _JUNK_ := $(shell \ 14.66 + echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.") 14.67 + 14.68 + # Library stripping policies for .debuginfo configs: 14.69 + # all_strip - strips everything from the library 14.70 + # min_strip - strips most stuff from the library; leaves minimum symbols 14.71 + # no_strip - does not strip the library at all 14.72 + # 14.73 + # Oracle security policy requires "all_strip". A waiver was granted on 14.74 + # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE. 14.75 + # 14.76 + DEF_STRIP_POLICY="min_strip" 14.77 + ifeq ($(ALT_STRIP_POLICY),) 14.78 + STRIP_POLICY=$(DEF_STRIP_POLICY) 14.79 + else 14.80 + STRIP_POLICY=$(ALT_STRIP_POLICY) 14.81 + endif 14.82 + _JUNK_ := $(shell \ 14.83 + echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)") 14.84 + endif 14.85 +endif 14.86 + 14.87 JDK_INCLUDE_SUBDIR=solaris 14.88 14.89 # FIXUP: The subdirectory for a debug build is NOT the same on all platforms 14.90 @@ -68,6 +141,9 @@ 14.91 14.92 # client and server subdirectories have symbolic links to ../libjsig.so 14.93 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.so 14.94 +ifneq ($(OBJCOPY),) 14.95 + EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo 14.96 +endif 14.97 14.98 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server 14.99 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client 14.100 @@ -77,6 +153,11 @@ 14.101 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so 14.102 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.so 14.103 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.so 14.104 + ifneq ($(OBJCOPY),) 14.105 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo 14.106 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.debuginfo 14.107 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.debuginfo 14.108 + endif 14.109 endif 14.110 ifeq ($(ARCH_DATA_MODEL), 32) 14.111 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt 14.112 @@ -85,11 +166,25 @@ 14.113 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.so 14.114 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.so 14.115 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.so 14.116 + ifneq ($(OBJCOPY),) 14.117 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo 14.118 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.debuginfo 14.119 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.debuginfo 14.120 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.debuginfo 14.121 + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.debuginfo 14.122 + endif 14.123 ifneq ($(BUILD_CLIENT_ONLY), true) 14.124 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.so 14.125 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.so 14.126 + ifneq ($(OBJCOPY),) 14.127 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.debuginfo 14.128 + EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.debuginfo 14.129 + endif 14.130 endif 14.131 endif 14.132 14.133 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so 14.134 +ifneq ($(OBJCOPY),) 14.135 + EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo 14.136 +endif 14.137 EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
15.1 --- a/make/solaris/makefiles/dtrace.make Thu Sep 15 20:56:24 2011 -0700 15.2 +++ b/make/solaris/makefiles/dtrace.make Fri Sep 16 16:21:20 2011 -0700 15.3 @@ -1,5 +1,5 @@ 15.4 # 15.5 -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 15.6 +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 15.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 15.8 # 15.9 # This code is free software; you can redistribute it and/or modify it 15.10 @@ -41,10 +41,16 @@ 15.11 LIBJVM_DB = libjvm_db.so 15.12 LIBJVM_DB_G = libjvm$(G_SUFFIX)_db.so 15.13 15.14 +LIBJVM_DB_DEBUGINFO = libjvm_db.debuginfo 15.15 +LIBJVM_DB_G_DEBUGINFO = libjvm$(G_SUFFIX)_db.debuginfo 15.16 + 15.17 JVM_DTRACE = jvm_dtrace 15.18 LIBJVM_DTRACE = libjvm_dtrace.so 15.19 LIBJVM_DTRACE_G = libjvm$(G_SUFFIX)_dtrace.so 15.20 15.21 +LIBJVM_DTRACE_DEBUGINFO = libjvm_dtrace.debuginfo 15.22 +LIBJVM_DTRACE_G_DEBUGINFO = libjvm$(G_SUFFIX)_dtrace.debuginfo 15.23 + 15.24 JVMOFFS = JvmOffsets 15.25 JVMOFFS.o = $(JVMOFFS).o 15.26 GENOFFS = generate$(JVMOFFS) 15.27 @@ -89,12 +95,30 @@ 15.28 XLIBJVM_DTRACE = 64/$(LIBJVM_DTRACE) 15.29 XLIBJVM_DTRACE_G = 64/$(LIBJVM_DTRACE_G) 15.30 15.31 +XLIBJVM_DB_DEBUGINFO = 64/$(LIBJVM_DB_DEBUGINFO) 15.32 +XLIBJVM_DB_G_DEBUGINFO = 64/$(LIBJVM_DB_G_DEBUGINFO) 15.33 +XLIBJVM_DTRACE_DEBUGINFO = 64/$(LIBJVM_DTRACE_DEBUGINFO) 15.34 +XLIBJVM_DTRACE_G_DEBUGINFO = 64/$(LIBJVM_DTRACE_G_DEBUGINFO) 15.35 + 15.36 $(XLIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS).h $(LIBJVM_DB_MAPFILE) 15.37 @echo Making $@ 15.38 $(QUIETLY) mkdir -p 64/ ; \ 15.39 $(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. -I$(GENERATED) \ 15.40 $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -lc 15.41 [ -f $(XLIBJVM_DB_G) ] || { ln -s $(LIBJVM_DB) $(XLIBJVM_DB_G); } 15.42 +ifneq ($(OBJCOPY),) 15.43 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DB_DEBUGINFO) 15.44 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(XLIBJVM_DB_DEBUGINFO) $@ 15.45 + ifeq ($(STRIP_POLICY),all_strip) 15.46 + $(QUIETLY) $(STRIP) $@ 15.47 + else 15.48 + ifeq ($(STRIP_POLICY),min_strip) 15.49 + $(QUIETLY) $(STRIP) -x $@ 15.50 + # implied else here is no stripping at all 15.51 + endif 15.52 + endif 15.53 + [ -f $(XLIBJVM_DB_G_DEBUGINFO) ] || { ln -s $(LIBJVM_DB_DEBUGINFO) $(XLIBJVM_DB_G_DEBUGINFO); } 15.54 +endif 15.55 15.56 $(XLIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE) 15.57 @echo Making $@ 15.58 @@ -102,6 +126,19 @@ 15.59 $(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. \ 15.60 $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c -lc -lthread -ldoor 15.61 [ -f $(XLIBJVM_DTRACE_G) ] || { ln -s $(LIBJVM_DTRACE) $(XLIBJVM_DTRACE_G); } 15.62 +ifneq ($(OBJCOPY),) 15.63 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DTRACE_DEBUGINFO) 15.64 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(XLIBJVM_DTRACE_DEBUGINFO) $@ 15.65 + ifeq ($(STRIP_POLICY),all_strip) 15.66 + $(QUIETLY) $(STRIP) $@ 15.67 + else 15.68 + ifeq ($(STRIP_POLICY),min_strip) 15.69 + $(QUIETLY) $(STRIP) -x $@ 15.70 + # implied else here is no stripping at all 15.71 + endif 15.72 + endif 15.73 + [ -f $(XLIBJVM_DTRACE_G_DEBUGINFO) ] || { ln -s $(LIBJVM_DTRACE_DEBUGINFO) $(XLIBJVM_DTRACE_G_DEBUGINFO); } 15.74 +endif 15.75 15.76 endif # ifneq ("${ISA}","${BUILDARCH}") 15.77 15.78 @@ -148,12 +185,38 @@ 15.79 $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. -I$(GENERATED) \ 15.80 $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -lc 15.81 [ -f $(LIBJVM_DB_G) ] || { ln -s $@ $(LIBJVM_DB_G); } 15.82 +ifneq ($(OBJCOPY),) 15.83 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DB_DEBUGINFO) 15.84 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $@ 15.85 + ifeq ($(STRIP_POLICY),all_strip) 15.86 + $(QUIETLY) $(STRIP) $@ 15.87 + else 15.88 + ifeq ($(STRIP_POLICY),min_strip) 15.89 + $(QUIETLY) $(STRIP) -x $@ 15.90 + # implied else here is no stripping at all 15.91 + endif 15.92 + endif 15.93 + [ -f $(LIBJVM_DB_G_DEBUGINFO) ] || { ln -s $(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB_G_DEBUGINFO); } 15.94 +endif 15.95 15.96 $(LIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(XLIBJVM_DTRACE) $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE) 15.97 @echo Making $@ 15.98 $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. \ 15.99 $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c -lc -lthread -ldoor 15.100 [ -f $(LIBJVM_DTRACE_G) ] || { ln -s $@ $(LIBJVM_DTRACE_G); } 15.101 +ifneq ($(OBJCOPY),) 15.102 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DTRACE_DEBUGINFO) 15.103 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $@ 15.104 + ifeq ($(STRIP_POLICY),all_strip) 15.105 + $(QUIETLY) $(STRIP) $@ 15.106 + else 15.107 + ifeq ($(STRIP_POLICY),min_strip) 15.108 + $(QUIETLY) $(STRIP) -x $@ 15.109 + # implied else here is no stripping at all 15.110 + endif 15.111 + endif 15.112 + [ -f $(LIBJVM_DTRACE_G_DEBUGINFO) ] || { ln -s $(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE_G_DEBUGINFO); } 15.113 +endif 15.114 15.115 $(DTRACE).d: $(DTRACE_SRCDIR)/hotspot.d $(DTRACE_SRCDIR)/hotspot_jni.d \ 15.116 $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d
16.1 --- a/make/solaris/makefiles/jsig.make Thu Sep 15 20:56:24 2011 -0700 16.2 +++ b/make/solaris/makefiles/jsig.make Fri Sep 16 16:21:20 2011 -0700 16.3 @@ -1,5 +1,5 @@ 16.4 # 16.5 -# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. 16.6 +# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 16.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 16.8 # 16.9 # This code is free software; you can redistribute it and/or modify it 16.10 @@ -31,9 +31,13 @@ 16.11 JSIG_G = $(JSIG)$(G_SUFFIX) 16.12 LIBJSIG_G = lib$(JSIG_G).so 16.13 16.14 +LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo 16.15 +LIBJSIG_G_DEBUGINFO = lib$(JSIG_G).debuginfo 16.16 + 16.17 JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm 16.18 16.19 -DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG) 16.20 +DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG) 16.21 +DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO) 16.22 16.23 LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig 16.24 16.25 @@ -50,9 +54,24 @@ 16.26 $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ 16.27 $(LFLAGS_JSIG) -o $@ $< -ldl 16.28 [ -f $(LIBJSIG_G) ] || { ln -s $@ $(LIBJSIG_G); } 16.29 +ifneq ($(OBJCOPY),) 16.30 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO) 16.31 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@ 16.32 + ifeq ($(STRIP_POLICY),all_strip) 16.33 + $(QUIETLY) $(STRIP) $@ 16.34 + else 16.35 + ifeq ($(STRIP_POLICY),min_strip) 16.36 + $(QUIETLY) $(STRIP) -x $@ 16.37 + # implied else here is no stripping at all 16.38 + endif 16.39 + endif 16.40 + [ -f $(LIBJSIG_G_DEBUGINFO) ] || { ln -s $(LIBJSIG_DEBUGINFO) $(LIBJSIG_G_DEBUGINFO); } 16.41 +endif 16.42 16.43 install_jsig: $(LIBJSIG) 16.44 @echo "Copying $(LIBJSIG) to $(DEST_JSIG)" 16.45 + $(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \ 16.46 + cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO) 16.47 $(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done" 16.48 16.49 .PHONY: install_jsig
17.1 --- a/make/solaris/makefiles/mapfile-vers Thu Sep 15 20:56:24 2011 -0700 17.2 +++ b/make/solaris/makefiles/mapfile-vers Fri Sep 16 16:21:20 2011 -0700 17.3 @@ -3,7 +3,7 @@ 17.4 # 17.5 17.6 # 17.7 -# Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. 17.8 +# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 17.9 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 17.10 # 17.11 # This code is free software; you can redistribute it and/or modify it 17.12 @@ -256,6 +256,9 @@ 17.13 17.14 # This is for Forte Analyzer profiling support. 17.15 AsyncGetCallTrace; 17.16 + 17.17 + # INSERT VTABLE SYMBOLS HERE 17.18 + 17.19 local: 17.20 *; 17.21 };
18.1 --- a/make/solaris/makefiles/product.make Thu Sep 15 20:56:24 2011 -0700 18.2 +++ b/make/solaris/makefiles/product.make Fri Sep 16 16:21:20 2011 -0700 18.3 @@ -1,5 +1,5 @@ 18.4 # 18.5 -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 18.6 +# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 18.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 18.8 # 18.9 # This code is free software; you can redistribute it and/or modify it 18.10 @@ -68,7 +68,8 @@ 18.11 REORDERFILE = $(GAMMADIR)/make/solaris/makefiles/reorder_$(TYPE)_$(BUILDARCH) 18.12 endif 18.13 18.14 -# Don't strip in VM build; JDK build will strip libraries later 18.15 +# If we can create .debuginfo files, then the VM is stripped in vm.make 18.16 +# and this macro is not used. 18.17 # LINK_LIB.CC/POST_HOOK += $(STRIP_LIB.CC/POST_HOOK) 18.18 18.19 G_SUFFIX =
19.1 --- a/make/solaris/makefiles/saproc.make Thu Sep 15 20:56:24 2011 -0700 19.2 +++ b/make/solaris/makefiles/saproc.make Fri Sep 16 16:21:20 2011 -0700 19.3 @@ -32,6 +32,9 @@ 19.4 SAPROC_G = $(SAPROC)$(G_SUFFIX) 19.5 LIBSAPROC_G = lib$(SAPROC_G).so 19.6 19.7 +LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo 19.8 +LIBSAPROC_G_DEBUGINFO = lib$(SAPROC_G).debuginfo 19.9 + 19.10 AGENT_DIR = $(GAMMADIR)/agent 19.11 19.12 SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family)/proc 19.13 @@ -40,7 +43,8 @@ 19.14 19.15 SAMAPFILE = $(SASRCDIR)/mapfile 19.16 19.17 -DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) 19.18 +DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) 19.19 +DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO) 19.20 19.21 # if $(AGENT_DIR) does not exist, we don't build SA 19.22 19.23 @@ -101,10 +105,25 @@ 19.24 -o $@ \ 19.25 -ldl -ldemangle -lthread -lc 19.26 [ -f $(LIBSAPROC_G) ] || { ln -s $@ $(LIBSAPROC_G); } 19.27 +ifneq ($(OBJCOPY),) 19.28 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) 19.29 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ 19.30 + ifeq ($(STRIP_POLICY),all_strip) 19.31 + $(QUIETLY) $(STRIP) $@ 19.32 + else 19.33 + ifeq ($(STRIP_POLICY),min_strip) 19.34 + $(QUIETLY) $(STRIP) -x $@ 19.35 + # implied else here is no stripping at all 19.36 + endif 19.37 + endif 19.38 + [ -f $(LIBSAPROC_G_DEBUGINFO) ] || { ln -s $(LIBSAPROC_DEBUGINFO) $(LIBSAPROC_G_DEBUGINFO); } 19.39 +endif 19.40 19.41 install_saproc: $(BULDLIBSAPROC) 19.42 $(QUIETLY) if [ -f $(LIBSAPROC) ] ; then \ 19.43 echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \ 19.44 + test -f $(LIBSAPROC_DEBUGINFO) && \ 19.45 + cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \ 19.46 cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \ 19.47 fi 19.48
20.1 --- a/make/solaris/makefiles/sparcWorks.make Thu Sep 15 20:56:24 2011 -0700 20.2 +++ b/make/solaris/makefiles/sparcWorks.make Fri Sep 16 16:21:20 2011 -0700 20.3 @@ -1,5 +1,5 @@ 20.4 # 20.5 -# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 20.6 +# Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. 20.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 20.8 # 20.9 # This code is free software; you can redistribute it and/or modify it 20.10 @@ -481,9 +481,18 @@ 20.11 endif 20.12 20.13 # Flags for Debugging 20.14 +# The -g0 setting allows the C++ frontend to inline, which is a big win. 20.15 +# The -xs setting disables 'lazy debug info' which puts everything in 20.16 +# the .so instead of requiring the '.o' files. 20.17 +ifneq ($(OBJCOPY),) 20.18 + OPT_CFLAGS += -g0 -xs 20.19 +endif 20.20 DEBUG_CFLAGS = -g 20.21 FASTDEBUG_CFLAGS = -g0 20.22 -# The -g0 setting allows the C++ frontend to inline, which is a big win. 20.23 +ifneq ($(OBJCOPY),) 20.24 + DEBUG_CFLAGS += -xs 20.25 + FASTDEBUG_CFLAGS += -xs 20.26 +endif 20.27 20.28 # Special global options for SS12 20.29 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) 20.30 @@ -502,6 +511,9 @@ 20.31 # data using a unique globalization prefix. Instead force the use of 20.32 # a static globalization prefix based on the source filepath so the 20.33 # objects from two identical compilations are the same. 20.34 +# EXTRA_CFLAGS only covers vm_version.cpp for some reason 20.35 +#EXTRA_CFLAGS += -Qoption ccfe -xglobalstatic 20.36 +#OPT_CFLAGS += -Qoption ccfe -xglobalstatic 20.37 #DEBUG_CFLAGS += -Qoption ccfe -xglobalstatic 20.38 #FASTDEBUG_CFLAGS += -Qoption ccfe -xglobalstatic 20.39 20.40 @@ -562,6 +574,8 @@ 20.41 # since the hook must terminate itself as a valid command.) 20.42 20.43 # Also, strip debug and line number information (worth about 1.7Mb). 20.44 +# If we can create .debuginfo files, then the VM is stripped in vm.make 20.45 +# and this macro is not used. 20.46 STRIP_LIB.CC/POST_HOOK = $(STRIP) -x $@ || exit 1; 20.47 # STRIP_LIB.CC/POST_HOOK is incorporated into LINK_LIB.CC/POST_HOOK 20.48 # in certain configurations, such as product.make. Other configurations,
21.1 --- a/make/solaris/makefiles/vm.make Thu Sep 15 20:56:24 2011 -0700 21.2 +++ b/make/solaris/makefiles/vm.make Fri Sep 16 16:21:20 2011 -0700 21.3 @@ -55,10 +55,17 @@ 21.4 Src_Dirs_I += $(GENERATED) 21.5 INCLUDES += $(Src_Dirs_I:%=-I%) 21.6 21.7 -ifeq (${VERSION}, debug) 21.8 - SYMFLAG = -g 21.9 +# SYMFLAG is used by {dtrace,jsig,saproc}.make. 21.10 +ifneq ($(OBJCOPY),) 21.11 + # always build with debug info when we can create .debuginfo files 21.12 + # and disable 'lazy debug info' so the .so has everything. 21.13 + SYMFLAG = -g -xs 21.14 else 21.15 - SYMFLAG = 21.16 + ifeq (${VERSION}, debug) 21.17 + SYMFLAG = -g 21.18 + else 21.19 + SYMFLAG = 21.20 + endif 21.21 endif 21.22 21.23 # The following variables are defined in the generated flags.make file. 21.24 @@ -140,6 +147,9 @@ 21.25 LIBJVM = lib$(JVM).so 21.26 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so 21.27 21.28 +LIBJVM_DEBUGINFO = lib$(JVM).debuginfo 21.29 +LIBJVM_G_DEBUGINFO = lib$(JVM)$(G_SUFFIX).debuginfo 21.30 + 21.31 SPECIAL_PATHS:=adlc c1 dist gc_implementation opto shark libadt 21.32 21.33 SOURCE_PATHS=\ 21.34 @@ -212,14 +222,24 @@ 21.35 21.36 vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES)) 21.37 21.38 -mapfile : $(MAPFILE) $(MAPFILE_DTRACE_OPT) 21.39 +mapfile : $(MAPFILE) $(MAPFILE_DTRACE_OPT) vm.def 21.40 rm -f $@ 21.41 - cat $^ > $@ 21.42 + cat $(MAPFILE) $(MAPFILE_DTRACE_OPT) \ 21.43 + | $(NAWK) '{ \ 21.44 + if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") { \ 21.45 + system ("cat vm.def"); \ 21.46 + } else { \ 21.47 + print $$0; \ 21.48 + } \ 21.49 + }' > $@ 21.50 21.51 mapfile_reorder : mapfile $(MAPFILE_DTRACE_OPT) $(REORDERFILE) 21.52 rm -f $@ 21.53 cat $^ > $@ 21.54 21.55 +vm.def: $(Obj_Files) 21.56 + sh $(GAMMADIR)/make/solaris/makefiles/build_vm_def.sh *.o > $@ 21.57 + 21.58 ifeq ($(LINK_INTO),AOUT) 21.59 LIBJVM.o = 21.60 LIBJVM_MAPFILE = 21.61 @@ -255,13 +275,30 @@ 21.62 $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1 21.63 $(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G) 21.64 $(QUIETLY) [ -f $(LIBJVM_G).1 ] || ln -s $@.1 $(LIBJVM_G).1 21.65 +ifneq ($(OBJCOPY),) 21.66 + $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) 21.67 + $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ 21.68 + ifeq ($(STRIP_POLICY),all_strip) 21.69 + $(QUIETLY) $(STRIP) $@ 21.70 + else 21.71 + ifeq ($(STRIP_POLICY),min_strip) 21.72 + $(QUIETLY) $(STRIP) -x $@ 21.73 + # implied else here is no stripping at all 21.74 + endif 21.75 + endif 21.76 + $(QUIETLY) [ -f $(LIBJVM_G_DEBUGINFO) ] || ln -s $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO) 21.77 +endif 21.78 endif # filter -sbfast -xsbfast 21.79 21.80 21.81 -DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM) 21.82 +DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) 21.83 +DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM) 21.84 +DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO) 21.85 21.86 install_jvm: $(LIBJVM) 21.87 @echo "Copying $(LIBJVM) to $(DEST_JVM)" 21.88 + $(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \ 21.89 + cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO) 21.90 $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done" 21.91 21.92 #----------------------------------------------------------------------