Print this page
rev 6896 : 8033602: wrong stabs data in libjvm.debuginfo on JDK 8 - SPARC
8034005: cannot debug in synchronizer.o or objectMonitor.o on Solaris X86
Summary: Solaris needs objcopy version of 2.21.1 or newer is needed to create valid .debuginfo files.
Reviewed-by: dsamersoff, sspitsyn, dholmes, ihse
Split |
Split |
Close |
Expand all |
Collapse all |
--- old/hotspot/make/solaris/makefiles/defs.make
+++ new/hotspot/make/solaris/makefiles/defs.make
1 1 #
2 -# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
2 +# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
3 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 4 #
5 5 # This code is free software; you can redistribute it and/or modify it
6 6 # under the terms of the GNU General Public License version 2 only, as
7 7 # published by the Free Software Foundation.
8 8 #
9 9 # This code is distributed in the hope that it will be useful, but WITHOUT
10 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 12 # version 2 for more details (a copy is included in the LICENSE file that
13 13 # accompanied this code).
14 14 #
15 15 # You should have received a copy of the GNU General Public License version
16 16 # 2 along with this work; if not, write to the Free Software Foundation,
17 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 18 #
19 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 20 # or visit www.oracle.com if you need additional information or have any
21 21 # questions.
22 22 #
23 23 #
24 24
25 25 # The common definitions for hotspot solaris builds.
26 26 # Include the top level defs.make under make directory instead of this one.
27 27 # This file is included into make/defs.make.
28 28
29 29 # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
30 30 SLASH_JAVA ?= /java
31 31 ARCH:=$(shell uname -p)
32 32 PATH_SEP = :
33 33 ifeq ($(LP64), 1)
34 34 ARCH_DATA_MODEL=64
35 35 else
36 36 ARCH_DATA_MODEL=32
37 37 endif
38 38
39 39 ifeq ($(ARCH),sparc)
40 40 ifeq ($(ARCH_DATA_MODEL), 64)
41 41 MAKE_ARGS += LP64=1
42 42 PLATFORM=solaris-sparcv9
43 43 VM_PLATFORM=solaris_sparcv9
44 44 else
45 45 PLATFORM=solaris-sparc
46 46 VM_PLATFORM=solaris_sparc
47 47 endif
48 48 HS_ARCH=sparc
49 49 else
50 50 ifeq ($(ARCH_DATA_MODEL), 64)
51 51 MAKE_ARGS += LP64=1
52 52 PLATFORM=solaris-amd64
53 53 VM_PLATFORM=solaris_amd64
54 54 HS_ARCH=x86
55 55 else
56 56 PLATFORM=solaris-i586
57 57 VM_PLATFORM=solaris_i486
58 58 HS_ARCH=x86
59 59 endif
60 60 endif
61 61
62 62 # On 32 bit solaris we build server and client, on 64 bit just server.
63 63 ifeq ($(JVM_VARIANTS),)
64 64 ifeq ($(ARCH_DATA_MODEL), 32)
65 65 JVM_VARIANTS:=client,server
66 66 JVM_VARIANT_CLIENT:=true
67 67 JVM_VARIANT_SERVER:=true
68 68 else
69 69 JVM_VARIANTS:=server
70 70 JVM_VARIANT_SERVER:=true
71 71 endif
72 72 endif
73 73
74 74 # determine if HotSpot is being built in JDK6 or earlier version
75 75 JDK6_OR_EARLIER=0
76 76 ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
77 77 # if the longer variable names (newer build style) are set, then check those
78 78 ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
79 79 JDK6_OR_EARLIER=1
80 80 endif
81 81 else
82 82 # the longer variables aren't set so check the shorter variable names
83 83 ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
84 84 JDK6_OR_EARLIER=1
85 85 endif
86 86 endif
87 87
88 88 ifeq ($(JDK6_OR_EARLIER),0)
89 89 # Full Debug Symbols is supported on JDK7 or newer.
90 90 # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
91 91 # builds is enabled with debug info files ZIP'ed to save space. For
92 92 # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
93 93 # debug build without debug info isn't very useful.
94 94 # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
95 95 #
96 96 # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
97 97 # disabled for a BUILD_FLAVOR == product build.
98 98 #
99 99 # Note: Use of a different variable name for the FDS override option
100 100 # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
101 101 # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
102 102 # in options via environment variables, use of distinct variables
103 103 # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
104 104 # product build, the FULL_DEBUG_SYMBOLS environment variable will be
105 105 # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
106 106 # the same variable name is used, then different values can be picked
107 107 # up by different parts of the build. Just to be clear, we only need
108 108 # two variable names because the incoming option value can be
109 109 # overridden in some situations, e.g., a BUILD_FLAVOR != product
110 110 # build.
111 111
112 112 # Due to the multiple sub-make processes that occur this logic gets
113 113 # executed multiple times. We reduce the noise by at least checking that
114 114 # BUILD_FLAVOR has been set.
115 115 ifneq ($(BUILD_FLAVOR),)
116 116 ifeq ($(BUILD_FLAVOR), product)
117 117 FULL_DEBUG_SYMBOLS ?= 1
118 118 ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
119 119 else
120 120 # debug variants always get Full Debug Symbols (if available)
121 121 ENABLE_FULL_DEBUG_SYMBOLS = 1
122 122 endif
123 123 _JUNK_ := $(shell \
124 124 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
125 125 # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
↓ open down ↓ |
113 lines elided |
↑ open up ↑ |
126 126
127 127 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
128 128 # Default OBJCOPY comes from the SUNWbinutils package:
129 129 DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
130 130 OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
131 131 ifneq ($(ALT_OBJCOPY),)
132 132 _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
133 133 OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
134 134 endif
135 135
136 + ifneq ($(OBJCOPY),)
137 + # OBJCOPY version check:
138 + # - version number is last blank separate word on first line
139 + # - version number formats that have been seen:
140 + # - <major>.<minor>
141 + # - <major>.<minor>.<micro>
142 + #
143 + # Full Debug Symbols on Solaris needs version 2.21.1 or newer.
144 + #
145 + OBJCOPY_VERS_CHK := $(shell \
146 + $(OBJCOPY) --version \
147 + | sed -n \
148 + -e 's/.* //' \
149 + -e '/^[01]\./b bad' \
150 + -e '/^2\./{' \
151 + -e ' s/^2\.//' \
152 + -e ' /^[0-9]$$/b bad' \
153 + -e ' /^[0-9]\./b bad' \
154 + -e ' /^1[0-9]$$/b bad' \
155 + -e ' /^1[0-9]\./b bad' \
156 + -e ' /^20\./b bad' \
157 + -e ' /^21\.0$$/b bad' \
158 + -e ' /^21\.0\./b bad' \
159 + -e '}' \
160 + -e ':good' \
161 + -e 's/.*/VALID_VERSION/p' \
162 + -e 'q' \
163 + -e ':bad' \
164 + -e 's/.*/BAD_VERSION/p' \
165 + -e 'q' \
166 + )
167 + ifeq ($(OBJCOPY_VERS_CHK),BAD_VERSION)
168 + _JUNK_ := $(shell \
169 + echo >&2 "WARNING: $(OBJCOPY) --version info:"; \
170 + $(OBJCOPY) --version | sed -n -e 's/^/WARNING: /p' -e 'q' >&2; \
171 + echo >&2 "WARNING: an objcopy version of 2.21.1 or newer" \
172 + "is needed to create valid .debuginfo files."; \
173 + echo >&2 "WARNING: ignoring above objcopy command."; \
174 + echo >&2 "WARNING: patch 149063-01 or newer contains the" \
175 + "correct Solaris 10 SPARC version."; \
176 + echo >&2 "WARNING: patch 149064-01 or newer contains the" \
177 + "correct Solaris 10 X86 version."; \
178 + echo >&2 "WARNING: Solaris 11 Update 1 contains the" \
179 + "correct version."; \
180 + )
181 + OBJCOPY=
182 + endif
183 + endif
184 +
136 185 ifeq ($(OBJCOPY),)
137 186 _JUNK_ := $(shell \
138 187 echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
139 188 ENABLE_FULL_DEBUG_SYMBOLS=0
140 189 _JUNK_ := $(shell \
141 190 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
142 191 else
143 192 _JUNK_ := $(shell \
144 193 echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
145 194
146 195 # Library stripping policies for .debuginfo configs:
147 196 # all_strip - strips everything from the library
148 197 # min_strip - strips most stuff from the library; leaves minimum symbols
149 198 # no_strip - does not strip the library at all
150 199 #
151 200 # Oracle security policy requires "all_strip". A waiver was granted on
152 201 # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
153 202 #
154 203 # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
155 204 #
156 205 STRIP_POLICY ?= min_strip
157 206
158 207 _JUNK_ := $(shell \
159 208 echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
160 209
161 210 ZIP_DEBUGINFO_FILES ?= 1
162 211
163 212 _JUNK_ := $(shell \
164 213 echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
165 214 endif
166 215 endif # ENABLE_FULL_DEBUG_SYMBOLS=1
167 216 endif # BUILD_FLAVOR
168 217 endif # JDK_6_OR_EARLIER
169 218
170 219 JDK_INCLUDE_SUBDIR=solaris
171 220
172 221 # Library suffix
173 222 LIBRARY_SUFFIX=so
174 223
175 224 EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
176 225
177 226 # client and server subdirectories have symbolic links to ../libjsig.$(LIBRARY_SUFFIX)
178 227 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
179 228 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
180 229 ifeq ($(ZIP_DEBUGINFO_FILES),1)
181 230 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
182 231 else
183 232 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
184 233 endif
185 234 endif
186 235
187 236 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
188 237 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
189 238
190 239 ifeq ($(JVM_VARIANT_SERVER),true)
191 240 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
192 241 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
193 242 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
194 243 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
195 244 ifeq ($(ARCH_DATA_MODEL),32)
196 245 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
197 246 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
198 247 endif
199 248 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
200 249 ifeq ($(ZIP_DEBUGINFO_FILES),1)
201 250 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
202 251 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz
203 252 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.diz
204 253 ifeq ($(ARCH_DATA_MODEL),32)
205 254 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.diz
206 255 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.diz
207 256 endif
208 257 else
209 258 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
210 259 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.debuginfo
211 260 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.debuginfo
212 261 ifeq ($(ARCH_DATA_MODEL),32)
213 262 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.debuginfo
214 263 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.debuginfo
215 264 endif
216 265 endif
217 266 endif
218 267 endif
219 268 ifeq ($(JVM_VARIANT_CLIENT),true)
220 269 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
221 270 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
222 271 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
223 272 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
224 273 ifeq ($(ARCH_DATA_MODEL),32)
225 274 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
226 275 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
227 276 endif
228 277 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
229 278 ifeq ($(ZIP_DEBUGINFO_FILES),1)
230 279 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
231 280 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.diz
232 281 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.diz
233 282 ifeq ($(ARCH_DATA_MODEL),32)
234 283 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.diz
235 284 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.diz
236 285 endif
237 286 else
238 287 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
239 288 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.debuginfo
240 289 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.debuginfo
241 290 ifeq ($(ARCH_DATA_MODEL),32)
242 291 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.debuginfo
243 292 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.debuginfo
244 293 endif
245 294 endif
246 295 endif
247 296 endif
248 297
249 298 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX)
250 299 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
251 300 ifeq ($(ZIP_DEBUGINFO_FILES),1)
252 301 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
253 302 else
254 303 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
255 304 endif
256 305 endif
257 306 EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
↓ open down ↓ |
112 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX